about summary refs log tree commit diff
path: root/input.e
AgeCommit message (Collapse)Author
17 hoursall 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
40 hoursadd a file descriptor field to the input buffer metadata structIrene Knapp
and use it where appropriate Force-Push: yes Change-Id: I68c478460780a6ea6ac8d1cc437981e2899ef122
40 hourschange 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-05-28swap the parameters to "entry-flags!"Irene Knapp
Force-Push: yes Change-Id: I11f3eb1079d27a7306d6ed1e8e4b9fd6fb7d3a4a
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-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-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-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