| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
hoist 'Heap' variable into the std library in anticipation of the parse-array-of-ints
primitive.
|
|
|
|
|
|
|
|
|
|
| |
Current state:
✓ hex.subx (no changes required)
survey.subx
✓ pack.subx (fixed here)
assort.subx
✓ dquotes.subx (has failing tests for other reasons)
|
|
|
|
| |
Test for the bugfix of commit 2f49a27504.
|
|
|
|
|
|
|
| |
Clean up some old TODOs related to our pre-mmap limitations.
Also caught another case of using the wrong comparison. When comparing
addresses, one must always use unsigned rather than signed jump instructions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Still some failing tests:
- emit-string-literal-data doesn't ignore metadata when computing the
length of literal strings
- emit-string-literal-data doesn't handle escape sequences
One issue doesn't have a failing test:
- emit-metadata doesn't handle string literals containing '/'
All these open issues involve a common design question: how to parse a
'word' that includes a string literal that may include spaces.
For everything else I know words can't contain spaces and datums can't
contain slashes. But for string literals things are tougher.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
How did things seem to be working until now?
- We were saving an address from the stack to stream.read
- When we read this address in skip-chars-matching:loop, we used to stop early
But now we've moved the stack to a larger address, one where the most significant
byte is set. When the stack address now gets to skip-chars-matching:loop,
it's treated as a negative number and we proceed through the loop. At which
point we try to index into the array using it.
No real test to be written to protect against this :(
|
|\
| |
| |
| |
| | |
dquotes.subx is now segfaulting after this merge. Seems to be trying to
use addresses from the old stack.
|
| |\
| | |
| | |
| | | |
apps/dquotes still segfaulting on native run.
|
| | | |
|
| | |
| | |
| | |
| | | |
Emitting the metadata for literal strings.
|
|\ \ \
| | |/
| |/|
| | | |
Segfault in this branch is now fixed.
|
| | |
| | |
| | |
| | |
| | | |
All tests passing now. Things are very explicit; before a program can `allocate`
memory, it has to first obtain a segment from the OS using `new-segment`.
|
| | |
| | |
| | |
| | | |
Convert raw literal strings (no escape sequences) to the data segment.
|
| | |
| | |
| | |
| | |
| | | |
Operations on buffered-file now always include the word 'buffered'. More
verbose, but hopefully this highlights holes in the library.
|
| |/
|/|
| |
| | |
Converting literal strings into bytes in the data segment.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'm switching to a more exposed working dynamic after chatting with Charles
Saternos (https://github.com/akkartik/mu/pull/19). From now on I'll start
a new branch for big features. Branches won't always pass all their tests.
Phases have gone weeks in the past before being committed all at once.
Developing in a branch gives others the opportunity to see more current
progress and jump in more easily.
Some 'kata' branches for new contributors to start at:
* add two numbers: https://github.com/akkartik/mu/pull/21
* write a string to a byte stram: https://github.com/akkartik/mu/pull/22
* print a number in decimal to a byte stream: https://github.com/akkartik/mu/pull/20
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Pull in a _different_ function than `next-word` (commit 5092) into a shared
file between phases. Let's see how this goes.
|
|
|
|
| |
Don't forget metadata for string literals.
|
| |
|
|
Current plan:
$ cat files.subx ... |dquotes |assort |pack |survey |hex > a.out
|