Skip to content

Build the three-layer jlreq workspace and optimize layout pipelines - #33

Open
P4suta wants to merge 9 commits into
mainfrom
codex/release-prep-0.1.0
Open

Build the three-layer jlreq workspace and optimize layout pipelines#33
P4suta wants to merge 9 commits into
mainfrom
codex/release-prep-0.1.0

Conversation

@P4suta

@P4suta P4suta commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • provide the dependency-free no_std + alloc composer in jlreq-core, the draw-ready jlreq facade, and the protocol-v1 conformance runner
  • optimize shaping, span resolution, font fallback, construct lookup, line measurement, result queries, generated spacing tables, and bounded NDJSON transport
  • split the large core, facade, and conformance pipelines into focused private modules without changing the public API
  • add deterministic hot-path regression tests and a reproducible release median benchmark

Optimization evidence

A paired five-sample run against the unchanged previous head on the same machine observed:

Workload Previous head Optimized
reused engine, Japanese 31.96 ms 9.31 ms
bidi plus font fallback 13.66 ms 3.31 ms
many spans 11.86 ms 4.72 ms
hit/caret/selection 0.311 ms 0.147 ms
reused core composer, 10k clusters 68.84 ms 39.38 ms

The previous static-construct implementation did not finish two warmups plus one measurement within 120 seconds; the indexed implementation completed with a 69.6 ms five-sample median. Wall-clock values remain local evidence because later runs showed host-load variance. CI instead pins exact transition charging, the 10k-cluster search budget, and repeated-fallback shaping calls.

Local verification at d821b63

  • cargo test --workspace --all-targets --all-features
  • strict clippy with all features and with no default features
  • rustfmt, rustdoc, feature matrix, release checks, package preflights, no_std thumbv7em, and wasm
  • MSRV: Rust 1.88 for jlreq; Rust 1.85 for core, conformance, and xtask
  • four nightly fuzz targets compile under the repository's Windows fuzz gate
  • API freeze: 99 public items across three modules and all 22 typed style mappings
  • generation, derivation, attestation, conformance (89 protocol cases), repository, purity, direction, placeholder, and mutation-ledger gates
  • git diff --check and a clean post-commit worktree

The OCaml and Racket executables are not installed on the local Windows host; their independent conformance jobs remain part of GitHub CI.

Compatibility

  • public jlreq and jlreq-core types, functions, errors, and feature structure are unchanged
  • glyphs, positions, lines, source ranges, diagnostics, resource-limit errors, and protocol behavior remain exact
  • no_std + alloc, declared MSRVs, and protocol-v1 NDJSON limits are preserved

Publication boundary

Merging this pull request performs no crate upload, tag, GitHub Release, or release workflow dispatch. The release workflow remains manual and protected.

Reuse shaping state and fallback decisions, index construct and query paths, extend prefix measurement to static constructs, generate constant-time spacing lookups, and split the large pipelines into focused modules. Add deterministic regression coverage and release median benchmarks while preserving the public API and conformance protocol.
@P4suta P4suta changed the title Prepare the three-layer jlreq 0.1.0 release candidate Build the three-layer jlreq workspace and optimize layout pipelines Aug 29, 2026
@P4suta
P4suta enabled auto-merge (squash) August 29, 2026 01:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant