Clyne e175ab21b3 | 1 year ago | |
---|---|---|
forth | 1 year ago | |
libalee | 1 year ago | |
msp430 | 1 year ago | |
tests@45b7ecc1e3 | 1 year ago | |
.gitignore | 2 years ago | |
.gitmodules | 1 year ago | |
LICENSE | 2 years ago | |
Makefile | 1 year ago | |
README.md | 1 year ago | |
alee-standalone.cpp | 1 year ago | |
alee.cpp | 1 year ago | |
alee.hpp | 2 years ago | |
memdict.hpp | 2 years ago | |
splitmemdict.hpp | 2 years ago | |
splitmemdictrw.hpp | 1 year ago |
README.md
Alee Forth
Alee Forth is a concise Forth implementation written in modern C++ that aims for portability, minimal memory footprint, and execution efficiency.
Cross-platform compatibility
Alee Forth relies on the C++20 standard. It does not rely on any operating system. As a result, portability extends down to microcontroller targets with < 16kB flash and < 1 kB of RAM. See the msp430
folder for an example of such a port.
System-specific functionality is achieved through a sys
Forth word. This word calls a user-supplied C++ function that implements whatever functionality is needed.
Forth compatibility
Alee Forth uses the Forth 2012 test suite to ensure standards compliance. The entire "core" word-set is implemented as well as most of the "core extension" word-set. The compiled program contains a minimal set of fundamental words with libraries in the forth
directory supplying these larger word-sets. The "core" word-set can be compiled into the program by building the standalone
target.
Missing core extension words:
PARSE-NAME REFILL RESTORE-INPUT S\" SAVE-INPUT
Building
Alee requires make
and a compiler that supports C++20. Simply running make
will produce the libalee.a
library and a REPL binary named alee
. The core word-sets can be passed into alee
via the command line: ./alee forth/core.fth forth/core-ext.fth
.
Other available build targets:
small
: Optimize for minimal binary size.fast
: Optimize for maximum performance on the host system.standalone
: Builds the core dictionary (core.fth
) into the binary.msp430-prep
andmsp430
: Builds a binary for the MSP430G2553 microcontroller. See themsp430
folder for more information.
If building for a new platform, review these files: Makefile
, libalee/types.hpp
, and libalee/state.hpp
. It is possible to modify the implementation to use 32-bit words, but this will require re-writing the core word-sets.