Jul 21, 2019
Status update on self-hosting my new Assembly syntax
Test harness done. The self-hosted translator now handles all 12 example programs. A beach-head for reproducible builds.
Time to start translating the standard library. In emulated mode things get slow fast:
$ time ./translate 049*.subx 05[0-n]*.subx
35 lines in 9s
84 lines in 20s
219 lines in 59s
262 lines in 68s
382 lines in ... ERROR
In native mode, translating 262 lines takes 0.1s.
https://github.com/akkartik/mu/blob/90538f232a/subx/Readme.md
permalink
* *
Jul 19, 2019
Status update on self-hosting my new Assembly syntax
Another day, another bug fixed, another example program working.
But now I've hit a missing feature: code-generating the special run-tests
function, which just calls all functions starting with 'test-'. Pretty much all remaining programs are now bottlenecked on this.
Next few tasks:
-
run-tests
- '\n' in string literals
- it's dog slow. Probably the linear search. But no profiling yet.
https://github.com/akkartik/mu/blob/3af52436dfa/subx/Readme.md#roadmap-and-status
permalink
* *
Jul 17, 2019
Status update on self-hosting my new Assembly syntax
2 bugfixes later, 10/12 example programs building correctly.
There's one known hole in my implementation: it doesn't support '\n' in string literals. Now may be the time to plug this gap.
https://github.com/akkartik/mu/blob/5030d67c85/subx/Readme.md
permalink
* *
Jul 17, 2019
Status update on self-hosting my new Assembly syntax
First example program successfully translated!
4 programs now translating:
✓ ex1
✓ ex2
ex3
✓ ex4
ex5
ex6
✓ ex7
ex8
ex9
...
Sample run:
$ cat examples/ex1.subx |dquotes |assort |pack |survey |hex > a.elf
https://github.com/akkartik/mu/blob/294a15206329/subx/Readme.md
permalink
* *
Jul 14, 2019
Status update on self-hosting my new Assembly syntax
All phases are done and passing tests separately. However I haven't yet managed to actually put the final phase together with the rest to build any actual programs.
Here's what I have so far in the final phase: http://akkartik.github.io/mu/html/subx/apps/survey.subx.html
I've also started working on the next step: a simple list of steps for building a minimal Linux kernel to go with SubX. It's the final dependency.
See more
permalink
* *
Jun 13, 2019
Status update on self-hosting my new Assembly syntax
All tests for the fifth and final phase are written, and detailed pseudocode has been sketched out (in classic waterfall fashion). That seems like 90% done. Is this when they say the remaining 90% kicks in? :)
Back on Mar 31 I estimated it would take 3-4 months. That makes the 'deadline' end-June or mid-July. Is this project somehow going to get delivered on schedule, in spite of missing all intermediate deadlines until now?!
Someone's been helping me. Is it possible adding more manpower to the project will help it get delivered on time?!
permalink
* *
May 20, 2019
My new Assembly syntax is now 4/5ths bootstrapped in itself. Just one phase left:
https://github.com/akkartik/mu/pull/34
The previous phase took 7 weeks, but what's a factor of 7 between friends 😄
Some LoC stats (total, and excluding comments/tests):
- hex: 1511/144
- pack: 7348/1054
- assort: 1318/284
- dquotes: 2694/497
Similarly, some executable sizes:
- hex: 22KB/3KB
- pack: 37KB/8KB
- assort: 22KB/5KB
- dquotes: 27KB/6KB
https://github.com/akkartik/mu/blob/6f28e4b66/subx/Readme.md
permalink
* *
Apr 26, 2019
I just had
an interesting chat with a contributor to SubX, my bootstrapped Assembly syntax. In response:
a) SubX now has sandbox branches where people can reimplement existing features.
b) I'll be publishing in-progress work. In the past wanting to keep HEAD passing tests has caused changes to accumulate for weeks at a time. Now they'll start getting feature branches like https://github.com/akkartik/mu/pull/23
Each PR at https://github.com/akkartik/mu/pulls now has context and instructions.
permalink
* *
Mar 31, 2019
My new Assembly syntax is making progress towards being self-hosted. It can now create ELF binaries with data, opcodes and immediate/displacement operands. What's left:
a) Packing mod/reg/rm operands, and scale/index/base operands into single bytes. (ETA: 2 days)
b) Handling string literals. (ETA: 1 week)
c) Support for labels. (ETA: ???. 3 months, if past history is any guide.)
Then: Goodbye C! Goodbye dependencies I don't understand! Hello, true collaboration.
https://github.com/akkartik/mu/blob/d0d0fdb37/subx/Readme.md
permalink
* *
Mar 16, 2019
I just wrote up something about the way I tend to program: http://akkartik.name/post/four-repos.
A sort of software-centered usesthis.com.
permalink
* *