This repository was archived by the owner on Feb 8, 2026. It is now read-only.
Releases: augmentati/joyfl
Releases · augmentati/joyfl
Release list
Fifth Release: Types, Safety & Testing
- Type definitions (ADT-lite) to allow specific type tuples {} and list as stack effects.
- New
structandunstructoperators to assemble and disassemble these objects. - Stack annotations in .Joy are not just documentation but --validate'd too.
- New test framework in libs/test.joy, written entirely in idiomatic joyfl.
- Implementation of Python extension modules:
cmdtxtandos - Operators must have new-style Python annotations, they are required to bind.
- Validation supports the checking of outputs of Python operators.
- Rework main to have procedurally-selected sub-commands ('repl', 'one-file', 'one-module', 'dev-mode')
- Formalize and document the ... operator, which allows user to type in code on-the-fly.
- Joy modules are now scoped by MODULE name, error thrown if mismatch with filename.
- The module PRIVATE sections can be linked locally not externally.
- Joy modules are correctly auto-loaded just like the Python ones, also checking JOY_PATH.
Fourth Release: Python API and Package
- Exposing a Python runtime and API, used with "import joyfl.api as J".
- New error types that are Joy specific so they can easily be caught.
- Rework the architecture to break up the single-file script into components.
- Support for "factory" terms that can inject Python object into quotations at comp-time.
- If operators contain a dot namespace, the code auto-imports from corresponding function in libs/_{ns}.py.
- Named-tuple for Stack object, for efficiency, easier print/debug, and better safety.
- Allow for JOY_PATH envvar to load extension modules and the standard library.
- Using uv for build testing, packaging and publishing.
- Improved error handling showing Joy source more consistently.
- Fix for win32 support when using the repl, previously broken.
- Support fraction types when you use the unicode ⁄ separator for numerator and denominator.
- Python-side operators use standard type annotations for ease-of-use, correctness.
Third Release: Usability Improvements
- Stack effects in function definitions, format : (a b -- c)
- Reading commands from stdin and via -c option.
- Dynamic type checking and stack effects (optional) with --validate.
- Display of execution statistics with --stats.
- Assert shows the exact location of the assert.
- Disabling of the ANSI color codes -p or --plain.
- Stack is printed in left-to-right order to match verbose mode.
- Documentation of the standard library.
- Interpreter step is reusable on its own, also can_execute.
- Additions of a few new operators: drop, remove, unary, str-*, etc.
- Dictionary support: words to create, fetch and store.
Second Release: Debug Information
- Better error messages when exceptions are known.
- Callstack display with Joy source code shown.
- Pretty printing in the put! function.
- One extra example about primes, showing iteration.
First Release: Minimum Viable Interpreter
v0.1 FIX: All built-in boolean operators now include '?' as suffix.