]> code.bitgloo.com Git - clyne/foci.git/summary
 
descriptionCross-platform register-level Forth implementation
ownerClyne Sullivan
last changeWed, 29 Jan 2025 02:22:07 +0000 (21:22 -0500)

foci

foci is a small Forth implementation that prioritizes performance and portability. This threaded Forth implementation uses CPU registers and native execution to maximize efficiency.

Register usage is the only platform-specific requirement; otherwise, foci is written in 100% portable C. There is active support for x86_64, ARM Cortex-M, and MSP430 architectures.

foci compiles to a binary object that can easily be linked into another application. Code size is less than 5 kB, while RAM usage is in the hundreds of bytes (primarily influenced by the configured stack and dictionary sizes).

Available words

Many words from core ANS Forth are supported. See compat.txt for a list.

Some features are not expected to be implemented: * Pictured numeric output, e.g. <# # #> * Double-width arithmetic

Build instructions

Run make with a supported architecture target:

shortlog
2025-01-29 Clyne Sullivanadd many more words main
2025-01-28 Clyne Sullivanadd bye to x86
2025-01-28 Clyne Sullivanadd do loop, immediate; branchless fexit
2025-01-28 Clyne Sullivanconfigure stack and dict sizes
2025-01-28 Clyne Sullivanreturn stack words
2025-01-28 Clyne Sullivanmore loop words
2025-01-28 Clyne Sullivanupdate readme
2025-01-27 Clyne Sullivanmsp430 improvements; fix compname bug
2025-01-27 Clyne Sullivanreorganize arch's
2025-01-27 Clyne Sullivanmore const; add msp430 PoC
2025-01-27 Clyne Sullivan-rot, over, tuck
2025-01-27 Clyne Sullivanemit
2025-01-27 Clyne Sullivaninterpret entirely in foci
2025-01-26 Clyne Sullivanconsting; arch choice; . hex [']
2025-01-25 Clyne Sullivanlocal num parsing; base
2025-01-25 Clyne Sullivantick and execute
...
heads
6 months ago main