Timely as ever, I have released an MS-DOS shareware game in 2025: https://mhomer.itch.io/cromavor
A turn-based quick territorial acquisition game, it runs under DOSBox and it should also be playable in-browser at https://mwh.nz/dos/cromavor
| Website | https://michael.homer.nz/ |
| GitHub | https://github.com/mwh |
Timely as ever, I have released an MS-DOS shareware game in 2025: https://mhomer.itch.io/cromavor
A turn-based quick territorial acquisition game, it runs under DOSBox and it should also be playable in-browser at https://mwh.nz/dos/cromavor
Self-hosted software language systems need to bootstrap core components such as data structure libraries, parsers, type checkers, or even compilers. Bytecode interpreters can load byte code files, while image-based systems can load in images of entire systems — Emacs, for example, does both. Bootstrapping is more of a problem, however, for traditional AST-based systems, especially when they must be portable across multiple host systems and languages. In this short paper, we demonstrate how abstract syntax trees can quickly and easily be incorporated into the source code of an embedded interpreter. Our key insight is that a carefully engineered format enables textually identical ASTs to be valid across a wide spectrum of contemporary programming languages. This means languages can be self-hosted with very little bootstrapping infrastructure: only the host interpreter or compiler and a minimal default library, while the rest of the system is imported as ASTs. This paper outlines our technique, and analyses the engineering design tradeoffs required to make it work in practice. We validate our design by describing our experience supporting the on-going development of GraceKit, which shares a single Grace parser across host language implementations from Java and JavaScript to Haskell and Swift and to Grace itself, and even more eccentric languages like Excel.
Not sure how to go about it? Questions about how to present what you’ve done, whether it’s in scope, or how to tie in with existing work? We are hosting drop-in LIVE office hours this week
- Thursday, June 19, 2025, 0100 – 0300 UTC
- Thursday, June 19, 2025, 1800 – 2000 UTC
Details at https://liveprog.org/#resources
Not sure how to go about it? Questions about how to present what you’ve done, whether it’s in scope, or how to tie in with existing work? We are hosting drop-in LIVE office hours this week
- Thursday, June 19, 2025, 0100 – 0300 UTC
- Thursday, June 19, 2025, 1800 – 2000 UTC
Details at https://liveprog.org/#resources