Skip to content

Releases: jsavin/Frontier

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

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

v1.0.0-alpha.6: Threading, Guest DB Navigation, and Index Syntax

Choose a tag to compare

@jsavin jsavin released this 12 Feb 02:50

Frontier CLI v1.0.0-alpha.6

What's New

Cooperative Threading (#404, #410)

Frontier's fire-and-forget thread model is now available in headless mode:

  • GIL-based cooperative threading with real POSIX threads — threads run one at a time, yielding at langbackgroundtask() and thread.sleepTicks()
  • Full thread verb suite: thread.evaluate(), thread.callscript(), thread.getCurrentID(), thread.getCount(), thread.exists(), thread.kill(), thread.sleep(), thread.wake(), thread.getNthID()
  • Error containment: scriptError() in a spawned thread stops that thread without propagating to the caller
  • Thread ID allocation: Main thread gets ID 2 (idapplicationthread), spawned threads start at 3+
  • C globals (fllangerror, flreturn, flbreak, etc.) are properly saved/restored on each thread switch

Guest Database Navigation (#411)

Browse guest databases interactively in the REPL, just like system tables:

  • /jump mainResponder → navigates into a guest DB table: [mainResponder.root::mainResponder]>
  • /jump mainResponder.root → navigates to the guest DB root: [mainResponder.root::]>
  • Relative paths work inside guest databases: /list adminSite, /jump adminSite
  • .. navigation goes up within the guest DB; from the DB root level, exits back to system root
  • /jump, /jump root, /jump @root all return to system root from anywhere
  • Runtime handle validation — if a guest DB is closed while you're navigated into it, the REPL detects the stale handle and resets to root instead of crashing

REPL Index Syntax (#409)

Navigate the object database by position:

  • [n] index syntax for /list and /jump (1-based): /jump system[1], /list [3]
  • Relative paths from focused tables: /list verbs when focused on system
  • Index syntax works inside guest databases too

Guest Databases Included in Release

This is the first release to ship with all guest databases:

Database Path Description
Frontier.root (system root) System root database
mainResponder.root Guest Databases/apps/ Main web application framework
manila.root Guest Databases/apps/ Manila content management system
radioCommunityServer.root Guest Databases/apps/Tools/ Radio Community Server
serverMonitor.root Guest Databases/apps/Tools/ Server monitoring tool
TheXmlFiles.root Guest Databases/apps/Tools/ XML utilities
prefs.root Guest Databases/www/ Web preferences

All databases are pre-migrated to v7 format with .root extensions. The installer now places guest databases in ~/Library/Application Support/Frontier/Guest Databases/.

Stability Fixes

  • Fix startup segfault from context guard and tmp stack bugs (#408)
  • Fix startup hang caused by wrong BIGSTRING length prefixes (#403)
  • Fix callback infrastructure segfault and test failures (#402)
  • Fix dist startup crashes — second-run segfault and log spew (#401)
  • Fix database context — use variable database context in getoutlinefromtarget() (#400)
  • Fix database block lookup — use actual headerLength instead of compile-time constant
  • Suppress false errors during wp text extraction fallback in migration
  • Port stringerrorlist (resource 263) to YAML resource system with test coverage

Installation

Quick Install

# Download and extract
curl -L https://github.com/jsavin/Frontier/releases/download/v1.0.0-alpha.6/frontier-cli-1.0.0-alpha.6-macos.zip -o frontier-cli.zip
unzip frontier-cli.zip
cd frontier-cli-1.0.0-alpha.6-macos

# Run installer
./install.sh

# Verify
frontier-cli --version

System Requirements

  • macOS 11.0 (Big Sur) or later
  • Apple Silicon (arm64) or Intel (x86_64) Mac

Files in this release

  • frontier-cli-1.0.0-alpha.6-macos.zip - Complete package with binary, all databases, and installer
  • Frontier.root.gz - Compressed system root database (optional separate download)
  • .sha256 files - SHA-256 checksums for verification

Documentation

Verification

shasum -a 256 -c frontier-cli-1.0.0-alpha.6-macos.zip.sha256

v1.0.0-alpha.5

v1.0.0-alpha.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Feb 05:20

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

Startup Scripts & Guest Database Lifecycle

The full startup sequence now executes in headless mode. Guest databases can be opened, saved, and managed from scripts and the REPL.

  • Startup scripts execute on launch — system.startup.startupScript runs just like in classic Frontier (#378)
  • fileMenu verbs: open, close, closeAll, save, saveAs, saveCopy — full guest database lifecycle with v7 save format (#391, #394)
  • window.isOpen() for headless mode — checks whether a database is open by address or file path (#398, #399)
  • Portable fileloop — POSIX opendir/readdir/closedir replacing stubs, enabling startup script completion (#396)

Compiler Warning Elimination

Zero compiler warnings achieved across the entire codebase.

  • Phase 1: 154 → 24 warnings (84% reduction) (#372)
  • Phase 2: 24 → 0 warnings (#373)

Build & Distribution

  • make dist target for creating legacy-compatible distribution packages (#381)
  • --migrate flag for standalone v6 → v7 database migration (#377)
  • Auto-rebuild Paige library in new worktrees and fresh clones

Menu System Stabilization

  • Menubar (mbar) value copying for headless mode (#390)
  • V6 menu loading during migration and byte-swap linkage fixes (#385)
  • Proper menubarType data access (#383)
  • Menu loading diagnostics demoted from ERROR to DEBUG
  • Comprehensive menu integration tests (#384)

REPL Improvements

  • /clear command to reset REPL state (#3a260228)
  • /jump resolves relative to focused table — navigate more naturally
  • Slash commands in up-arrow history — previously excluded
  • Mac Roman → UTF-8 conversion in terminal output
  • 255-byte result truncation removed — full output for all expressions

Stability Fixes

  • op.outlineToXml for headless mode via window verb stubs (#388)
  • Startup warning fixes for menupack and startup scripts (#389)
  • int32_t for disk struct fields to ensure 4-byte size on 64-bit (#387)
  • Error logging suppressed for caught try block errors
  • UserTalk line numbers added to error log output

GUI Planning (Documentation Only)

Complete planning documents for the future native GUI application:

  • Architecture, protocol specification, and all editor specs documented
  • Table browser, script editor, outline editor, menu editor, wptext editor

Quality Metrics

Metric Value
Compiler Warnings 0
PRs Merged Since alpha.4 25+
fileMenu Verbs 6/10 implemented

Download

  • frontier-cli-1.0.0-alpha.5-macos.zip — macOS universal binary with Frontier.root7 database

Full Changelog: v1.0.0-alpha.4...v1.0.0-alpha.5

v1.0.0-alpha.4: Working Webserver, REPL Persistent Variables & Navigation

Choose a tag to compare

@jsavin jsavin released this 31 Jan 10:57
f6d3933

Frontier CLI v1.0.0-alpha.4

The webserver works! Full web application layer now functional in headless mode, plus major REPL enhancements.

Highlights

  • Working Webserver & inetd - Build and serve web applications from the CLI
  • Persistent REPL Variables - Variables now persist across evaluations
  • Navigation Commands - /jump and /list for exploring the database
  • Event Loop Architecture - Non-blocking REPL with concurrent callback processing
  • 100% TCP Verb Coverage - Complete TCP/IP networking support

Webserver & inetd Support

The Webserver Works! (#366, #363)

This is the biggest feature in alpha.4: the full web application layer is now functional in headless mode. You can build and serve dynamic web applications directly from the Frontier CLI.

REPL Quick Start:

  1. Start the REPL: ./frontier-cli --system-root Frontier.root
  2. Simple expression: 1 + 1
  3. Call a built-in verb: string.mid ("Hello World!", 1, 5)
  4. Addresses: local (adr = @user.prefs.initials); parentOf (adr^)

Webserver Quick Start:

[root]> user.webserver.responders.helloWorld.enabled = true
true
[root]> user.inetd.config.http.port = 8080
8080
[root]> inetd.startOne (@user.inetd.config.http)
true

Then visit http://localhost:8080/helloworld in your browser.

To stop the webserver:

[root]> inetd.stopOne (@user.inetd.config.http)

What's working:

  • HTTP request/response handling
  • UserTalk callback scripts for dynamic content
  • Multiple concurrent connections
  • Full inetd service management
  • All the classic Frontier web framework verbs

This unlocks the entire Frontier web development ecosystem in the CLI - you can now develop, test, and run Frontier web applications without the GUI.


REPL Improvements

Persistent Variables (#371)

Variables assigned in the REPL now persist across evaluations:

[root]> x = 42
42
[root]> y = "hello"
hello
[root]> x + 10
52
  • Stored in system.temp.FrontierREPL.variables
  • Survives syntax and runtime errors
  • Note: Function definitions don't persist yet (coming in future release)

Navigation Commands (#370)

New commands for exploring the object database:

/jump [path] - Navigate to a table (like cd in a shell)

[root]> /jump user
[user]> /jump system.verbs
[system.verbs]> /jump ..
[system]> /jump
[root]>

/list [path] - List table contents (like ls)

[root]> /list user
user (table, 5 items):
  data         table
  inetd        table
  prefs        table
  scripts      table
  startup      script

Focus Tracking (#371)

  • Current /jump location tracked in system.temp.FrontierREPL.focus
  • Accessible from UserTalk scripts for custom tooling
  • Tab completion prioritizes entries from focused table

Tab Completion Enhancements (#370, #371)

  • /list command now supports tab completion for paths
  • Completion prioritizes current focus table
  • Slash commands have full tab completion

Event Loop Architecture (#368)

  • Non-blocking REPL using linenoise async API
  • TCP callbacks process while waiting for input
  • Agent scheduler runs concurrently
  • Ctrl-C handling at prompt and during script execution
  • Clean terminal restoration on exit

Display Improvements (#368)

  • msg() output prefixed with "msg: " to distinguish from results
  • Cleaner output formatting
  • Better error message display

TCP Networking

100% Verb Coverage (#361)

All TCP verbs now implemented:

  • tcp.openStream, tcp.closeStream
  • tcp.readStream, tcp.writeStream
  • tcp.listenStream, tcp.acceptStream
  • tcp.countStream, tcp.statusStream
  • tcp.myAddress, tcp.addressDecode, tcp.addressEncode

Migrated from Legacy API

  • Replaced deprecated fwsNetEvent with modern tcp_* functions
  • Cleaner callback infrastructure
  • Better error handling

Bug Fixes

  • Double-free crash in REPL variable sync (#371)
  • Function definition crash - now gracefully skipped (#371)
  • Webserver threading - grabthreadglobals() returns success in headless (#366)
  • Frontier verbs initialization in headless mode (#366)
  • Error suppression respected in langerrormessage() (#359)
  • Database context passed explicitly to verbinmemory functions (#360)

Installation

  1. Download frontier-cli-v1.0.0-alpha.4-macos-universal.zip
  2. Unzip to get frontier-cli and Frontier.root
  3. Run: ./frontier-cli --system-root Frontier.root

Requirements:

  • macOS 11+ (Big Sur or later)
  • Works on both Apple Silicon (M1/M2/M3) and Intel Macs

What's Next

  • Function persistence in REPL
  • Thread-safe callback registration

Full Changelog

PRs merged since v1.0.0-alpha.3:

  • #371: REPL improvements - persistent variables, focus tracking, tab completion
  • #370: REPL navigation and table listing commands
  • #368: REPL event loop architecture and display improvements
  • #366: Enable webserver Hello World in headless mode
  • #363: Webserver Hello World initial implementation
  • #361: 100% TCP verbs coverage and legacy API migration
  • #360: Pass explicit db_context to verbinmemory functions
  • #359: Respect error suppression in langerrormessage()

See commits since v1.0.0-alpha.3 for full details.

v1.0.0-alpha.3: REPL Enhancements, Runtime Fixes, and Intel Mac Support

Choose a tag to compare

@jsavin jsavin released this 28 Jan 02:57

Frontier CLI v1.0.0-alpha.3

Major improvements to the REPL experience, critical runtime fixes, and expanded platform support.

🎯 Highlights

  • Enhanced REPL with Option+Arrow word navigation and cleaner startup
  • Intel Mac Support via universal binary (arm64 + x86_64)
  • Critical Runtime Fixes for nested function calls and introspection
  • Expanded TCP Support with Phase 1A/1B implementation
  • Thread Safety Foundation for future multi-threading support

✨ REPL Enhancements

Word Navigation (#356)

  • Option+Left/Right for UserTalk-aware word navigation
  • Recognizes dotted paths (system.verbs.apps), address operators (@workspace), and array indexing (mylist[n])
  • Works seamlessly with existing editing commands (Ctrl+A/E, Home/End, etc.)
  • See: third_party/linenoise/FRONTIER_MODIFICATIONS.md

Clean Startup (#358)

  • Eliminated verbose migration log spew during REPL initialization
  • New LOG_COMP_MIGRATION component (disabled by default)
  • Enable diagnostics with: FRONTIER_LOG_LEVEL=trace FRONTIER_LOG_COMPONENT=migration

Previous Alpha.2 Features

  • Command history (Up/Down arrows, Ctrl+R search)
  • Tab completion for database paths and built-in functions
  • Multi-line editing support

🐛 Critical Runtime Fixes

Nested parentOf() Calls (#354)

Fixed: Nested parentOf() function calls now work correctly

// Now works: find great-grandparent of a table
parentOf(parentOf(parentOf(@workspace)))

Impact: Enables complex table navigation and introspection patterns

Introspection Functions (#352, #342)

Fixed: typeOf(), defined(), parentOf() now resolve correctly without spurious EFP table searches

  • Removed duplicate search logic causing incorrect behavior
  • Prioritized built-in functions over external function processor stubs
  • Fixed dot-path resolution to check builtins first

Impact: Core introspection functions now behave as documented

Path Entry Matching (#337)

Fixed: system.paths migration and path entry name matching

  • Corrected string comparison in langsearchpathvisit()
  • Fixed path entry initialization

Runtime Error Handling (#335)

Fixed: Table index operations now properly halt on runtime errors

  • Corrects error propagation in getarrayval(), setarrayval()

Database Hydration (#348)

Fixed: Database remains open after successful hydration

  • Prevents premature closure of loaded databases

🖥️ Platform Support

Intel Mac Compatibility (#353)

  • Universal binary support (arm64 + x86_64)
  • Fixed CMake installation to work on both Apple Silicon and Intel Macs
  • CLI now runs natively on all modern macOS systems

🌐 TCP Networking Support

Phase 1A: Core Socket Operations (#327)

Implemented 12 fundamental TCP verbs:

  • tcp.open(), tcp.close(), tcp.listen(), tcp.accept()
  • tcp.send(), tcp.receive(), tcp.connect()
  • tcp.status(), tcp.getaddress(), tcp.endlisten()
  • tcp.setnagle(), tcp.settimeouts()

Phase 1B: Address Verbs (#330)

Implemented 8 address resolution and server verbs:

  • tcp.iptostring(), tcp.stringtoip(), tcp.getlocaladdress()
  • tcp.getremoteaddress(), tcp.getmyaddress()
  • tcp.servicetoport(), tcp.porttoservice()
  • tcp.dnsresolver()

Testing

  • 93 comprehensive integration tests covering all Phase 1 functionality
  • Tests validate socket lifecycle, data transfer, error handling, and address resolution

🧵 Thread Safety Foundation (#318, #317)

Thread Registry Infrastructure:

  • Foundation for future POSIX thread safety
  • Deterministic thread testing framework
  • Resolves non-deterministic test ordering issues
  • Prepares codebase for concurrent operations

Status: Foundation complete, multi-threading deferred to Phase 4


📊 Verb Coverage Progress

482 of 710 verbs implemented (68%)

Processors at 100% coverage:

  • op, script, table, lang, clock, date, dialog, kb, point, rectangle, rgb, semaphore, base64, tcp, string, file, sys, db, xml, html, math, crypt (22 of 51 processors)

Recent additions:

  • TCP: 23/23 verbs (100%)
  • Dialog: 19/19 verbs (100%)
  • Sys: 16/16 verbs (100%)

📚 Documentation Improvements

New Guides

  • Getting Started Guide - Complete newcomer guide with build/run/test instructions
  • CLI Usage Guide - Comprehensive frontier-cli reference
  • Verb Implementation Guide - How to implement kernel verbs in C
  • Debugging Guide - LLDB, git bisect, investigation patterns

Enhanced Documentation

  • Verb Resolution Architecture - Complete call chain documentation
  • Architectural Anti-Patterns - Known pitfalls and how to avoid them
  • Testing Guide - CLI usage, testing patterns, database migration
  • Logging Standards - Structured logging requirements

Planning Documentation

  • TCP implementation strategy and phase breakdown
  • Thread safety roadmap
  • Modular context architecture for AI coding assistance

🔧 Developer Experience

Integration Test Infrastructure (#326)

  • Hierarchical OPML export structure for test reports
  • 400+ integration tests organized by category
  • Deterministic thread testing foundation

Build System

  • Improved Makefile structure
  • Better error messages and diagnostics
  • Faster incremental builds

Code Quality

  • Comprehensive PR review automation
  • Structured logging throughout codebase
  • Better error propagation patterns

📦 Installation

macOS (Universal Binary)

# Download and extract release
tar -xzf frontier-cli-v1.0.0-alpha.3-macos.tar.gz
cd frontier-cli

# Run the CLI
./frontier-cli -e "dialog.alert(\"Hello from Frontier!\")"

Build from Source

git clone https://github.com/jsavin/Frontier.git
cd Frontier
git checkout v1.0.0-alpha.3
make -C frontier-cli
./frontier-cli/frontier-cli

See docs/GETTING_STARTED.md for detailed instructions.


🔄 Upgrading from Alpha.2

Breaking Changes: None

New Features:

  • Option+Arrow word navigation in REPL
  • Intel Mac support (universal binary)
  • TCP networking verbs (Phase 1A/1B)

Fixes:

  • Nested parentOf() calls work correctly
  • Introspection functions (typeOf, defined, parentOf) resolve properly
  • Table index operations halt on runtime errors
  • Clean REPL startup (no migration log spew)

Migration: Drop-in replacement, no database or script changes needed


🙏 Acknowledgments

This release represents 11 days of intensive development (Jan 16-27, 2026) with:

  • 76 commits
  • 13 merged pull requests
  • Major REPL improvements
  • Critical runtime bug fixes
  • Expanded platform and networking support

Special thanks to the Claude Code AI assistant for pair programming support throughout this sprint.


📝 Full Changelog

Commits: v1.0.0-alpha.2...v1.0.0-alpha.3

All Changes Since Alpha.2:

  • docs: Document LOG_COMP_MIGRATION in logging standards
  • fix: Suppress v6→v7 migration log spew during REPL startup (#358)
  • docs: Document linenoise modifications for Frontier
  • feat: Add Option+Arrow word navigation to REPL (#356)
  • test: Document known limitations in nested_parentof tests
  • fix: Enable nested parentOf() function calls (#354)
  • Fix Intel Mac compatibility with universal cmake binary (#353)
  • docs: Capture PR #352 lessons in debugging guides
  • fix: Remove explicit EFP table search to fix introspection bugs (#352)
  • fix: Exclude script-only processors from EFP whitelist (#351)
  • docs: Add Getting Started guide and improve Quick Start (#350)
  • fix: Keep database open after successful hydration (#348)
  • feat: Support positional .root/.root7 arguments in CLI (#345)
  • docs: Improve documentation navigation and organization (#343, #344)
  • Fix: Prioritize builtins over EFP stubs in dot-path resolution (#342)
  • feat: Integrate global /doit workflow and agent selection (#340)
  • Refactor CLAUDE.md using Modular Context Architecture (#338)
  • fix: Correct path entry name matching in langsearchpathvisit() (#337)
  • Fix system.paths migration and address value initialization (#336)
  • Fix: Runtime Error Halting for Table Index Operations (#335)
  • TCP Phase 1B + Phase 3: Address verbs and server operations (#330)
  • test: Add comprehensive test suite for TCP Phase 1A (93 tests) (#329)
  • feat: Implement P0a general-purpose parameterized callback infrastructure (#328)
  • feat: TCP Phase 1A - Core socket operations (POSIX) (#327)
  • feat: Hierarchical OPML export structure for integration tests (#326)
  • feat: Phase 1 - Deterministic Thread Testing Foundation (#318)
  • fix: Resolve compilation errors and test dependencies (#324)
  • fix: Initialize file descriptor table in portable file layer (#321)
  • feat: Thread registry foundation for POSIX thread safety (Phase 1) (#317)
  • feat: REPL enhancements - command history and tab completion (#315)
  • Plus 40+ documentation, testing, and infrastructure improvements

🐛 Known Issues

  • Migration diagnostics verbose at TRACE level (use sparingly)
  • Some TCP operations require proper error handling in UserTalk scripts
  • Thread registry is foundation-only (no multi-threading yet)

🚀 What's Next (Alpha.4)

Planned for next release:

  • Additional REPL enhancements (syntax highlighting, better error display)
  • XML/HTML verb improvements
  • Database performance optimizations
  • More comprehensive testing

Download: See Assets below
Documentation: https://github.com/jsavin/Frontier/tree/v1.0.0-alpha.3/docs
Report Issues: https://github.com/jsavin/Frontier/issues

🤖 Release notes generated with Claude Code assistance

v1.0.0-alpha.2

v1.0.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jan 07:18

Hotfix: Preserve User Data on Upgrade

  • Critical fix: Installation script now checks if system root database already exists and prompts before overwriting (default: preserve existing). This prevents data loss when upgrading from alpha.1.

If you installed v1.0.0-alpha.1, upgrade to get the safe installer.

Full Changelog: v1.0.0-alpha.1...v1.0.0-alpha.2

v1.0.0-alpha.1

v1.0.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jan 06:58

First Public Release

The first pre-release of Frontier's headless CLI. This is the result of modernizing the classic Frontier/UserTalk scripting environment from its original Mac OS codebase into a cross-platform command-line tool.

What's Included

  • Headless CLI — Evaluate UserTalk expressions, run scripts, and explore the object database from the terminal
  • Interactive REPL — Read-eval-print loop with command history and tab completion
  • v6 → v7 Database Migration — Automatic migration from legacy big-endian format to modern little-endian with 64-bit timestamps
  • Frontier.root System Database — The full system root with all built-in scripts and verb tables

Verb Coverage: 68% (482/710)

22 processors at 100% coverage:

  • Core: lang (61/61), op (45/45), string (60/60), table (18/18), file (86/86), date (30/30), db (13/13)
  • Networking: tcp (23/23)
  • Formats: xml (13/13), html (20/20)
  • Utilities: sys (16/16), dialog (19/19), math, crypt, base64, semaphore, kb, point, rectangle, rgb, clock, script

Integration Tests

400+ integration tests organized by verb category, exported as OPML for review.

How to Use

# Evaluate an expression
./frontier-cli -e "1 + 1"

# Launch the REPL
./frontier-cli --system-root Frontier.root

# Migrate a v6 database
./frontier-cli --system-root databases/Frontier.root -e "1"

Platform

  • macOS (arm64) — Apple Silicon only in this release

Full Changelog: https://github.com/jsavin/Frontier/commits/v1.0.0-alpha.1