Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Parity Across Languages

One engine, three languages, and the honest table of what is the same, what differs, and what is absent on purpose. This page doubles as the specification the cross-language conformance fixtures check.

Identical everywhere

BehaviourRustPythonNode
Precedence: files in order, then env, then flags/overrides
Formats: JSON, TOML, YAML, INI, properties
Env nesting __, prefix stripping, type widening
init fails fast; a refused reload changes nothing
Last-known-good cache, three modes
Errors carry paths, never values
explain/check, redacted by default
Telemetry series (Prometheus text)
Remote stores, same eight, same semantics

Same idea, different idiom

ConcernRustPythonNode
Schema/validationserdedataclass / Pydantic / msgspecZod / Ajv / function
The readT::current()Arc<T>config.current() → modelconfig.current() → object
Async waitingchanges() futurechanged_async() / events()changes() async iterator
Reload hookson_reload (watcher thread)on_reload (watcher thread, GIL held — hooks must be quick)onReload (event loop, unbounded queue)
Engine diagnosticsstderr / sink / log / tracinglogging (dynamic_config.engine), on by defaultstderr, setLogger opt-in
Group reloadReloadGroup (two-phase)ConfigGroup.reload_atomic()group.reloadAtomic()

Absent by design

WhatWhereWhy
A Wiring lifecycle objectRustmain already is one; the web crates' charter says no
Mounted health/metrics routesRust web cratesrecipes in their book — composing engine surface beats freezing choices
Request scope for WebSocketseverywherea connection is not a request; both web books state the same rule
Free-threaded wheel for the remote packagePythonabi3-only today; the base wheel has one
A compiled addon per platform matrix beyond Tier 1Nodefloors are stated in the README, extended on request

A row moving from one table to another is a release-notes event, not an edit: the conformance fixtures live beside the engine's test suite, the bindings' CI resolves them, and a claim this page makes that a fixture cannot check is marked with (prose) — today there are none.