Skip to content

brookmd 0.23.0 — wire delta mode retires the streaming re-emit floor

Latest

Choose a tag to compare

@siinghd siinghd released this 21 Jul 15:19

brookmd 0.23.0 — wire delta mode: the streaming re-emit floor is retired

The last by-design quadratic in the streaming pipeline is gone. Previously, every append re-emitted each open block's full rendered HTML across the patch boundary — O(n²/chunk) total bytes for a block that grows across many chunks (the documented "re-emit floor"). Wire contract v1.2.0 adds an opt-in delta mode: an active block that was emitted in the previous patch serializes as a verified splicehtml_delta: { keep_bytes, keep_units, append } — against that emit. The kept prefix is established by byte comparison, never structural inference, so reconstruction is byte-exact by construction. Committed blocks always carry full HTML.

Measured (200 KB document, 256-byte chunks, real WASM boundary):

Shape Total patch JSON before After Wall
Streaming list 119.6 MB 0.78 MB (153× less) 2.8× faster
Unclosed code fence 80.1 MB 0.58 MB (137× less) 4.9× faster
Fast-committing prose 2.0 MB 1.95 MB unchanged

Emitted bytes are now gated linear in CI (tests/scaling.rs); the multipliers grow with document size since the quadratic curve is gone.

  • npm brookmd / brookmd-react-native: enabled automatically and invisibly — no API change, Block.html is always complete. Just upgrade.
  • Raw-boundary consumers (WASM BrookParser, native BrookSession, C ABI): opt-in via setWireDelta(true) / wire_delta: true; the default wire stays byte-identical to contract v1.1.0. Enabling it obliges you to reconstruct per WIRE.md §11.
  • Pinned by reconstruction-parity suites (dual UTF-8/UTF-16 offset verification), wire goldens in all five language surfaces (core / FFI / C-ABI / Kotlin / Swift, including the Android instrumented twin on an emulator), a fuzzer extension asserting per-patch reconstruction on arbitrary inputs, and the RN app-level e2e on emulator + simulator.

Ships as npm brookmd@0.23.0, crates.io brookmd-core 0.23.0, and npm brookmd-react-native@0.1.1. Also includes 0.22.2's core perf pass (7–24% faster streaming across all shapes).

Prebuilt native artifacts (experimental)

CI-built binaries for the native bindings, rebuilt from this release — the Swift/Kotlin/C-ABI/Flutter bindings are not yet on package registries. All emit the same versioned wire (WIRE.md v1.2.0), pinned by per-language golden tests.

Asset Contents SHA-256
brook_md_ffi.xcframework.zip Swift/uniffi XCFramework: iOS device + simulator + macOS (arm64 + x86_64) 9a3108613c5b259632ee6d7509029517398879fbe62f19c1f547c3a4478d8fd4
brookmd-ffi-android-jniLibs.zip Android libbrook_md_ffi.so — arm64-v8a, armeabi-v7a, x86_64 (16 KB page aligned) 9a4988929179d2399bc0a08cf4fc55381081023eaaa4e940de55a3eab61fd17b
brookmd-ffi-rn-ios.xcframework.zip React Native iOS XCFramework (device + fat simulator) ffa941cb9471ada14da6eb8d5baaf293b130ab8faed06860ec19decc1025ebcd
brookmd-cabi-android.zip C-ABI libbrook_md_cabi.so per ABI + brook_md.h d730ea438ba0de88a740ca750599eea0063d869f7195ba151b231ea3c56daf4c
brookmd-cabi-apple.zip C-ABI XCFramework + universal macOS dylib + brook_md.h e7abbb172324ad3d452307191a7fce7a4ecac13ba515a8262c76ae13136ade4d

Swift Package Manager binaryTarget example:

.binaryTarget(
    name: "BrookMdRustFFI",
    url: "https://github.com/siinghd/brookmd/releases/download/v0.23.0/brook_md_ffi.xcframework.zip",
    checksum: "9a3108613c5b259632ee6d7509029517398879fbe62f19c1f547c3a4478d8fd4"
)