2.2 KiB
Janet4DOS
This is a port of Janet programming language to x86 DOS systems. Currently ported version is 1.41.2.
See the "Releases" section for ready-made DOS binaries. Building your own binary from source is always recommended.
Functionality missing from the original
- Multithreading
- Networking
- FFI and dynamic module loading
- Some mathematical functions (
math/erf,math/erfc,math/gamma,math/log-gamma,math/nextafter) - Secure RNG source (
os/cryptorand) - Full terminal editing features (you can compile with them, but the REPL will crash upon any long string output)
Building
- Install the DJGPP cross-compiler suite.
- Edit the
CCvariable in theMakefilepointing to yourgccbinary from DJGPP. - Run
make. - Copy the contents of
bindirectory (janet.exeandCWSDPMI.EXE) to your DOS system.
FAQ
Why?
Janet already is an extremely portable language that can run "as is" on a lot of systems and architectures, but DOS still was on the list of missing targets. Meanwhile, retro x86 hardware could benefit from running a modern, practical Lisp system, even if it would be fully offline and single-threaded.
Why amalgamated source code?
Because it was easier to write my own Makefile for.
Can the same source code be used for building Janet for other platforms?
Yes, but you will have to re-enable "standard" features in janet.h by commenting out corresponding #define directives, and also update the Makefile accordingly.
Was genAI used for porting?
As the codebase is quite long, genAI was used for identifying some problematic bits within it and some intermediate experimentation, but all final patches were fully hand-written.
Will you submit your patches as a PR to the upstream Janet repo?
Maybe.
Can this build be used on a bootable DOS floppy?
Yes, both binaries (janet.exe and CWSDPMI.EXE) combined are under 900K in size. This leaves plenty of room for essential DOS system files and your custom source code in Janet.
As a proof of concept, a bootable FreeDOS floppy image with Janet 1.41.2 is planned to be released, no ETA for that though.
Credits
Original copyright by Calvin Rose et al.
Ported by Luxferre.