about summary refs log tree commit diff
AgeCommit message (Collapse)Author
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
2026-09-14add the ability for magic comments to happen in immediate modeIrene Knapp
but, don't do them, though, they aren't ready yet. for reasons described in the code. they're harmless, they don't cause crashes or incorrect output, they just don't cause any output at all. Force-Push: yes Change-Id: I5e45adc60f4e01e7bc54d9da8aa4fa5f8b708ddb
2026-09-13work on making the label transform pretty-print word entry headersIrene Knapp
this involved instrumenting label-create-alternate and some other stuff it also involved adding provide-string and provide-string-copy magic-comment commands Force-Push: yes Change-Id: I52f87decc02bf6f2516ee009f27c783a2c5bd715
2026-09-12explanatory text at the start of the hex transformed label transform codeIrene Knapp
Force-Push: yes Change-Id: I695582905dea0c6e34981e803ef515c547eade40
2026-09-12swap the order of parameters to hexdump-betweenIrene Knapp
it was confusing from the start, and we had one too many issues with failing to remember it. finally taken care of :) Force-Push: yes Change-Id: I9782621f747e84d50d1794e3f1669cb5afb77038
2026-09-12fully verify the hex-transformed output of all Evocation-assembly wordsIrene Knapp
the verification included words that aren't used in Evocation itself. it also resulted in fixing several such words that were broken in ways that would have crashed. it was a very thorough verification. do honor to the effort that was put into it by always verifying that changes to amd64.e don't break it, from now on :) Force-Push: yes Change-Id: Ia1904f4b35f90772fd9dce79a0274627c547edbf
2026-09-12removed the #swap syntaxIrene Knapp
everything has been carefully diffed to ensure there's no regression in the verified parts of the output Force-Push: yes Change-Id: I32c887c7ca8c132a49899d9ef327c8ff9fb782fb
2026-09-12semantic change to make subitem stack manip more convenientIrene Knapp
this allows a much cleaner style than the #swap notation, which will likely be removed soon Force-Push: yes Change-Id: If9898334356eb7c036f28afd22d435e00a84f6e2
2026-09-11refactor the metadata postprocessing a little for readabilityIrene Knapp
there's about to be a semantic change, but that will happen in a separate CL Force-Push: yes Change-Id: Ib32d542c02a640a964fdeed7bc16248b669d6a91
2026-09-10began to check and correct the exact hex-transformed instruction outputIrene Knapp
the checking is only a little way down the file, but there's a new feature needed, so this is being checked in now to protect the work that's already been done Force-Push: yes Change-Id: If8c29d4b417288e5cfb2aa08ce6d41adadc64279
2026-09-10substantial additions to the READMEIrene Knapp
and also a prettier flame drawing Force-Push: yes Change-Id: I5896bfdee53c934b4c38861c8a9e9f5a966f7264
2026-09-10rename substring entries to subitem entriesIrene Knapp
also the -entry-string field is renamed to -entry-content, since it's an integer a lot of the time much clearer. hopefully. certainly more consistent. Force-Push: yes Change-Id: I82315a135422ef2fae5dd3d6e8ea025ccfa97cfd
2026-09-10add provide-hex, which varies its output width to fit the valueIrene Knapp
and amd64.e uses it for all the immediates, but not for other kinds of numeric parameter, which looks pretty slick and readable Force-Push: yes Change-Id: Ifb630a4dc172d7495b5458316266fe76b75e07af
2026-09-10add some magic comment commands to reorder subitems more generallyIrene Knapp
these are all fully working and debugged. they have been used in a principled attempt to get all the parameter orders in amd64.e correct, but that effort needs to be verified carefully, which it hasn't been, yet. a couple of missing magic comments in elf.e and execution.e were also added. Force-Push: yes Change-Id: Id4c48b121a71b4f945ee3718e14a06f07afd7304
2026-09-10status update in the README! an important one :)Irene Knapp
Force-Push: yes Change-Id: Ia929bd55a0cec2781a4166dad4c7797fd2cb1b9d
2026-09-10fix all leaks and incorrect parameter counts in amd64.eIrene Knapp
this required adding a new magic-comment command, drop-subitem, because there's a couple cases, in indexed addressing mode helpers, where a hardcoded register value is used as part of preparing an sib word, and that value shouldn't become a subitem for the assembly word that calls the helper. notably, a lot of the disp8 and indexed assembly words had incorrect parameter counts that needed adjusting parameter ORDERS still need a close read to make sure they're correct. also, as future work, substring entries should be renamed to subitem entries. Force-Push: yes Change-Id: I419243855751416377d0ea0c5062fa1ba9e62a8d
2026-09-09document how to do a full build of evoke.hexIrene Knapp
the contents of evoke.hex aren't usable quite yet, for reasons now described in the README, but the build itself runs to completion. this is honestly a huge milestone. Force-Push: yes!!!!! Change-Id: Ia95d6aba7485062c0e64cdde0575058a2df2a1ef