You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚠️Breaking: Publish the TypeScript port under the @VarAR npm scope
npm packages are renamed from the @oselvar scope to @VarAR.
Update imports: @oselvar/var -> @varar/varar, @oselvar/var-vitest -> @varar/vitest, etc.
Python (PyPI)
⚠️Breaking: Publish the Python port under the varar distribution names
PyPI distributions are renamed. Install varar / pytest-varar instead of oselvar-var / pytest-var, and import varar*
instead of var*.
Java & Kotlin (Maven Central)
⚠️Breaking: Publish the JVM port under the dev.varar Maven coordinates
Maven coordinates change from com.oselvar:var* to
⚠️Breaking: Steps.defineState is now Steps.state
Java's Steps.defineState(factory) is now Steps.state(factory)
and .NET's Steps.DefineState(factory) is now Steps.State(factory). Rename the
call in each step file; there is no other change to the API.
Fixed: var-kotlin: Backtick-escape the var keyword in a Kotlin import so ktfmt passes
Ruby (RubyGems)
⚠️Breaking: Publish the Ruby port under the varar gem names
RubyGems names change from oselvar-var* to varar*; require
paths from 'oselvar/var...' to 'varar...'; and the module namespace from
⚠️Breaking: The state factory must be a proc, called fresh per example steps no longer accepts a Hash or keyword arguments as the
initial state — pass a Proc/lambda instead, e.g. steps(count: 0) becomes steps(-> { { count: 0 } }). Omitting the factory entirely, for stateless step
files, is unchanged. Passing a Hash now raises ArgumentError with the rewrite.
Fixed: Update minitest gemspec dependency to ~> 6.0 and regenerate lockfile
Fixed: Update minitest to ~> 6.0 in examples/ruby-minitest Gemfile
Go (Go modules)
Added: Run your Markdown specs as Go tests with go get github.com/varar-dev/varar/go
Fixed: Keep conformance fixtures out of the published module
VS Code extension (Marketplace & Open VSX)
Fixed: Align @types/vscode with the supported VS Code floor
Specification (all ports)
⚠️Breaking: Rename the config/lock files, CLI command, and scaffold to varar
rename var.config.json -> varar.config.json and
var.lock.json -> varar.lock.json in your project, point "$schema" at
varar.config.schema.json, and invoke the CLI as varar instead of var.
⚠️Breaking: A stimulus returns the complete next state, replacing it
A stimulus must return the complete next state, not a partial
one. In TypeScript, Python and Ruby a return that omits a field now drops that
field instead of preserving it — spread the current state to keep it, e.g. (state) => ({ ...state, count: 1 }). Returning nothing still leaves state
unchanged, and is now a no-op in Java, Rust and .NET rather than wiping state.
Added: Step handlers accept up to five captures in every port
Fixed: Every port words and quotes failure messages identically