about summary refs log tree commit diff
AgeCommit message (Collapse)Author
8 daystrack the filename of an input bufferIrene Knapp
this also includes some slightly better facilities for handling temporary strings Change-Id: Idf5e6fd8ade675d7ceb73264d10895fe8da578d6 Force-Push: yes
8 daysThe "evoke" executable now accepts command-line parameters.Irene Knapp
They can be regular words, and integer literals. In the near future perhaps source files will also be acceptable, but there's other work to do first. Force-Push Change-Id: Ib97db00126139aefdcdc725f9ccf6b045ceb3d2d
9 daysreduce long-string-comment-wrap-thresholdIrene Knapp
it looks better this way, subjectively Force-Push: yes Change-Id: Iab60ad726cd8711326a19839bd6f8141238f23a7
9 daysuse the new x' everywhere it's applicableIrene Knapp
you may infer from the size of the CL that we've been wanting this for QUITE A WHILE Force-Push: yes Change-Id: Iaa6ff8f40bd4020a75b81aadd87874cc8d512123
9 daysimplement x'Irene Knapp
this word is like ' and is shorthand to look up an execution token Force-Push: yes Change-Id: I672eb0c56f8eadc02a8aca14c2b5c6028a218b1b
9 daysmove around a bunch of the files that aren't actually in useIrene Knapp
to better describe their status Force-Push: yes Change-Id: If5ef70b7872700ff36ef07f20aac1f3b991dff45
9 daysrefactor the compilation harnessIrene Knapp
it's more declarative now. however, at the moment it only produces the one type of executable, so it's only for building "evoke", not "hex". hopefully that can be fixed soon. Change-Id: Id970b9952fcd73ba6da4fa503ae2f784afe1b8a7 Force-Push: yes
9 daysbug fix for "include"Irene Knapp
be cautious committing this, it's not fully clear it's correct, but if it is it needed to be disentangled from the declarative compilation thing Force-Push: yes Change-Id: I2d0d41c24709391bd64766a9b08ec961c0f482e3
9 daysoops, missing line from the boot-source header textIrene Knapp
Force-Push: yes Change-Id: I1418c077e16cd9d7d1e1ac99ff85e5e78b38768d
9 daysfix comment position in the boot-source dictionary entry headerIrene Knapp
Force-Push: yes Change-Id: I94592083435e024d9a87122f4d5529cdb98f8e06
9 daysadd everything in compilation/ to the boot-sourceIrene Knapp
this means it's now always available it does make evoke.hex significantly larger! Force-Push: yes Change-Id: I4017b2a666fd456b851dc1b77d1ee7ef5360b35b
9 daysadd an intro to the new directory structure to the READMEIrene Knapp
there's also additional wording attempting to explain that, yes, the way to learn the language really is to read the language's source. it really is documentation. from discussions elsewhere, some people found this obvious and some people didn't notice it and thought there was no documentation, so we've done our best to explain the choice. Force-Push: yes Change-Id: Ie9e4b81cd48e7ae014032d1983120edf3d823234
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