about summary refs log tree commit diff
AgeCommit message (Collapse)Author
9 daysspecial comment formatting for hex dumps of very long stringsIrene Knapp
this will help with the boot-source there's a lot of nuanced decisions that go into this; the comments explain in depth Change-Id: I391c937a04398115849f4308940d3b4df519c9ab Force-Push: yes
10 daysuse regular comment entries with the new string syntax for stringsIrene Knapp
Change-Id: I2a903031c08c1182c0c4811e7b137c2db08195fe Force-Push: yes
10 dayskeep a running size count of the metadata entry arrayIrene Knapp
and use it where appropriate this substantially reduces the runtime of the hex transform Change-Id: I910dd3bfaf669ff2c96646d52664824268025108 Force-Push: yes
10 daysoops, this file was moved to historical/ but the old copy was keptIrene Knapp
Force-Push: yes Change-Id: I541a6740ccb219d51c2e4f6bb3b02511329e6ea7
10 daysadd a historical file of notes about assemblyIrene Knapp
now it's no longer clutter ;) Force-Push: yes Change-Id: I2d2c950a0b2694c33ea4e658828f9d516678a082
10 daysadd a new hex comment template syntax for stringsIrene Knapp
now strings no longer have to be a hardcoded feature, though they still are. this was part of a larger exploration most of which turned out not to be the best immediate direction, so the parts that are worth keeping are being checked in now to allow exploring in a different direction. Force-Push: yes Change-Id: Iafe70bd5b3f5756e1d9f3c0b400d7644d3149054
2026-09-29add a constant string "boot-source" which is run at startupIrene Knapp
this will allow us to have compiled-in code that wouldn't run under the transforms, though we don't add anything of substance just yet this strategy was used early in bring-up, in the historical flatassembler version of Evocation, so the design space of it is already well-explored in Irenes' head. how pleasant. :) Force-Push: yes Change-Id: I722cddb77657df9ca518c0d9841aa587bf63feb3
2026-09-28move all the source files into subdirectoriesIrene Knapp
and rename one, linux-dynamic.e to language/dynamic/linux.e. also make sure all references in comments and documentation refer to the new locations and names. this directory structure reflects code organization which had existed in Irenes' head, but was likely not obvious to other readers. now hopefully it is more discoverable. Force-Push: yes Change-Id: Icfef3eae812a50fe20202191999e68e1f7db445a
2026-09-28implement various pack-* words for turning numbers into stringsIrene Knapp
these are closely analogous to . and its variants, but follow the "pack" idiom so that they can be used in construction strings, instead of writing to standard output. this was a longstanding TODO that is also needed in refactoring the high-level way compilation is initiated. Force-Push: yes Change-Id: Id315339da86a1f8aa4490a7475701a797a6cb56d
2026-09-24"include" works under the hex transform nowIrene Knapp
this means all the build invocations are now as simple as they can be without new abstractions of some sort, such as letting evoke take command-line parameters. yay! Force-Push: yes Change-Id: Id877159f995662b8d226a9ad937ed73228a9af05
2026-09-23properly report and handle EOF when handling inputIrene Knapp
this should be a robust fix for the double-termination issue when compiling Force-Push: yes Change-Id: Ieaacdc232ea7e3036916d81139fc5c5a41087c64
2026-09-23FreeBSD support via Linux compatibility modeIrene Knapp
this is done by setting the ABI version in the ELF header. many thanks to nortti for checking that things otherwise work, and validating that the approach makes sense in terms of FreeBSD's cultural expectations. Irenes don't have the ability to easily test this on our end, but this is an easy step that can improve compatibility. Force-Push: yes Change-Id: I3d55ed240c050839b8a11312f151d0809aef9031
2026-09-23new feature "include"Irene Knapp
this was the subject of a bunch of thought. in most languages, we'd argue against having a text-based "include" feature, because there should also be a module system, and textual include subverts the module system because you can't assume everyone will use it. however, Evocation already very strongly encourages thinking of a program as a sequence of operations (this is after all the definition of a catenative language), and in particular the transformation system already relies very heavily on programs-as-text. so, it seems appropriate for Forth in general and for Evocation in particular. plus it was easy to implement, because all the infrastructure for it already existed to support the transformation system Force-Push: yes Change-Id: I76f778e44b8189ac7052890c881654d971e43c8d
2026-09-23work around an issue caused by insufficient EOF handlingIrene Knapp
thanks to nortii for reporting this. a real fix will come soon, but meanwhile this workaround should help. Force-Push: yes Change-Id: I38a4c3f148f69ff7c67e8dc00fac5e1351cc3eab
2026-09-23typo fixesIrene Knapp
from Fred Crowson - many thanks! Force-Push: yes Change-Id: I369bd987b492ae01d8bed5b3ee9ee88073007c9c
2026-09-23remove the magic wordsIrene Knapp
now all the command-line invocations are pleasingly short :) Change-Id: Ibe2b9f3b85ab3a51a9d95e3511b273664e6a8807 Force-Push: yes
2026-09-23fix a minor bug in consume-fromIrene Knapp
this had been interfering with intended behavior when hitting EOF. the intent was that key returns 0, then word also returns 0, and finally interpret or the active transformation also notices it's supposed to exit. consume was leaving a stray value on the stack, which prevented all of that. with this, it should be possible to remove the magic-word end delimiters for the transformations. end of an era :) that'll happen in a followup CL. Force-Push: yes Change-Id: Ib87afcf9199cc982250c4e66761c5fb056164fb7
2026-09-23use file calls to read source during compilationIrene Knapp
as a result of this, the massive invocations to compile things are now shorter not all the way shorter, but significantly shorter :) because of where these changes are, this doesn't change the binary at all, so no new evoke.hex is needed (yay!) Force-Push: yes Change-Id: I35dfd065b2a4fc4bf1b80f402a07088efca43676
2026-09-23all the syscall parameters are in the kernel's order nowIrene Knapp
there was never a good reason for them not to be plus, the formerly bespoke ones use the generic helpers now; sys-open and sys-close are implemented; and a bug in push-input-buffer and pop-output-buffer is fixed unfortunately these were breaking changes, so there's another evoke.hex in this one Change-Id: Ifad58fc2fd757adcf89a69c59575565a10406ec2 Force-Push: yes
2026-09-22add a file descriptor field to the input buffer metadata structIrene Knapp
and use it where appropriate Force-Push: yes Change-Id: I68c478460780a6ea6ac8d1cc437981e2899ef122
2026-09-22change sys-write and sys-read to take file descriptorsIrene Knapp
and also sys-write didn't used to return a result this required a little massaging to make it build, the host evoke needed to not actually pass the file descriptor in evoke.e. for posterity: this was fixed by changing it everywhere else as a one-off, then changing it there and using the intermediate version to build the one being checked in now. this kind of weirdness is a thing we get the freedom to do because of the bootstrapped distribution model, though we still strongly prefer not to do it unless necessary. this breaking change would have had to happen at some point, so it's considered acceptable. the size of the diff to evoke.hex is larger than ideal. this raises the need to have a policy for when to regenerate it. since this is a breaking change, it's mandatory. it also seems important to commit a regenerated copy when a release is tagged. it will probably turn out to be a good idea to not regenerate it excessively, otherwise. it's possible that in the long run it might make sense to add name-mapping functionality to hex, just to make the diffs smaller. Force-Push: yes Change-Id: I2648b2577c5c21b126e46405e9888b5cb59aa0b7
2026-09-21typo fix, thanks mei&Irene Knapp
Force-Push: yes Change-Id: I287ce3331bb719b6a8920164f6550b472706b33b
2026-09-21release version 3.0 v3.0Irene Knapp
this is the first-ever release! wow :33333 have fun y'all!!!! Force-Push: yes Change-Id: Ifc95e4e63e4ee477b4c23d83a82f7a1e050f7925
2026-09-21mark a couple labels in hex.e as non-offsetIrene Knapp
and rebuild hex.hex with the latest features Force-Push: yes Change-Id: Ic96c1ff6b06d2ecfb08a5c6829206460c0cdcf95
2026-09-21print comments in the hex dump at the offsets labels point toIrene Knapp
Force-Push: yes Change-Id: I1a0ea06380095da3e7702cab278c08bd21b292ca
2026-09-20no more than sixteen bytes on a lineIrene Knapp
Force-Push: yes Change-Id: I7cd583d5a3ee72c316633ceb2efbb51a2fe46452
2026-09-20fresh line for alignment padding commentsIrene Knapp
this fixes the thing where, if alignment padding was zero-length, the comment could wind up on the same line as the preceding thingy, causing confusion Force-Push: yes Change-Id: Ie7490370bf66a2f9b82df584236320bd88338e39
2026-09-20make the magic-comment tab stops function like real tab stopsIrene Knapp
fun! fiddly! :D fixing one-off column alignment issues is like stimming for coders (which is to say, like stimming) Change-Id: I1037ec27b863f90117fb22a29ef52d0ba460c7d5 Force-Push: yes
2026-09-20add a special word for magic-comment tab stopsIrene Knapp
Force-Push: yes Change-Id: I7ba182f5939aa3b5d280fb48673e2cc74d72e8ea
2026-09-20magic comments work in the log-load transform nowIrene Knapp
that was pleasingly straightforward Force-Push: yes Change-Id: I92b66fbb37ed5df3ef3f733e8679747a9a232373
2026-09-19every byte in the hex output is now attributedIrene Knapp
wow!!!! Force-Push: yes Change-Id: I2b46837b5ff37b4339a9a4ba0ae52903854d5e99
2026-09-19indent curly-brace blocks in the log-load transform hex outputIrene Knapp
Force-Push: yes Change-Id: I18e04f06390e85d4cd2c113094a137986ca2e54a
2026-09-19some basic indentation for parts of the log-load transformIrene Knapp
Change-Id: Ibfd4fa69a3d2abdaba162538f6386f7173af4311 Force-Push: yes
2026-09-19codeword annotations and such for the log-load transformIrene Knapp
this is everything outside of log-load-transform-one itself compile time is up to nine minutes though, due to the new backwards-scan thing. keeping the entries sorted might be better... Change-Id: I96058f0c9c043f7b8b681018e1178505caddbc62 Force-Push: yes
2026-09-19magic comments for all the high-level flow control in the label transformIrene Knapp
Change-Id: I5430e14e81c5981f358fda43c2f35ed47cafc29b Force-Push: yes
2026-09-19add a bunch more data- and entry-manipulation magic-comment commandsIrene Knapp
now it's possible to make ;asm replace "docol codeword" with "self codeword", and it does Force-Push: yes Change-Id: I1a9b4cee8a3eee308cf421968d6a3cd92adba800
2026-09-18a new "data" concept in magic commentsIrene Knapp
this is meant to handle variable-length stuff. it is now used to handle the string in the word entry headers. Force-Push: yes Change-Id: I8f3ce7dd93351639fbce82503324f3efe5def568
2026-09-18magic comments for a bunch more small stuffIrene Knapp
especially in the label-transform output there's more to do, but there are additional magic-comment features that would be handy, so we're checking this in now so that those can be cleanly kept in their own CL Force-Push: yes Change-Id: I97a67caddc3f3150c349b7956c1d715db909d1a9
2026-09-18give the names of codeword pointers in label-transform outputIrene Knapp
under the hex transform, that is this also implements ndrop in quine, because it wasn't building evoke, and it checks in the updated hex.hex which reflects the more concise notation for integer constants. this brings all the builds into a clean state, for the moment. Force-Push: yes Change-Id: I243cf08c70b4a3af00ea5e0836c5596a32f1288b
2026-09-18better behavior in the crash handler when the dictionary is messed upIrene Knapp
a lot more defensive bounds checks Force-Push: yes Change-Id: Ib900471b8befe06dfa7994714b94ab4ebdc3f0fa
2026-09-17handle memory sliding in the hex transformIrene Knapp
wow!!!! that was big Force-Push: yes Change-Id: I504ae746d4424e46819357e6dad6d6eadec16b81
2026-09-16yeah okay, copying it wasn't necessaryIrene Knapp
Force-Push: yes Change-Id: I9772f90f497a19c04ff6f9e261a5d9f262f79be7
2026-09-16fix the overwritten strings in the outputIrene Knapp
this probably shouldn't have required copying them, but ah well, copying worked Force-Push: yes Change-Id: I239f2633c61867f6c42a5b76a0e978aff0875a9d
2026-09-15redo the hex dump comments for alignment to use the regular magic commandsIrene Knapp
previously, alignment had been a special-cased type of metadata entry, with a special trap on packalign. now it uses the same programmable setup everything else does. much simpler, and prettier output. this CL also contains some modest reformatting of section headers in the hex dump Force-Push: yes Change-Id: I21554e92f6af6ddefa937dad8073b89657f85d64
2026-09-15added section headers and other formatting to all the parts of the hex dumpIrene Knapp
Force-Push: yes Change-Id: Ie66d85fd171dfb45d1f3b6869bf94056ec8303af
2026-09-15do magic comments from the label transform when inside the hex transformIrene Knapp
the meaning of them in that setting is a bit different, which deserves to be documented eventually Change-Id: Ia7725bc776420c0ad62091a2e5100700868a6bfa Force-Push: yes
2026-09-15oops, didn't mean to comment that outIrene Knapp
Force-Push: yes Change-Id: I8fbf3d531b18904f2a01e6b05ff2822d6a015013
2026-09-15refactor hex-tilde-alternate to split out lexingIrene Knapp
note that lexing of the body of a magic comment was already separate, part of hex-tilde-replacement. however, hex-tilde-alternate had been responsible for lexing the sequence that introduces a magic comment. because we want to make separate versions of the alternate for each inner transform, the lexing needed to be factored out. this does result in more copying, but it doesn't appear to noticeably affect runtime. Force-Push: yes Change-Id: I51a780d1dadb99f09bddb9eaccb1af387bd0ce87
2026-09-14avoid repeated scanning of the metadata entries during formattingIrene Knapp
there was a test that had never been working, meaning the entire entry array was being scanned for every byte of output. even had that test worked, it would still have scanned on average half the array for every byte, so that'd be where the absurd runtimes were coming from. anyway, it works now. this gets a full hex transform invocation down from over thirteen minutes to under thirty seconds. learn your data structures and algorithms, kids. Force-Push: yes Change-Id: If075b256f77649fae9d2e56cb7404458ca39d189
2026-09-14place a trap inside the hex-transformed nlabel-transform-oneIrene Knapp
this will be used to cause it to apply a tilde alternate, but the lexing code for that needs to be refactored first also, this has an implementation of nexit, a new flow-control word for a scary style of metaprogramming Force-Push: yes Change-Id: Ic7fe2d50a8ee21cf9fa5fef1fef4408c2935bb4c