Skip to content

v2.0.0-alpha.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Mar 00:02
Immutable release. Only release title and notes can be modified.

New Commands

  • ferret check — Validate FQL scripts for syntax and semantic errors without executing them. Processes all files (doesn't bail on first error), reports a summary. Supports stdin.

    ferret check script.fql
    ferret check ./queries/*.fql
    
  • ferret fmt — Format FQL scripts with configurable style options (--print-width, --tab-width, --single-quote, --bracket-spacing, --case-mode). Supports --dry-run for preview and stdin input.

    ferret fmt script.fql
    ferret fmt --dry-run script.fql
    
  • ferret inspect — Compile and disassemble FQL scripts into bytecode. Subview flags for focused output:

    • --summary — high-level program overview (functions, constants, registers, instructions, params)
    • --bytecode — instruction listing with labels
    • --constants — constant pool
    • --functions — host + user-defined function definitions
    • --spans — debug source spans
    • Flags can be combined; default shows full disassembly
    ferret inspect script.fql
    ferret inspect -e "RETURN 42" --summary
    
  • ferret repl — Interactive FQL shell, extracted from the old exec command into its own command.

Changed Commands

  • execrun — Renamed for brevity. Added -e/--eval flag for inline script execution.
    ferret run script.fql
    ferret run -e "RETURN 42"
    

Internal / Structural

  • Upgraded to Ferret v2 (v2.0.0-alpha.1) and Go 1.26.1
  • Reorganized packages under pkg/browser, config, logger, repl, runtime, selfupdate, source
  • Shared source.Resolve — common input resolution (file args, -e eval, stdin) used by run, check, fmt, inspect
  • Shared cmd/flags.go and cmd/errors.go** — common flag helpers (addEvalFlag) and error formatting (printError using diagnostics.Format)
  • Refactored browser management — modularized OS-specific implementations, improved process lifecycle handling
  • Run returns io.ReadCloser instead of io.Reader for proper resource cleanup