summary refs log tree commit diff
AgeCommit message (Collapse)Author
5 daysthe encodings in reg32 were missingIrene Knapp
this worked by coincidence since it's only ever called in one place, to encode :eax, whose encoding happens to be 0. oops. thanks to @atax1a@infosec.exchange for spotting this Force-Push: yes Change-Id: I4cddbcd370a5d0c7db2f8733431bfda388022a22
6 daysfilled out a premortem for Evocation :3Irene Knapp
Force-Push: yes Change-Id: If9584709d96ca98ed6e03d5987549df9eb357c33
14 daysmake the crash handler also print the word crashIrene Knapp
Force-Push: yes Change-Id: Ib47e3c68e08d286f01dddecfbd565f881b94f01f
14 dayscomment fixesIrene Knapp
Force-Push: yes Change-Id: I5c0e7abaebb9388f7900dbae8bde1b1cd528ac32
14 daysdocs fixed for attach-string-to-input-bufferIrene Knapp
(also see the one in input.e) Force-Push: yes Change-Id: I80910cfdb5e3de6f8b1db69a9c630a21b2f92f4a
14 daysyeah the litpack* variants won't be needed againIrene Knapp
they were not a very effective optimization in light of the log-load stuff Force-Push: yes Change-Id: Ie0b51dddfda2b44c986a078580cc15be88193755
14 daysmake a decision on where to keep find-in and document itIrene Knapp
Force-Push: yes Change-Id: I5e8d8ae4a6e07c2dfa38abc7b19a962932a210bf
14 daysswap the parameters to "entry-flags!"Irene Knapp
Force-Push: yes Change-Id: I11f3eb1079d27a7306d6ed1e8e4b9fd6fb7d3a4a
14 daysdocument "near" calls (sort of)Irene Knapp
Force-Push: yes Change-Id: Ice00213f2e4b79f9aa44e6ccc5a70d951f7f762d
14 daysmove next-newer-entry-in and oldest-entry-in into dynamic.eIrene Knapp
it's starting to get concerning how all this stuff needs to go in quine.asm but hopefully the hex transform will fix it Force-Push: yes Change-Id: I840e77c96fa0555bc01b9604d09f5ac4903d48bf
14 daysmoved pack-raw-string into core.eIrene Knapp
Force-Push: yes Change-Id: I0940c0c21580e810716a5f61b95fd520c464ab9e
14 daysrename transform-state to transformation-stateIrene Knapp
this makes it unambiguously a noun phrase Force-Push: yes Change-Id: Ibc24821d70aaf6bc88ae5bf5e864e5b4db94dae5
14 daysyay we already had high-level flow control thereIrene Knapp
so the TODOs are unneeded Force-Push: yes Change-Id: I13d1316d22b52238076d6f17d05062671e4724e4
14 daysbetter documentation of parameter order for arithmetic instructionsIrene Knapp
Force-Push: yes Change-Id: I02af0267657cf21fcf4e4d79457645da42f6798d
14 dayschange the parameter order for memcopy and memmoveIrene Knapp
that was surprisingly involved, but it feels like the right thing to do Change-Id: Ia2f38c7278f4237cebd0435d27131fe32dbc3718 Force-Push: yes
2026-05-28add the ability to bind signal handlersIrene Knapp
and a useful example one ;) this also involved fixing the failure cases in input.e to handle EINTR correctly. it required a lot of tracing, but now the expected state of the stack is much better commented for next time. many thanks to @cks@mastodon.social who found code in the Go compiler which had the details of what's required in regard to the restorer, which made the whole thing work, and to @snowfox@tech.lgbt who did some experimental testing around the exact requirements. both those contributions are reflected in the documentation added with this CL. additional thanks to everyone who chimed in on the fedi thread, your comments kept us going! Force-Push: yes Change-Id: I97fd89426bf807df5565e011d3665f7e904fa138
2026-05-27deal properly with EINTR from sys-readIrene Knapp
this will be necessary to resume after running a signal handler. it had a bug where any error code other than ENOENT would be treated as a number of bytes read, resulting in a negative value for the buffer's logical length. amazingly this didn't crash, but it wasn't great. anyway now that's all fixed Force-Push: yes Change-Id: I1c2b45d8efd531c121c5695cdf0cc74609c80547
2026-05-25fixed the vim comment highlighting thingIrene Knapp
it needed to be a zero-width assertion, performance notwithstanding Force-Push: yes Change-Id: I033e3671401041406c247dcffa6b244c40544fd7
2026-05-24added a READMEIrene Knapp
at least it's a start :) Force-Push: yes Change-Id: I221a916c8d6ae5ac45c1d884232b31da89584ddc
2026-05-24added a program, hex.e, which will be the bootstrap strategyIrene Knapp
also added some instructions it needed Force-Push: yes Change-Id: Ia35280e2696167eb0662a5c3a9dc47840438da56
2026-05-23added a couple new instructionsIrene Knapp
this turns out to be fairly involved. hex bootstrap can't come fast enough ;) Force-Push: yes Change-Id: Ide5d2207d745ad07c40d3c9f457cd6b491bfbcf0
2026-05-23keyword wasn't workingIrene Knapp
and the transformation alternates were masking that. oops. Force-Push: yes Change-Id: I52a273b83cc00acdf70a20f01aeffc7feee85c76
2026-05-22fix our first binary reproducibility issue (wow)Irene Knapp
with this fix, the first-generation and second-generation builds are precisely identical it was an unused codeword in the bootstrapped docol, under the label transform, which inadvertently had a value from the host address space. the fix required some creativity. Force-Push: yes Change-Id: I05b373b4231fa093454fa31891784de16d81bb18
2026-05-22de-branch'd all the internalsIrene Knapp
so it's all just high-level flow control now, which makes it load in itself the output isn't identical on the first self-compilation, but it converges on the second with this, it is officially self-hosting. WOW. Force-Push: yes Change-Id: Ic14de1dae209b200cada269b07c3826c86fa494f
2026-05-22small changes towards self-hostingIrene Knapp
Force-Push: yes Change-Id: I6cf15b4e37b66a04afd5af9dfd9cc3d5eb52b894
2026-05-22okay s" ." and ' do their things nowIrene Knapp
Force-Push: yes Change-Id: I556334ea34157992d2b21306c941ad432cf41b4c
2026-05-22yesssss the interpreter fully works, wowIrene Knapp
haven't checked if it can compile itself yet :) Force-Push: yes Change-Id: I144981a04f09ecd0e9150369663ae8115bd39bdd
2026-05-22it runs!!!!!! it interactively reads input and everythingIrene Knapp
only some of that actually works, but hey, it's a start Force-Push: yes Change-Id: Ib82beb695be1a18de8aaaf3040b7c632851c6002
2026-05-21the interpreter fully compiles nowIrene Knapp
doesn't work quite yet. close :) Force-Push: yes Change-Id: I71b6e788790fe2ca8e07dae95e9ad6e39d0664c0
2026-05-21whew, okay, lots of interpret stuff implemented nowIrene Knapp
not fully tried though Force-Push: yes Change-Id: I19b39f2b982fde66863c710b6d458c3bd12bdf4a
2026-05-21okay, input buffers should work now (untested though)Irene Knapp
the word "variable" also needed special treatment, in the same way that "keyword" did. it's not immediately clear why. Force-Push: yes Change-Id: I15fae39b1b9ec928281150c76260940717b8e27a
2026-05-21dynamic.e is split up again, and more progressIrene Knapp
see dynamic.e, input.e, interpret.e, and flow-control.e there were a couple things in the log-load transform that need to work in compile mode, too Force-Push: yes Change-Id: I7caac3b9205f36f7e082a3fd280561d67e27942c
2026-05-21started cleaning up all the log-loaded functionalityIrene Knapp
it's in dynamic.e for now Force-Push: yes Change-Id: I4d0c5917eccd58cb881850faee0728d786010c27
2026-05-21Add high-level flow control to the log-load transformIrene Knapp
that was a lot Change-Id: I6ae9c371fe1fe6fd2757d20df73a748339fa89d1 Force-Push: yes
2026-05-21some comment stuff, and implement "keyword"Irene Knapp
Force-Push: yes Change-Id: Iecf4079b9629f9c041b7fe994b1a69b6ef7b6dd0
2026-05-21okay, s" and ." work all-the-way in the log-load transform nowIrene Knapp
wow those were hard ones. it's very squirelly what happens when. hopefully these new and reorganized docs will make it easier to understand next time... Force-Push: yes Change-Id: I8f3b86900ca1794afc3e607c2180dd05ea168cc7
2026-05-21thanks Verità! great catch :)Irene Knapp
Force-Push: yes Change-Id: I3308856db0fd1fc1b066f4e6d9925b4fc8830a4e
2026-05-20okay, keywords work under the log-load transform nowIrene Knapp
Force-Push: yes Change-Id: I1fc56015d3f2510157982a4387874f99a77cdc5f
2026-05-20tidied away core-plus.eIrene Knapp
it's merged into core now. that just made the most sense... a couple of its combinators are too useful to not use once you know about them Force-Push: yes Change-Id: I3857f353a8603960bebbf34f24572e3d5815f0de
2026-05-20the entirety of core.e now log-loadsIrene Knapp
wow!!!!!! wow making this work required implementing comma and keyword in the log-load transform Force-Push: yes Change-Id: If888d89c23389720840b49b72478e4826a15a269
2026-05-20so yeah, docol, exit, and lit all work in log-load nowIrene Knapp
also s" and ." work in the label transform, and are used to produce an important error message during the log-load routine, since we can't know whether log-loaded words exist until runtime sweet, right? Change-Id: I6a67139538c2cbcef40a1093202b2b4e0ad6febb Force-Push: yes
2026-05-20colon, semicolon, and compiled integers all work with log-load nowIrene Knapp
yay next up is to figure out why calling newly-defined docol-based words with it does not work Force-Push: yes Change-Id: I9c5f50d20f43ad8a15b6db58e046f1e0bb158266
2026-05-20create works now, and docol outputs successfullyIrene Knapp
having some trouble with colon Force-Push: yes Change-Id: I5fc0f4519bdd8de1033e24730f63296d8076782e
2026-05-20add a really powerful stack depth tracking feature for transforms to useIrene Knapp
also said feature seems to work, which is flatly astonishing just a little more now... Force-Push: yes Change-Id: I1bda7e99e524ac73a761859e86e01251e7d17525
2026-05-19rename all the label alternates to their longform versionsIrene Knapp
it's more readable Force-Push: yes Change-Id: I4be37c18da174eb1e9016bb1199a2ff2cf93f334
2026-05-19log-load-variable and label-keyword-alternate work nowIrene Knapp
yay :) Force-Push: yes Change-Id: Iae2e308ed8d786a9586bdc2583a6a9300282abae
2026-05-19yessssssssIrene Knapp
so okay, now all the machine code stuff is implemented and it builds without crashing the generated executable still crashes though, but this was enough work that it's getting a celebratory check-in Force-Push: yes Change-Id: I201e6912253647da58ef3537c735b478b0dca9fb
2026-05-18okay there's a strat for making the here/latest variables nowIrene Knapp
it doesn't work yet, but it's gonna the reason it doesn't work is that the new helper log-load-variable relies on the assembly-definition words being statically available, and they aren't yet that's fine though, this is still a huge change, worth checking in. why? well, it represents like 16 hours of debugging which culminated in some very minor changes to the semantics of the label transform, in order to make missing words easier to notice and debug. see comments for details. woooooo :D Force-Push: yes Change-Id: Id8334819d165ba9e3156ef2bf32008af748eac29
2026-05-17more progress on the log-load transformIrene Knapp
it generates most of the calls to create and comma, now Force-Push: yes Change-Id: Ib7620dca7a5bc5dd787e940ad18cf48c2a1bd529
2026-05-17implement log-load-create; add all the pack/unpack stuff to core.eIrene Knapp
Force-Push: yes Change-Id: I04dd65a9eec71f9b50c8875bdcbe5d4be59888d5