Skip to content

Releases: jordanhubbard/nanolang

v3.3.6

03 Apr 06:34

Choose a tag to compare

NanoLang v3.3.6

Statistics

  • Commits since v3.3.5: 4
  • Test Status: All tests passed

Changes

  • docs: Update CHANGELOG for v3.3.6 release
  • fix: sdl_forth_ide native binary path + nl_forth_interpreter TTY REPL
  • bd init: initialize beads issue tracking
  • feat: source-mapped stack trace tests + multi-frame coverage

Links

v3.3.5

02 Apr 23:35

Choose a tag to compare

NanoLang v3.3.5

Statistics

  • Commits since v3.3.4: 17
  • Test Status: 🎉 All tests passed!

Changes

  • feat: forth REPL + release sync fix
  • docs: Update CHANGELOG for v3.3.4 release
  • refactor: make release script non-interactive by default
  • chore: allow list_workflows in Claude Code MCP tool permissions
  • fix: effects tests — mut variable and missing shadow stubs
  • feat: add FIG-Forth interpreter example (token-threaded, ~2500 lines)
  • feat: generic function monomorphization (type-variable T in fn signatures)
  • feat: --doc-md flag — GFM Markdown doc export from triple-slash comments
  • ci: multi-backend matrix — compile tests across all 5 backends in parallel
  • feat(playground): CodeMirror 6 editor, share permalink, AgentFS hosting
  • feat: nanolang interactive playground (browser editor + eval server, port 8792)
  • feat(vscode): complete installable .vsix — semantic tokens, format-on-save, tasks, packaging
  • feat: VS Code extension for nanolang (LSP, syntax highlighting, format-on-save)
  • feat(repl): hot-reload — :load, :save, :reload commands
  • feat: REPL hot-reload (:reload ) — live module reloading without restart

Links


Full Changelog: v3.3.4...v3.3.5

v3.3.4

02 Apr 21:31

