Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
Changelog
358ad9d Add #line directives to generated C for source-level error reporting
34a8885 Add -fwrapv -fno-strict-aliasing to compiled output compiler flags
952e493 Add -i interactive REPL mode with readline support
1549ed8 Add .fth test files to improve test coverage
f7fb8e1 Add .gitignore entries for binaries and unlicensed draft standard
43704cd Add ?DUP-IF and ?DUP-0=-IF control flow extensions
43774f5 Add ABORT, ABORT", and QUIT for Forth 2012 CORE compliance
142d861 Add ALIGN, ALIGNED, 2!, 2@ for Forth 2012 CORE compliance
b0bce60 Add ATEXIT word to register exit handlers via C atexit()
5eb629c Add BASE, DECIMAL, and BASE-aware number parsing
e4d1aaf Add Breakout game example with SDL2 bindings
a2385a9 Add CODE words for FILE-STATUS, RENAME-FILE, FLUSH-FILE
445a44e Add CODE words for N>R and NR>
51814d2 Add Dhrystone v1.1 benchmark example with C vs ccforth vs Gforth comparison
4fc6b9a Add Double-Number word set: D+ D- DNEGATE DABS D2* D2/ D< M+ D0< D0= D= D>S DMAX DMIN 2CONSTANT 2VARIABLE 2LITERAL D. D.R M*/
a9e0709 Add Exception word set: CATCH and THROW (interpreter-only for now)
9e13018 Add FIND, >BODY, >NUMBER, ENVIRONMENT?, and input words
5931d30 Add File-Access word set: OPEN-FILE, CREATE-FILE, CLOSE-FILE, READ-FILE, WRITE-FILE, DELETE-FILE, FILE-POSITION, FILE-SIZE, REPOSITION-FILE, RESIZE-FILE, READ-LINE, WRITE-LINE, SOURCE-ID, R/O, W/O, R/W, BIN
acd2139 Add Floating-Point word set: F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND FSQRT F0< F0= F< FDUP FDROP FSWAP FOVER FROT F@ F! D>F F>D FDEPTH >FLOAT REPRESENT FLITERAL F. FLOAT+ FLOATS FALIGN FALIGNED FVARIABLE FCONSTANT
bb7f44c Add Forth 2012 test suite for compiled output and fix locals codegen
803b209 Add Game Boy DMG emulator example with CPU, ALU, PPU in pure Forth
cbbb8c0 Add GitHub Actions CI workflow
12b9b3e Add GitHub Release automation via GoReleaser
711d331 Add INCLUDE-FILE and INCLUDED for file inclusion (interpreter-only)
a2080a4 Add INTERPRETER word for conditional CODE definitions
cdb7a78 Add LIT+OP fusion in emitter for immediate arithmetic
ccda302 Add Locals word set: (LOCAL), {: :}, and TO for local variables
a461a34 Add Memory-Allocation word set: ALLOCATE, FREE, RESIZE
26c86f8 Add PLACE and VOCABULARY non-standard extensions
3edd5a7 Add Performance section to README
9199f66 Add Programming-Tools word set and CODE for inline C
9c52e5b Add README.md and remove implementation plan
f9240a9 Add S+ string concatenation
7057200 Add SLURP-FID and SLURP-FILE for reading entire files
5223d39 Add SYSTEM for executing shell commands
00e9f4b Add Search-Order word set: FORTH-WORDLIST, GET-ORDER, SET-ORDER, GET-CURRENT, SET-CURRENT, WORDLIST, SEARCH-WORDLIST, DEFINITIONS, FORTH
a2cc5f3 Add String word set: CMOVE, CMOVE>, /STRING, -TRAILING, BLANK, COMPARE, SEARCH, SLITERAL
5596150 Add TRY/IFERROR/RESTORE/ENDTRY exception extensions
5b52378 Add TestBenchmarkSuite for per-category benchmark measurement
c89f52d Add WORDS.md per-word reference organised by Forth 2012 word sets
d61bfce Add Whetstone benchmark example with C vs ccforth vs Gforth comparison
43649d0 Add [: / ;] quotations (anonymous closures)
5cf0d12 Add ]] / [[ postpone state brackets
b38ebc4 Add animated Towers of Hanoi terminal demo
c3336a3 Add benchmark comparison table (compiled vs interpreter vs Gforth)
3957b7e Add benchmark infrastructure for measuring codegen performance
7cddf6a Add command-line argument and environment variable words
1cb7b1d Add comparison+branch fusion in emitter
ad80f18 Add compilable ROLL, 2ROT, DU<, CS-ROLL
06347ca Add double-cell arithmetic: M* UM* UM/MOD SM/REM FM/MOD S>D */ */MOD
b63a81d Add end-to-end Forth test programs exercising all built-in words
c8db8b0 Add examples section to README and raytrace example README
abd5ce3 Add expected output .txt files for all benchmarks
8b33e47 Add interactive Mandelbrot viewer example with SDL2
6bc52f8 Add interpreter-mode end-to-end tests
c3f27b2 Add more peephole optimization patterns
352d222 Add peephole: eliminate SWAP before commutative operations
b7d45c0 Add pi spigot algorithm integration test
9cc1078 Add pictured numeric output: <# # #S #> HOLD SIGN U. and BASE-aware .
c04c987 Add primitiveC entries for 2>R, 2R>, 2R@
355e695 Add ray tracer example rendering 3 spheres on a checkerboard ground plane
305a458 Add right-click zoom out and scroll wheel zoom to mandelbrot viewer
d6ba876 Add static inline hint to all generated C functions
4259d7d Add struct words, CELL constant, EXECUTE for primitives in compiled code
80978da Add tail call optimization for RECURSE in compiled code
90148dd Add terminal-based animated Mandelbrot viewer
5d9d0b3 Add typed local variable specifiers (W: D: F: C: W^ D^ F^ C^)
8dcfc43 Add { ... } Gforth-compatible locals syntax
b60640c BYE fix, benchmark tuning, peephole patterns, compiler flags, Forth 2012 tests
60b5192 Buffer stdout in compiled output to reduce syscall overhead
7d4c4f1 Compile CATCH/THROW to C with setjmp/longjmp
6b7659d Convert benchmarks to Go benchmark framework
8fc72e5 Define 14 words in Forth instead of Go, fix peephole across branch targets
843df84 Document name mangling rules for words and locals in generated C
efd578d Embed C runtime into binary for self-contained compiler output
18ce7a0 Emit DO/LOOP as C local variables instead of rstack array
021dd96 Emit VALUE/FVALUE/2VALUE as C static globals in compiled code
5a07964 Fix -Cflags to split by whitespace so multiple flags work correctly
3c40f44 Fix -Wformat-truncation warning in rt_represent
58f7bfc Fix CODE word comment placement in mandelbrot sdl.fth
b071233 Fix EXIT locals cleanup, mid-body locals in loops, add EXCEPTION and #!
456d495 Fix Facility word set status: Complete, not Partial
3335168 Fix STATE to return a memory address per Forth 2012
8849b93 Fix examples: move uninitialized typed locals after | separator
2b83b9d Fix execution token (xt) system to use real values
86d470b Fix locals: maxLocals for unused locals, shadowing for duplicate names, add 0<= 0>=
6b66aa0 Fix macOS ARM RESIZE test failure and add Windows platform support
f7b5d29 Fix multiple { } locals blocks in a single word definition
dfad586 Fix sieve benchmark in interpreter: increase memory from 1MB to 4MB
7156c20 Fix tail-call optimization for RECURSE with locals
c7678cc Fix undefined behavior in PUSH/RPUSH/FPUSH macros
a551fe1 Implement Floating-Point extensions, Facility, and Extended-Character word sets
26dffef Implement UTIME word (Gforth compatible)
39f18c2 Make all benchmarks gforth-compatible, update benchmark table
f556612 Make execution tokens function pointers in compiled output
5517a40 Migrate rt_* functions from runtime.c to CODE words in core.fth
ba7aa0e Move 27 more interpreter primitives to Forth definitions in core.fth
3da2f04 Move end-to-end tests to testdata/end-to-end/ and forth2012-test-suite into testdata/
3dc24fc Move expected test output to .txt files alongside .fth sources
b858ef0 Move mem[] to BSS to reduce compiled binary size
a36a028 Move ~50 primitiveC entries to CODE words in core.fth
493f434 Omit Xt suffix from C function names for uniquely-named words
8525379 Port Whetstone double-precision benchmark to Forth
6327bcb Refactor interpreter to line-based parsing and pass Forth 2012 test suite
ae96447 Rename module from github.com/user/ccforth to github.com/ncw/ccforth
8036389 Replace HEX/FALSE/TRUE/ERASE/PAD/CS-PICK/UNUSED with Forth definitions
77ccf45 Replace TestBenchmarkComparison with BenchmarkGforth
cf59f2b Replace gb_term.h with Forth terminal logic and thin CODE wrappers
07f9ed4 Replace usleep with nanosleep in MS to fix implicit declaration warning
04b9e9a Rework VALUE/FVALUE/2VALUE to use memory-backed storage
13a48e0 Rewrite >NUMBER in pure Forth and detect untranslatable primitives
3e35dca Rewrite UNESCAPE in pure Forth
defbede Step 10: Implement pkg/compiler/peephole.go
a85ff3e Step 11: Create runtime/runtime.h and runtime/runtime.c
c94531e Step 12: Implement pkg/codegen
a448673 Step 13: Implement cmd/ccforth/main.go
9857478 Step 14: Add VARIABLE, CONSTANT, CREATE, ALLOT, DOES>
405b5ac Step 15: Write forth/core.fth and bootstrap loader
81a7895 Step 16: Add POSTPONE, COMPILE,, LITERAL, [']
ccc14de Step 17: End-to-end integration tests
fd79367 Step 18: Add string words
d82374e Step 19: Add EVALUATE support
3e2cca4 Step 1: Set up project scaffolding
d5253e2 Step 2: Implement pkg/scanner
317e96d Step 3: Implement pkg/memory
8293a6c Step 4: Implement pkg/dictionary
dbcd37e Step 5: Implement pkg/interpreter — core with primitives
e162da2 Step 6: Add : and ; to interpreter
12c90bd Step 7: Add control flow words to interpreter
77383b2 Step 8: Implement pkg/compiler/emitter.go
f6d4d9e Step 9: Implement control flow C emission
6a1ca07 Update Game Boy example to use built-in ARG instead of constructor hack
5aa7224 Update README to reflect Forth 2012 test suite and newly implemented words
d99782e Update WORDS.md for newly compilable words
44169ac Update benchmark table with fresh numbers after -march=native -flto
a1aa24b Update hanoi example to use UTIME instead of custom CLOCK-MS
b34adad Upgrade default C compiler optimization from -O2 to -O3
fe126f3 Use ATEXIT in Game Boy example to move exit handler from C to Forth
081a359 Use Forth local names in generated C instead of _local0, _local1
2c46a8b Use floored division for / MOD /MOD */MOD / M / (Gforth-compatible)
1818c7f Use real pointers everywhere + malloc-based ALLOCATE in compiled output
baf348c Use real values for transcendental function tests in float_math.fth
55233fe Use typed local specifiers in examples
345c77e Wire peephole optimizer into codegen pipeline
d3b77f7 ccforth is a hybrid FORTH interpreter/compiler written in Go.
You can’t perform that action at this time.