Skip to content

Compatibility report

This report is generated by running the same fixtures under the pinned Babashka release and the current Gobb binary. Each fixture runs in an isolated working directory. The harness compares standard output, standard error, exit status, and filesystem effects.

Current result

  • 28 exact matches
  • 2 documented differences
  • 0 unexpected differences
  • 0 unexpected matches
Status Area Fixture Description
✓ Match cli :cli/expression Evaluate an expression
✓ Match cli :cli/arguments Bind expression command-line arguments
✓ Match execution-state :cli/expression-file Bind BB's expression source marker
✓ Match reader :reader/collections Read and print nested collection literals
✓ Match reader :reader/bb-feature Select the :bb reader-conditional branch
○ Known difference reader :reader/gobb-feature Select Gobb's additional reader-conditional branch
✓ Match reader :reader/data-readers Load a tagged-literal reader from data_readers.clj
✓ Match printing :printing/basic Preserve print and prn output
✓ Match namespace :namespace/switch Create and switch the current namespace
✓ Match dynamic-vars :vars/dynamic Bind dynamic command-line state
✓ Match script-loading :loading/script Load a script with arguments
✓ Match execution-state :loading/script-state Bind absolute file, arguments, and working directory
✓ Match script-loading :loading/require Require source from an explicit classpath
✓ Match script-loading :loading/repeated-require Repeated require preserves the loaded namespace
✓ Match script-loading :loading/resource Resolve and read a resource from the runtime classpath
✓ Match script-loading :loading/preloads Evaluate BABASHKA_PRELOADS before the expression
✓ Match script-loading :loading/init Evaluate --init before the expression
✓ Match invocation :invocation/main Invoke a namespace -main with command-line arguments
✓ Match invocation :invocation/main-var Invoke a qualified var through -m
✓ Match invocation :invocation/exec Invoke a qualified var through -x with parsed options
✓ Match runtime :runtime/working-directory Normalize each isolated working directory
✓ Match execution-state :runtime/environment Expose the inherited process environment
✓ Match runtime :runtime/timestamp Normalize a declared millisecond timestamp
✓ Match errors :errors/exception-data Preserve structured exception data
✓ Match errors :io/stderr Bind err as the standard error writer
✓ Match execution-state :io/stdin Bind in as the standard input reader
✓ Match exit :exit/nonzero Preserve an explicit nonzero exit status
○ Known difference filesystem :filesystem/write Write a deterministic filesystem effect
✓ Match compiled-programs :compiled/main Compile and execute a namespace containing -main
✓ Match compiled-programs :compiled/host-state Keep runtime and compiled namespace and binding state aligned

Differences

:reader/gobb-feature

Known difference. The :gobb feature is intentionally active only under Gobb

:filesystem/write

Known difference. Glojure's core spit host adapter is not linked into Gobb yet

Reproduce

make compat

Full per-fixture commands and raw and normalized results are retained in .cache/compat/fixtures/. The machine-readable aggregate is .cache/compat/report.edn.

The harness normalizes only the declared sources of nondeterminism:

  • working-directory: Replace each isolated fixture directory with
  • platform-separators: Use forward slashes in captured paths on every platform
  • timestamp: Replace explicitly declared millisecond timestamps
  • process-id: Replace explicitly declared process identifiers
  • port: Replace explicitly declared ephemeral port numbers