Skip to content
Get started

Release notes

A summary of each release. The changelog has the full history. Until 1.0, any release may change APIs and saved formats.

0.1.3 — coupled fields on the common solver

Section titled “0.1.3 — coupled fields on the common solver”

Eqiora 0.1.3 runs coupled scalar and vector fields, physical interfaces, and mixed velocity–pressure problems through the common equation-driven solver, both for steady problems and with backward-Euler time stepping. It also adds typed real and complex finite models, more coordinate calculus, and Jupyter support for Eqiora source cells. Moving the specialised FSI solver onto the same path is still in progress.

Saved Models use the new v45 format, and older files are rejected rather than converted, so recompile them after upgrading and check your authoring code for API changes. Python wheels support ordinary-GIL CPython 3.11–3.14 on Linux x86-64. The changelog lists every change.

0.1.2 — Reynolds-100 Kármán wake and lighter profiling

Section titled “0.1.2 — Reynolds-100 Kármán wake and lighter profiling”

Eqiora 0.1.2 replaces the short, symmetric cylinder start-up with a full Reynolds-100 Kármán vortex street. The Python and Colab examples spin the flow up for 7 s, observe it for 2 s, and report vorticity, drag and lift coefficients, the pressure difference, and a sampled Strouhal number. The README and Gallery animations come from the same 900-step run. The example is not a validated benchmark: its MINI/P1 and backward-Euler discretization has had no mesh or time-step refinement study.

View.add() now accepts scalar cell-based DerivedFieldSnapshot values such as State.curl(...). Profiling still records complete counts and timings, but keeps only one representative event for phases that are reported in aggregate, so per-cell assembly no longer makes memory grow with every evaluation.

Transient MINI plans now reject linear tolerances loose enough to accept a zero Newton correction while the nonlinear residual is still above its target. Keep the linear absolute tolerance no larger than the nonlinear one; the example uses 1e-12. Wheels are still for ordinary-GIL CPython 3.11–3.14 on Linux x86-64 only.

0.1.1 — notebook viewer and simpler Colab setup

Section titled “0.1.1 — notebook viewer and simpler Colab setup”

Eqiora 0.1.1 ships the interactive viewer in every Python installation. The viewer extra is gone; anywidget 0.11.0 is now a base dependency, loaded only when needed.

The Colab wake notebook prepares its environment with eqiora.colab.prepare() and shows the geometry, mesh, and vorticity in a single interactive eqiora.View. Matplotlib remains available as an optional extra for static plots and exports. Wheels are still for ordinary-GIL CPython 3.11–3.14 on Linux x86-64.

0.1.0 — equation-driven execution and multi-domain coupling

Section titled “0.1.0 — equation-driven execution and multi-domain coupling”

Eqiora 0.1.0 runs the voltage-divider, sampled-control, property-composition, and transient heated-body examples from the installed Python package. Resolution now works from the equations and formulations themselves, and passes Fields, Domains, Connections, constraints, gauges, and solver and provider choices through to the Plan and its execution.

Fixed-reference FSI runs as an ordinary problem with three Domains and two Connections. A single mapping between Fields and degrees of freedom drives partitioning, assembly, State extraction, interface reactions, Result recovery, and the read-only topology views in Python. Transient MINI runs build their assembly structure once and evaluate local contributions once per nonlinear iterate, Faer reuses its symbolic analysis while the sparsity pattern is unchanged, and profiles separate total time, self time, and call counts.

The Colab notebook reconciles the Eqiora, Gmsh, and Matplotlib versions before plotting. The native GTK3/Tauri Studio shell has been removed, along with older single-problem execution, positional recovery, assembly, and solver lifecycle paths. Wheels are for ordinary-GIL CPython 3.11–3.14 on Linux x86-64. Other platforms, free-threaded Python, arbitrary PDE discretizations, and general multiphysics coupling are not supported.

0.1.0a14 — constraints, trajectory sensitivities, and shared regions

Section titled “0.1.0a14 — constraints, trajectory sensitivities, and shared regions”

Eqiora 0.1.0a14 executes finite equality, inequality, and complementarity constraints, computes event-aware parameter JVPs for ODEs, adds fixed-volume conservation storage, and recovers Fields across chains of Cartesian scalar Regions. The Python property-composition example also runs and replays offline from a single local package lock.

Named test functions owned by a component, together with weak_form, replace primal_form and the global test(field) helper. In Rust, use RelationCondition; the Equation and LexResult exports have been removed. Regenerate Models and saved artifacts for Model/Transaction v27, Source identity v19, structural fingerprint v22, Plan/Result v5, and Trajectory v3.

Conservation storage does not yet run transient spatial thermal problems, and multi-region support is limited to scalar fields: no mixed or vector fields, arbitrary geometry, viewer blocks, or solver-level block structure.

Eqiora 0.1.0a11 adds ModuleRef.record, ModuleRef.enum, and ModuleRef.space to Python authoring, so a component can use public records, enums, and spaces imported from another Module. Emitted source keeps the qualified path to the providing module.