Choose a tag to compare

  • docs: Update CHANGELOG for v3.3.4 release
  • refactor: make release script non-interactive by default
  • chore: allow list_workflows in Claude Code MCP tool permissions
  • fix: effects tests — mut variable and missing shadow stubs
  • feat: add FIG-Forth interpreter example (token-threaded, ~2500 lines)
  • feat: generic function monomorphization (type-variable T in fn signatures)
  • test: add DWARF debug info tests (feat/dwarf-debug-info)
  • test: add stdlib benchmark test suite
  • feat: or-patterns in match, stdlib docs site, match completeness tests
  • feat: DWARF debug info emission (--debug/-g flag for LLVM IR and RISC-V backends)
  • fix: remove duplicate AST_EFFECT_OP cases and guard unfinished SIMD block
  • fix: resolve CI compile errors from overnight branch merges
  • feat: nanolang benchmark suite — optimizer comparison + regression tracking
  • fix: remove stale validate-topology dependency from bench job
  • feat: REPL persistent history and session save/load
  • chore: mark async/coroutine/pretty_printer tests as expected-failure until branches merge
  • fix: merge-branches.sh use git branch -r for existence check
  • chore: add merge-branches.sh campaign script
  • fix: resolve main build failures — missing sources, riscv bug, tidy/format collision
  • feat: WASM SIMD128 auto-vectorization — emit v128 opcodes for numeric patterns
  • feat: WASM SIMD128 auto-vectorization for numeric array loops
  • feat: property-based test oracle (@Property, --proptest, QuickCheck-style shrinking)
  • feat: property-based test oracle (@Property, --proptest, QuickCheck-style shrinking)
  • feat: REPL scripting — nano --script and nano -e '' modes
  • feat: RISC-V assembly backend (riscv_backend.c)
  • feat: nano-docs static site generator — make docs builds HTML from userguide/**/*.md
  • feat: nano-bench micro-benchmark harness (--bench mode)
  • feat: nano-docs — documentation search CLI for nanolang
  • feat: typechecker generics — per-call type variable unification with consistency checking
  • feat: nano-fmt — canonical code formatter with LSP textDocument/formatting support
  • ci: nano-fmt style check + async channels (channel.h/c, stdlib/async.nano)
  • feat: agentOS typed shared-memory ringbuffer library (ringbuf.h)
  • feat: nano-to-C transpiler backend (--target c)
  • feat: nano-to-C transpiler — nanoc --target c emits clean C99 for seL4 PD embedding
  • feat: nano-to-C transpiler backend (c_backend.c)
  • feat: standard library — Option, Result, List, Map, Set, Iterator, String
  • feat: LLVM IR backend — nanoc --llvm emits .ll for ARM64/x86-64 native code
  • feat: LSP semantic tokens (textDocument/semanticTokens/full)
  • feat: LSP hover types show row-polymorphic records and type-scheme generalization
  • feat(lsp): hover displays row-polymorphic HM types
  • feat(pkg-registry): nano package registry — HTTP server, nanoc pkg CLI, semver resolution, lockfile
  • feat: nano package registry + nanoc install/publish subcommands
  • feat: generational GC — tri-color mark-sweep cycle collection (Bacon-Rajan)
  • [nanolang] mdoc doc generator: --doc flag, /// comment extraction, HTML emitter with TOC
  • feat: PGO (profile-guided inlining) pass — nanoc --pgo .nano.prof
  • fix: wire algebraic effects syntax — comma parsing, handle forms, perform keyword
  • feat(tooling): nanodoc — mdoc-style HTML doc generator for .nano modules
  • ci: trigger CI re-run with libssl-dev + -lcrypto fixes
  • fix: wire full coroutine scheduler for PR #47 rebase
  • feat(coroutine): cooperative scheduler runtime for async/await
  • Revert "fix: cross-platform random seed in sign.c for macOS/FreeBSD"
  • fix: transpile AST_ASYNC_FN and AST_AWAIT nodes
  • feat: async/await syntax — CPS transform pass, cooperative async functions
  • feat: WASM reference-counting GC (refcount_gc.h) + transpiler integration
  • fix(ci): add libssl-dev to all apt jobs + -lcrypto to sanitizer/coverage LDFLAGS
  • fix: resolve CI test failures — missing test sources + f-string float formatting
  • fix: resolve merge conflicts and restore real pass implementations
  • fix: row-poly spread syntax, typechecker usage tracking, test_optimizer stub
  • chore: remove site/ from tracking and add to .gitignore
  • fix: cross-platform random seed in sign.c for macOS/FreeBSD
  • fix: remove invalid sprint2 test; add macOS OpenSSL paths for sign.c
  • fix(ci): add -lcrypto to sanitizer and coverage LDFLAGS for OpenSSL sign.c
  • [security] nanoc sign/verify: Ed25519 WASM module signing with agentos.signature custom section
  • [nanolang] par-let: concurrent evaluation semantics for independent let bindings
  • fix(runtime): float_to_string preserves decimal point for whole-number floats
  • [nanolang] compile-time constant folding + dead code elimination optimizer passes
  • [nanolang] algebraic effect system: interpreter dispatch, C transpiler stubs, tests
  • feat: algebraic effect system — effect declarations, handlers, effect polymorphism
  • [nanolang] Hindley-Milner Algorithm W type inference for let-polymorphism
  • fix: restore missing source files and fix build for algebraic effects integration
  • fix(docs): add fn main stubs to ug_fstring_basic and ug_fstring_exprs snippets
  • fix(docs): move nl-snippet markers outside �[?2004h�)0�[1;24r�[m�(B�[4l�[?7h�[?25l�[H�[J�[22;35H�[0;7m�(B[ New File ]�[m�(B�[?25h�[24;1H
    �[?2004lnano fences instead of before them. The userguide_snippets_check scanner does not track fence state, so it found these markers inside fenced blocks and then hit the bare nano and lines so the marker precedes the fence, as required by the checker.
  • fix: add AST_ASYNC_FN/AST_AWAIT cases to type_infer.c
  • feat: coroutine runtime — cooperative scheduler for async/await continuations
  • fix: cross-platform random seed in sign.c for macOS/FreeBSD
  • fix: transpile AST_ASYNC_FN and AST_AWAIT nodes
  • fix: add TOKEN_ASYNC/AWAIT and PNODE_ASYNC_FN to schema so they survive schema regeneration
  • feat: async/await syntax — CPS transform pass, cooperative async functions
  • fix: tco_pass.c — suppress unused-function warning on make_return helper
  • fix: add stub sources and macOS OpenSSL path so main builds
  • fix: build on Linux/GCC — strncpy/strncat warnings and NULL guards
  • [nanolang] row-polymorphic record types — {field:T|r} syntax, row var unification, open record patterns, test_row_poly.nano passing
  • feat(nanolang): row-polymorphic records — fix build compatibility with main branch
  • feat: PTX backend — nanoc --target ptx emits NVIDIA PTX assembly for gpu fn kernels
  • feat: PTX backend — nanoc --target ptx emits NVIDIA PTX assembly for gpu fn kernels (#50)
  • feat: PTX backend — nanoc --target ptx emits NVIDIA PTX assembly for gpu fn kernels
  • feat: WASM runtime profiler — --profile-runtime emits flamegraph collapsed-stack .nano.prof
  • feat: WASM runtime profiler — --profile-runtime emits flamegraph collapsed-stack .nano.prof (#51)
  • feat(nanolang): row-polymorphic records — row var unification, spread, open patterns
  • feat: f-string string interpolation — comprehensive tests and userguide docs (#49)
  • feat: coverage tracking — --coverage flag, 80% CI threshold, coverage-check target (#48)
  • feat: add format/string interpolation builtin to stdlib (closes wq-API-1774937552439)
  • docs: row-polymorphic record types design — structural subtyping for agent data schemas
  • feat: coroutine runtime — cooperative scheduler for async/await continuations
  • fix: add checks:write permission and continue-on-error for test reporter
  • fix: rename 'handle' in pybridge test; add main to stdlib strings test
  • fix: rename 'handle' identifier to avoid collision with new keyword
  • ci: add workflow_dispatch for manual CI trigger
  • ci: add workflow_dispatch for manual CI trigger
  • ci: trigger CI re-run
  • ci: trigger CI re-run
  • Revert "fix: cross-platform random seed in sign.c for macOS/FreeBSD"
  • fix: cross-platform random seed in sign.c for macOS/FreeBSD
  • fix: transpile AST_ASYNC_FN and AST_AWAIT nodes
  • fix: regenerate compiler schema — add TOKEN_BAR (shifts EFFECT/HANDLE/WITH/RESUME by 1)
  • fix: remove test_str_split from main() accumulator — returns array_length (3), not pass/fail count
  • fix: rename local str_index_of_from to avoid conflict with new builtin (#46)
  • fix: unblock CI after stdlib expansion (#43)
  • fix: forward-declare g_typecheck_error_count before first use in typechecker.c
  • fix: add TOKEN_ASYNC/AWAIT and PNODE_ASYNC_FN to schema so they survive schema regeneration
  • fix: remove string-returning functions from main() accumulator in test_stdlib_strings
  • fix: add missing comma after AST_PAR_BLOCK in ASTNodeType enum
  • test: dedupe test_stdlib_strings entry point
  • fix: resolve CI breakages blocking PR merges (#31)
  • feat: async/await syntax — CPS transform pass, cooperative async functions
  • fix: tco_pass.c — suppress unused-function warning on make_return helper
  • feat: algebraic effect system — effect declarations, handle expressions, type checking
  • feat: add package manager (nanoc-pkg) with lockfile support
  • feat(test): structured output formatter — JUnit XML and TAP for CI
  • feat(playground): NanoLang interpreter compiled to WASM via Emscripten
  • [nanolang] WASM source maps: .wasm.map JSON + sourceMappingURL custom section
  • feat(wasm): WASM source maps — .wasm.map JSON + sourceMappingURL custom section
  • [ci] AgentFS WASM publish workflow — auto-deploy language examples to AgentFS on main push
  • fix: remove local str_trim/str_starts_with from vars_repl.nano
  • docs: fix else-branch requirement claim in testing/coverage userguide
  • fix(examples): fix examples-full build failures on all platforms
  • fix(examples): remove redundant str_trim from simple_repl.nano
  • fix(portability): add _POSIX_C_SOURCE=200809L for module compilation on Linux/FreeBSD
  • fix(runtime): add non-Apple sequential fallback in nano_dispatch.h
  • docs: fix bare print syntax in SPECIFICATION loops and performance userguide
  • docs: clarify if/else requirement in QUICK_REFERENCE and SPECIFICATION
  • docs(roadmap): mark completed features, fix stale phase 6 s...
Read more

v3.3.3

28 Mar 22:57

Choose a tag to compare

What's Changed

Added

  • Complete user guide: all 27 previously-empty Part 3 module pages now have full documentation — API references, code examples, and best practices for text processing (regex, log, StringBuilder), data formats (JSON, SQLite), web/networking (curl, http_server, libuv), graphics (SDL, SDL_image, SDL_mixer, SDL_ttf), OpenGL (GLFW, GLEW, GLUT), game development (event, vector2d, bullet, simple game tutorial), terminal UI (ncurses), testing (proptest, coverage, best practices), and configuration (preferences)
  • API references filled: StringBuilder, coverage, and vector2d API reference pages now document all public functions (previously showed "No public functions")

Fixed

  • Reconcile with v3.3.2 stdlib refactor: stringbuilder.md rewritten for new sb_* API; regex.md import paths updated; generate_all_api_docs.sh module paths corrected
  • userguide_build_html: replace HashMap (module pub fn unreachable from regular functions) with inline get_theme_color() lookup
  • Pre-existing StringBuilder_to_string shadow test bug: was discarding the return value of append under immutable semantics

v3.3.2

28 Mar 20:08

Choose a tag to compare

NanoLang v3.3.2

Statistics

  • Commits since v3.3.1: 16
  • Test Status: 🎉 All tests passed!

Changes

  • refactor: remove redundant stdlib/std, std/json, and unused stdlib files
  • refactor: retire stdlib/regex.nano in favour of std/regex/regex.nano
  • fix: mark public APIs as pub fn so API reference generator picks them up
  • fix: resolve three CI failures introduced by modernize-tests commit
  • docs: fill in 27 placeholder user guide pages and 3 empty API references
  • fix: restore explicit type annotations for array_pop calls in test_dynamic_arrays.nano
  • refactor: modernize all test files to current nanolang syntax
  • fix: resolve stage3 bootstrap blockers
  • fix: make libdispatch-dev install optional in Concurrency CI job
  • fix: add out_path null guard in ffi_loader_find_library
  • fix: use memcpy instead of snprintf in nl_walkdir_rec to avoid format-truncation
  • fix: suppress GCC format-truncation false positive in eval_io.c
  • fix: typechecker null-guard and regex test private API usage
  • fix: update .nano files to use public fs.nano API
  • fix: correct CI failures — typechecker exit code and module.c truncation
  • fix: resolve module paths correctly when cwd is not repo root

Links


Full Changelog: v3.3.1...v3.3.2

v3.3.1

27 Mar 20:44

Choose a tag to compare

NanoLang v3.3.1

Statistics

  • Commits since v3.3.0: 11
  • Test Status: 🎉 All tests passed!

Changes

  • fix: array_remove_at return type void→array in builtins registry
  • feat: @pure/@Associative annotations, frozen let, par blocks — C compiler + .nano sources
  • fix: resolve -Werror build failures (fread/system/fgets unused return, strncpy truncation)
  • perf: auto-vectorization — restrict pointers, aligned alloc, pure lambda fast path in map/fold
  • docs: passive parallelism design — 8 language extensions for automatic concurrency
  • docs: auto-vectorization analysis — SIMD opportunities in eval.c, transpiler, and DynArray
  • feat: f-string interpolation with automatic type conversion
  • feat: Option A dispatch wrapping for module-scope let mut primitives
  • fix: resolve all CI failures
  • fix: add explicit Makefile rule for nl_forth_interpreter_vm
  • docs: prune 37 obsolete planning/artifact docs

Links


Full Changelog: v3.3.0...v3.3.1

v3.3.0

22 Mar 16:46

Choose a tag to compare

NanoLang v3.3.0

Statistics

  • Commits since v3.2.0: 7
  • Test Status: 🎉 All tests passed!

Changes

  • fix: make test use nanoc_c; remove debugging artifact test
  • feat: complete roadmap features 1-11 with self-hosting pipeline
  • fix: pre-populate module-level float arrays with 0.0 to set ELEM_FLOAT type
  • feat: dispatch module + parallel physics in sdl_boids and sdl_falling_sand
  • fix: resolve peg2 crashes, union match bindings, and example build failures
  • feat: add automatic zero-boilerplate concurrency via libdispatch
  • feat: add intrinsic PEG grammar support (std/peg2)

Links


Full Changelog: v3.2.0...v3.3.0

v3.1.12

07 Mar 23:45

Choose a tag to compare

NanoLang v3.1.12

Statistics

  • Commits since v3.1.11: 9
  • Test Status: 🎉 All tests passed!

Changes

  • fix: harden module dependency auto-install across platforms
  • fix: replace static buffers in fs.c path functions; fix gc_mark for ELEM_STRUCT arrays
  • Initial plan
  • fix: make examples now builds SDL/NCurses/network examples correctly
  • chore: update beads gitignore for merge artifacts
  • chore: configure beads dolt server mode
  • fix: correct array broadcast misidentification of float literals as identifiers
  • Update claude settings

Links


Full Changelog: v3.1.11...v3.1.12

v3.1.11

05 Mar 08:07

Choose a tag to compare

NanoLang v3.1.11

Statistics

  • Commits since v3.1.10: 6
  • Test Status: 🎉 All tests passed!

Changes

  • fix: resolve make examples hang and black-on-black docs styling
  • fix: work around two stage1 transpiler bugs in examples and launcher
  • fix: restore original PNG icons for example launcher
  • feat: add module metadata support to stage1 compiler
  • fix: resolve 3 pre-existing stage1 transpiler failures
  • fix: eliminate 152+ -Wparentheses-equality warnings in self-hosted transpiler

Links


Full Changelog: v3.1.10...v3.1.11

v3.1.10

02 Mar 07:48

Choose a tag to compare

NanoLang v3.1.10

Statistics

  • Commits since v3.1.9: 1
  • Test Status: 🎉 All tests passed!

Changes

  • fix: resolve make examples build failures

Links


Full Changelog: v3.1.9...v3.1.10