What We Hope to Achieve

The ultimate goal of LaiRu is a strict, complete, drop-in replacement for the Lasso 9 server on modern Linux — one that Lasso 9 applications can run against without needing code changes or workarounds for missing features. That means:

We are building this incrementally and dependency-first. LaiRu 0.1 is the foundation; each subsequent pass adds a verifiable slice with test fixtures before moving to the layer above.


Current Priorities

The active queue is ordered from lowest to highest dependency:

1. Value graph consumers Active

Broaden historical DB row/result serialisation APIs beyond the bounded row-map helpers, sessions, and security policies already covered. The foundation exists; coverage needs to grow to match real Lasso applications.

2. Data-member edge cases Active

Finish remaining trait interaction, pure map/array temporary assignment roots, exact accessor/setter naming edge cases, and visibility/precedence rules beyond the current generated accessor, listing, and hasMethod slices.

3. Dispatch and trait semantics Active

Extend ranking for remaining default/rest edge cases and ambiguity behaviour beyond duplicate-count diagnostics. Finish historical trait + conflict, provided-method, and requirement compatibility rules.

4. Source and capture diagnostics Active

Broaden token and parser sub-spans beyond the landed operator/member/invocation failures. Attach exact historical capture-frame source context. Improve remapping for cached template and code-fragment spans.

5. Lazy sequences and query runtime Planned

Introduce public lazy sequence and query result objects. Implement the full eacher/queriable protocol beyond the current callback-style each(handler). Lazy barrier-aware query stages, exact group objects, and null-aware aggregate behaviour.

6. Service and FastCGI hardening Active

Finish remaining upload handoff controls. Grow multipart binary boundary and root-policy coverage. Add graceful FPM lifecycle and reload behaviour (worker recycling, deployment telemetry) on top of the landed config, pool, and multiplexing controls.

7. DBAL completion Active

Implement remaining inline result helpers beyond the current map/runtime helper slice. Transaction lifecycle helpers beyond request/inline flag representation. Layout helpers, charset/data conversion edge cases, and older MySQL/MariaDB reset-policy guidance.

8. Runtime lifecycle and tooling Planned

Startup/shutdown/module/app-state hooks. Thread and scheduler primitives when fixtures require them. Packaging hardening, migration documentation, and richer per-feature compatibility reports.


Standard Library

The following standard library areas are in scope but not yet implemented:


Language Completeness


Parked Items

These are valid Lasso 9 features that are out of the active queue because they need external infrastructure, product decisions, or a separate implementation pass:


Contributing

LaiRu is fixture-first: a feature is only considered done when it has passing test fixtures. The best way to contribute is to:

  1. Find a Lasso 9 behaviour that LaiRu doesn’t yet cover correctly.
  2. Write a minimal fixture under lasso-rust/tests/fixtures/ that demonstrates the expected behaviour.
  3. Implement the feature or fix until the fixture passes.
  4. Reference the LassoGuide section that describes the behaviour in your commit message.

The fixture index at lasso-rust/tests/fixtures/INDEX.md tags existing cases by implementation-plan layer and compatibility area.