| Age | Commit message (Collapse) | Author |
|
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
|
|
this word is like ' and is shorthand to look up an execution token
Force-Push: yes
Change-Id: I672eb0c56f8eadc02a8aca14c2b5c6028a218b1b
|
|
to better describe their status
Force-Push: yes
Change-Id: If5ef70b7872700ff36ef07f20aac1f3b991dff45
|
|
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
|
|
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
|
|
Force-Push: yes
Change-Id: I1418c077e16cd9d7d1e1ac99ff85e5e78b38768d
|
|
Force-Push: yes
Change-Id: I94592083435e024d9a87122f4d5529cdb98f8e06
|
|
this means it's now always available
it does make evoke.hex significantly larger!
Force-Push: yes
Change-Id: I4017b2a666fd456b851dc1b77d1ee7ef5360b35b
|
|
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
|
|
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
|
|
Change-Id: I2a903031c08c1182c0c4811e7b137c2db08195fe
Force-Push: yes
|
|
and use it where appropriate
this substantially reduces the runtime of the hex transform
Change-Id: I910dd3bfaf669ff2c96646d52664824268025108
Force-Push: yes
|
|
Force-Push: yes
Change-Id: I541a6740ccb219d51c2e4f6bb3b02511329e6ea7
|
|
now it's no longer clutter ;)
Force-Push: yes
Change-Id: I2d2c950a0b2694c33ea4e658828f9d516678a082
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
this should be a robust fix for the double-termination issue when compiling
Force-Push: yes
Change-Id: Ieaacdc232ea7e3036916d81139fc5c5a41087c64
|
|
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
|
|
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
|
|
thanks to nortii for reporting this. a real fix will come soon, but meanwhile this workaround should help.
Force-Push: yes
Change-Id: I38a4c3f148f69ff7c67e8dc00fac5e1351cc3eab
|
|
from Fred Crowson - many thanks!
Force-Push: yes
Change-Id: I369bd987b492ae01d8bed5b3ee9ee88073007c9c
|
|
now all the command-line invocations are pleasingly short :)
Change-Id: Ibe2b9f3b85ab3a51a9d95e3511b273664e6a8807
Force-Push: yes
|
|
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
|
|
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
|
|
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
|
|
and use it where appropriate
Force-Push: yes
Change-Id: I68c478460780a6ea6ac8d1cc437981e2899ef122
|
|
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
|
|
Force-Push: yes
Change-Id: I287ce3331bb719b6a8920164f6550b472706b33b
|
|
this is the first-ever release! wow :33333
have fun y'all!!!!
Force-Push: yes
Change-Id: Ifc95e4e63e4ee477b4c23d83a82f7a1e050f7925
|
|
and rebuild hex.hex with the latest features
Force-Push: yes
Change-Id: Ic96c1ff6b06d2ecfb08a5c6829206460c0cdcf95
|
|
Force-Push: yes
Change-Id: I1a0ea06380095da3e7702cab278c08bd21b292ca
|
|
Force-Push: yes
Change-Id: I7cd583d5a3ee72c316633ceb2efbb51a2fe46452
|
|
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
|
|
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
|
|
Force-Push: yes
Change-Id: I7ba182f5939aa3b5d280fb48673e2cc74d72e8ea
|
|
that was pleasingly straightforward
Force-Push: yes
Change-Id: I92b66fbb37ed5df3ef3f733e8679747a9a232373
|
|
wow!!!!
Force-Push: yes
Change-Id: I2b46837b5ff37b4339a9a4ba0ae52903854d5e99
|
|
Force-Push: yes
Change-Id: I18e04f06390e85d4cd2c113094a137986ca2e54a
|
|
Change-Id: Ibfd4fa69a3d2abdaba162538f6386f7173af4311
Force-Push: yes
|
|
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
|
|
Change-Id: I5430e14e81c5981f358fda43c2f35ed47cafc29b
Force-Push: yes
|
|
now it's possible to make ;asm replace "docol codeword" with "self codeword", and it does
Force-Push: yes
Change-Id: I1a9b4cee8a3eee308cf421968d6a3cd92adba800
|
|
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
|
|
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
|
|
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
|
|
a lot more defensive bounds checks
Force-Push: yes
Change-Id: Ib900471b8befe06dfa7994714b94ab4ebdc3f0fa
|
|
wow!!!! that was big
Force-Push: yes
Change-Id: I504ae746d4424e46819357e6dad6d6eadec16b81
|