| Age | Commit message (Collapse) | Author |
|
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
|
|
Force-Push: yes
Change-Id: I9772f90f497a19c04ff6f9e261a5d9f262f79be7
|
|
this probably shouldn't have required copying them, but ah well, copying worked
Force-Push: yes
Change-Id: I239f2633c61867f6c42a5b76a0e978aff0875a9d
|
|
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
|
|
Force-Push: yes
Change-Id: Ie66d85fd171dfb45d1f3b6869bf94056ec8303af
|
|
the meaning of them in that setting is a bit different, which deserves to be documented eventually
Change-Id: Ia7725bc776420c0ad62091a2e5100700868a6bfa
Force-Push: yes
|
|
Force-Push: yes
Change-Id: I8fbf3d531b18904f2a01e6b05ff2822d6a015013
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Force-Push: yes
Change-Id: I695582905dea0c6e34981e803ef515c547eade40
|
|
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
|
|
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
|
|
everything has been carefully diffed to ensure there's no regression in the verified parts of the output
Force-Push: yes
Change-Id: I32c887c7ca8c132a49899d9ef327c8ff9fb782fb
|
|
this allows a much cleaner style than the #swap notation, which will likely be removed soon
Force-Push: yes
Change-Id: If9898334356eb7c036f28afd22d435e00a84f6e2
|
|
there's about to be a semantic change, but that will happen in a separate CL
Force-Push: yes
Change-Id: Ib32d542c02a640a964fdeed7bc16248b669d6a91
|
|
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
|
|
and also a prettier flame drawing
Force-Push: yes
Change-Id: I5896bfdee53c934b4c38861c8a9e9f5a966f7264
|