48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# Janet4DOS
|
|
|
|
This is a port of [Janet](https://janet-lang.org) programming language to x86 DOS systems. Currently ported version is 1.41.2
|
|
|
|
## 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
|
|
|
|
1. Install the DJGPP cross-compiler suite.
|
|
2. Edit the `CC` variable in the `Makefile` pointing to your `gcc` binary from DJGPP.
|
|
3. Run `make`.
|
|
4. Copy the contents of `bin` directory (`janet.exe` and `CWSDPMI.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.
|
|
|
|
## Credits
|
|
|
|
Original copyright by Calvin Rose et al.
|
|
|
|
Ported by Luxferre.
|