|Clyne 9ac70bfc0e||2 weeks ago|
|forth||2 weeks ago|
|libalee||2 weeks ago|
|msp430||2 weeks ago|
|tests@45b7ecc1e3||1 month ago|
|.gitignore||3 weeks ago|
|.gitmodules||1 month ago|
|Doxyfile||3 weeks ago|
|LICENSE||10 months ago|
|Makefile||2 weeks ago|
|README.md||1 month ago|
|alee-standalone.cpp||2 weeks ago|
|alee.cpp||2 weeks ago|
|memdict.hpp||2 weeks ago|
|splitmemdict.hpp||2 weeks ago|
|splitmemdictrw.hpp||2 weeks ago|
Alee Forth is a concise Forth implementation written in modern C++ that aims for portability, minimal memory footprint, and execution efficiency.
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.
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
Missing core extension words:
PARSE-NAME REFILL RESTORE-INPUT S\" SAVE-INPUT
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: Builds a binary for the MSP430G2553 microcontroller. See the
msp430folder for more information.
If building for a new platform, review these files:
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.