Skip to content
This repository was archived by the owner on Feb 8, 2026. It is now read-only.

Releases: augmentati/joyfl

Fifth Release: Types, Safety & Testing

Choose a tag to compare

@alexjc alexjc released this 21 Nov 14:59
  • Type definitions (ADT-lite) to allow specific type tuples {} and list as stack effects.
  • New struct and unstruct operators 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: cmd txt and os
  • 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

Choose a tag to compare

@alexjc alexjc released this 25 Oct 12:18
  • 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

Choose a tag to compare

@alexjc alexjc released this 07 Oct 17:11
  • 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

Choose a tag to compare

@alexjc alexjc released this 08 Sep 14:40
  • 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

Choose a tag to compare

@alexjc alexjc released this 02 Sep 10:54
v0.1

FIX: All built-in boolean operators now include '?' as suffix.