Skip to content

v1.0.0-alpha.7: Threading, Protocol & Test Reliability

Pre-release
Pre-release

Choose a tag to compare

@jsavin jsavin released this 17 Feb 07:45

What's New in v1.0.0-alpha.7

Zero Integration Test Failures

The full integration test suite now passes with 0 failures -- 1,881 tests across 50 test files, running in ~40 seconds with 8 parallel workers. Two weeks ago there were 755 failures.

Key fixes:

  • langerrordisable leak: A bug in the headless EFP fast-path made ALL verb errors uncatchable by try/else. Fixed by restoring enablelangerror() before early returns in langgethandlercode().
  • Per-worker database isolation: Parallel test workers now get their own copy of the database, eliminating flaky failures from concurrent write access.

NDJSON Protocol Mode

New --protocol flag for persistent subprocess communication via NDJSON (newline-delimited JSON) over stdin/stdout. This eliminates ~210ms startup cost per evaluation and is the foundation for future GUI communication.

echo '{"id":1,"op":"script/eval","params":{"expression":"1+1"}}' | \
  frontier-cli --protocol --skip-startup --system-root Frontier.root
# {"id":1,"result":{"value":"2","type":"long"},"success":true}

GIL-Based Threading

Real POSIX threads with a Global Interpreter Lock (GIL). The runtime uses real threads serialized by a single mutex, with cooperative yield points at langbackgroundtask() and thread.sleepTicks(). All thread verbs operational: evaluate, callscript, getCurrentID, getCount, exists, kill, sleep, wake, getNthID.

Per-Component Logging

Fine-grained log control via environment variable or CLI flag:

# Environment variable
FRONTIER_LOG=lang:debug,tcp:warn frontier-cli ...

# CLI flag
frontier-cli --log lang:debug,tcp:warn ...

REPL & UX Improvements

  • Ranger-style file browser for file.getFileDialog with arrow key navigation
  • Guest database navigation in REPL with prompt display
  • [n] index syntax and relative paths in /list and /jump
  • Real wp.getText() and wp.setText() for headless mode
  • filemenu.new implemented

Stability Fixes

  • Migration segfault fix for v6 guest databases
  • Startup segfault from context guard and tmp stack bugs
  • Stack overflow in portable file verbs dispatcher
  • Startup bootstrap fixes (random() params, log corruption)
  • Suppress verb error logging inside UserTalk try blocks
  • Script path now included in error log messages

Quality Metrics

Metric Value
Integration Tests 1,881 (0 failures, 189 skipped)
Unit Tests 6/6 passing
Test Execution 8 workers, ~40s
PRs Merged Since alpha.6 27
Commits Since alpha.6 38

Download

  • frontier-v1.0.0-alpha.7-macos.tar.gz -- macOS arm64 binary with Frontier.root database and guest databases

Full Changelog: v1.0.0-alpha.6...v1.0.0-alpha.7