Visibility, type identity, member types, source locations, and locked-package resolution all follow the normal Module resolver. Private, unknown, or transitive declarations are rejected, as are foreign declarations that merely have the same shape, and the provider’s definitions are never copied into the consumer. Imported Records stay distinct from local ones but are constructed the same way.

Eqiora 0.1.0a9 adds profile=True to Python execution. The Result then carries a hierarchical timing profile covering the run, setup, solve, time steps, assembly, nonlinear iterations, linear solves, backend calls, and post-processing, along with nonlinear convergence data. The transient cylinder example can print a short summary.

Profiling is off by default, and a run without it produces bit-identical results with no collector installed. Profiles cover the current process only and are not saved with Results. This alpha instruments the common flow paths, ODE execution, Newton iteration, and Faer factorization and back-substitution. The Rust quick start was also updated for the current compiler API and source syntax.

0.1.0a8 — unified authoring and explicit numerical settings

Section titled “0.1.0a8 — unified authoring and explicit numerical settings”

Eqiora 0.1.0a8 brings source and Python modeling together in eqiora.Module, with typed arrays, records, enums, explicit derivatives, events, and clocks. Projects can lock local and Git dependencies and vendor them for offline use, and a language-server preview provides diagnostics, formatting, and navigation.

Coupled scalar Q1 equations and fixed-reference FSI now share region assembly derived from the equations, with each Field assigned to one owner. A solver request names either an objective or a complete combination of algorithm, preconditioner, reduction, and provider. Typed observables, parameter batches, and limited JAX vmap support extend analysis. Smooth ODE functionals can be evaluated at the final time or integrated with Simpson’s rule over accepted steps, independently of the output schedule. Steady scalar Laws keep their outward flux and source through Model replay.

Some limits apply in this alpha. Laws cannot include storage or moving volumes, and trajectory functionals cannot include events, resets, derivatives, or space-time terms. Convex polyhedral Geometry can be matched to a supplied tetrahedral mesh, but there is no tetrahedral mesher and no new PDE or FSI execution. General equation-driven solving and arbitrary multi-region problems were planned for 0.1.0.

To upgrade, replace the old Python Source and builder code with eqiora.Module, update Model and Component signatures, and write equations as equation(lhs, rhs). Recompile models and regenerate saved execution artifacts and package locks; old pre-1.0 formats and aliases are no longer read.

0.1.0a7 — equation authoring and reusable numerical setup

Section titled “0.1.0a7 — equation authoring and reusable numerical setup”

Eqiora 0.1.0a7 lets Python Source code write equations naturally and infers dimensions for model-local aliases. Scalar conservation works in Cartesian models from 1D to 3D, and elasticity calculations share their continuum and material operations. Runs prepare reusable execution data and Faer factorizations once, and a cancelled run returns its last accepted State.

Mesh generation now goes through MeshPlan. Physics-specific dimension aliases and the Marimo and Jupyter example paths were removed; use derived dimensions and the Colab examples instead.

0.1.0a6 — scalar properties and local file I/O

Section titled “0.1.0a6 — scalar properties and local file I/O”

Eqiora 0.1.0a6 adds scalar property bindings, affine coefficients, authored scalar primal Formulations, and directional Stokes correspondence. The language gains math.pi, typed model-local let, and derived-dimension aliases, and rearranging the terms of an equation no longer changes its residual.

Plans, Results, and Trajectories can be saved to and loaded from local files atomically. Rust gains a common transient RunRequest. The cylinder examples use finer meshes and clearer start-up animations, and a Gmsh start-up failure in a fresh Colab session was fixed.

0.1.0a5 — inspect formulations and save execution artifacts

Section titled “0.1.0a5 — inspect formulations and save execution artifacts”

Eqiora 0.1.0a5 lets you inspect the Formulation a Plan uses and save resolved Plans, restartable States, Trajectories, and Results. Loading checks that the objects you supply match the ones the artifact was saved with.

Static scalar, elasticity, and Stokes runs return the common Result. The optional eqiora.View displays 2D Geometry, Meshes, selections, and scalar Fields from Python. Package compilation binds a public Component to the Geometry and Parameters you supply; v1 compilation records can no longer be read.

0.1.0a4 — common run workflow and cylinder start-up

Section titled “0.1.0a4 — common run workflow and cylinder start-up”

Eqiora 0.1.0a4 introduces the .eqi → eqiora.compile() → eqiora.resolve() → eqiora.run() workflow, with the application supplying the Geometry, Mesh, and numerical settings. A Colab walkthrough follows the first steps of transient flow around a cylinder, and the packaged DC-drive example also runs in Studio.

Eqiora 0.1.0a3 meshes the cylinder example with Gmsh 4.15.2 and updates its pressure output and Gallery image.

Eqiora 0.1.0a2 expands the Python, CLI, MCP, and Gallery interfaces. See the linked release for details and installation requirements.

Eqiora 0.1.0a1 is the first published Python package. Each linked release keeps its original downloads and full release notes.