Skip to content

Releases: matyushkin/djvu-rs

v0.32.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 18:25
8bae381

0.32.0 (2026-09-07)

⚠ BREAKING CHANGES

  • api: every public error enum is now #[non_exhaustive]. Downstream code that matches on one exhaustively must add a _ arm. Variant names, their payloads, and every Display/Error impl are unchanged.

Features

  • api: mark every public error enum #[non_exhaustive] (#796) (a9edf57)

v0.31.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:46
ae9b843

0.31.0 (2026-09-06)

⚠ BREAKING CHANGES

  • encode: EncodeError is now #[non_exhaustive]; downstream matches need a _ arm. It also gained the PageSource variant.

Features

  • encode: per-page mask reuse on the multi-page bundle path (#779 follow-up) (#784) (50f71cd)
  • encode: reuse an existing Sjbz mask on re-encode (#601 follow-up) (#779) (8696f72)

Performance Improvements

  • encode: bounded-window streaming entry point (encoder peak-memory step 4) (#793) (910641f)
  • encode: commit the peak-RSS scaling harness (encoder peak-memory step 1) (#786) (e5ad127)
  • encode: precompute the per-CC colour table in phase 1 (encoder peak-memory step 3) (#792) (c100fc8)
  • encode: stream pages in the CLI encoder (encoder peak-memory step 5) (#794) (9b1c782)
  • segment: inline derive_background to restore pre-split codegen (#782) (bf39d5b)
  • thumbnail: skip full-res extract_mask on the thumbnail path (round 89 follow-up) (#785) (117c3e5)

v0.30.2

Choose a tag to compare

@github-actions github-actions released this 31 Aug 10:25
1d948ca

0.30.2 (2026-08-31)

Performance Improvements

  • render: separable bilinear bg resampling with per-column table (#775) (15f3270)

v0.30.1

Choose a tag to compare

@github-actions github-actions released this 23 Aug 14:19
a096d88

0.30.1 (2026-08-22)

Performance Improvements

  • migrate constant-size chunks_exact(N) to as_chunks (#768) (#770) (41f3b1a)

v0.30.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 20:02
f94a787

0.30.0 (2026-08-18)

Features

  • ingest: apply JPEG EXIF orientation exactly once at ingest (#694) (#763) (70908a4)
  • ingest: apply TIFF Orientation tag exactly once at ingest (#694) (#760) (bf20e3b)
  • ingest: configurable alpha compositing via encode --background (#694) (#764) (0abae18)
  • ingest: explicit ICC profile policy via encode --icc (#694) (#765) (0e56250)

v0.29.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 15:53
4b600d0

0.29.0 (2026-08-18)

Features

Performance Improvements

  • ingest: bilevel TIFF fast path straight to JB2 masks (#694) (#759) (afa2c67)

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 11 Aug 21:32
0c0dd39

0.28.0 (2026-08-11)

Features

  • api-stability: compatibility policy, feature matrix, and CI gates (#695) (adff9cd)
  • api: wire configurable ResourceLimits into parse and render (#695) (cdb8222)
  • cli: add djvu diff semantic document comparison (#696) (616f2fe)
  • cli: add djvu diff semantic document comparison (#696) (cbed5fc)
  • cli: add djvu inspect with offset-aware structural JSON (#696) (779865c)
  • cli: add djvu inspect with offset-aware structural JSON (#696) (31e5296)
  • cli: layered djvu validate with structural/dependency/codec findings (#696) (583f66a)
  • cli: layered djvu validate with structural/dependency/codec findings (#696) (97f4c92)
  • djvm: add bundled -> indirect conversion preserving graph and names (#689) (d69d680)
  • djvm: add bundled -> indirect conversion preserving graph and names (#689) (7ab03d2)
  • djvm: bundle single-page extraction with its INCL closure (#689) (e28795c)
  • djvm: bundle single-page extraction with its INCL closure (#689) (777b6cf)
  • djvm: extract-with-includes uses the component graph closure (#689) (33d24ad)
  • djvm: extract-with-includes uses the component graph closure (#689) (9685512)
  • djvm: page deletion with unreachable-component GC policy (#689) (fee8e06)
  • djvm: page deletion with unreachable-component GC policy (#689) (de8d001)
  • djvm: safe byte-exact shared-component deduplication (#689) (0d0fc92)
  • djvm: safe byte-exact shared-component deduplication (#689) (a6a99c2)
  • djvm: spooled streaming bundle writer with bounded memory (#690) (51a099b)
  • djvm: spooled streaming bundle writer with bounded memory (#690) (11b6a1e)
  • document: add typed indirect component resolver (a5c2dd1)
  • document: add typed indirect component resolver (#687) (781e459)
  • document: add validated component dependency graph (#689) (4fe8d25)
  • document: add validated component dependency graph (#689) (e806d46)
  • document: decode legacy FORM:BM44 and FORM:PM44 (#683) (5104fa3)
  • document: decode legacy FORM:BM44 and FORM:PM44 (#683) (e84ba8e)
  • editor: add validated typed edit operations (1939cca)
  • editor: add validated typed edit operations (#688) (9f127c9)
  • export: async writer adapters, injected-failure tests, memory smoke (#690) (1206492)
  • export: async writer adapters, injected-failure tests, memory smoke (#690) (b064f2b)
  • export: bound CBZ/EPUB writer memory to active page state (#690) (e6e7250)
  • export: bound CBZ/EPUB writer memory to active page state (#690) (87d21cc)
  • export: uniform progress/cancellation observer and atomic CLI output (#690) (1c6835c)
  • export: uniform progress/cancellation observer and atomic CLI output (#690) (749a904)
  • ingest: expand PNG encoder ingestion slice 1 (#694) (b8e4c0e)
  • ingest: expand TIFF encoder ingestion slice 2 (#694) (#742) (73e1197)
  • limits: configurable ResourceLimits for parse/render (#695) (fc61627)
  • ocr: CTC line recognition and TextLayer assembly for the neural pipeline (#750) (beade4c)
  • ocr: model manifest with SHA-256 verification + DBNet detection (#693) (#749) (2b13106)
  • ocr: NeuralOcrBackend pipeline wired to CLI as --backend onnx (#751) (bd6e1e6)
  • ocr: synthetic metrics corpus with CER/WER/IoU baseline (#752) (667003e)
  • optimizer: add lossless cleanup planning (#686) (a332864)
  • optimizer: add lossless cleanup planning (#686) (17b53eb)
  • packaging: publish Python wheels and npm packages (#692) (adf6cb7)
  • packaging: publish Python wheels and npm packages (#692) ([cd0adbc](c...
Read more

v0.27.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 20:59

0.27.0 (2026-07-12)

Features

  • cli: expose TH44 thumbnail embedding via djvu encode --thumbnails (#590) (#653) (51ff48d)
  • encode: automatic content-type detection for the encode profile (#570) (#648) (4ac02e0)
  • encode: DjVuPhoto profile -- mask-less BG44-only encode with grayscale path (#571) (#647) (29c747c)
  • py: region/tile render and progressive decode in djvu-py (#583) (#650) (2c364ab)
  • segment: opt-in projection-profile deskew -- skew costs +150-384% Sjbz at 1 degree (#592) (#663) (c3995ce)
  • wasm: lazy Range-based document open -- WasmLazyDocument, 11-19x TTFP in Chrome (#588) (#652) (6358073)

Bug Fixes

  • bench: fail closed on missing Criterion results (#616) (7e123bf)
  • bench: measure both sides of the suspect re-check back-to-back (#636) (3795fc5)
  • bench: re-check flagged regressions against the merge base on the same runner (#634) (63a471d)
  • decode: resolve the shared dictionary across all INCL chunks -- czech.djvu masks restored (#624) (#661) (644d9bb)
  • djvm: DjVuLibre-clean DIRM for merge/split -- fill offsets/sizes, write directory version 1 (#657) (#659) (2c822d8)
  • iw44: decode v1.2 chroma at full resolution (#614) (4ae4435)
  • pdf: paint FGbz-coloured foreground text with per-colour stencils (#559) (#619) (d24c9fa)
  • pdf: restore lost and invisible foreground masks in PDF export (#620, #621) (#622) (d0598ac)

Performance Improvements

  • async: index bundled DJVM from the DIRM size table -- 103x TTFP over HTTP Range (#584) (#651) (ad041b5)
  • cache: preserve the 1/4-res JB2 mask across render-cache downgrade (#607) (#627) (9355aa6)
  • cli: parallelize CBZ export via a new cbz library module (#598) (#625) (ddfd111)
  • encode: build the FGbz palette from encoder blit metadata (#612) (#626) (238ae11)
  • encode: two-pass layered bundle encode drops backgrounds and mask clones (#565) (#637) (344efc6)
  • export: render whole-document exports on cold page clones -- 504-page PDF peak RSS 2.24 GB -> 45 MB (#629) (#654) (037c9fc)
  • iw44: resume full decode from the cached first-chunk state (#608) (#643) (2c4b269)
  • metadata: cache decoded TXTz and ANTz layers per page (#605) (#635) (6d4141f)
  • mut: incremental byte-range save for bundled DJVM -- same-size edits write 1 byte instead of the file (#595) (#658) (2990793)
  • ocr: parallelize OCR across pages in the CLI (#573) (#645) (9520458)
  • pdf: stream PDF objects to a writer to bound serialization memory (#606) (#630) (a63b680)
  • render: LRU tile-cache eviction + hit-rate telemetry and budget sweep (#576) (#644) (17f7d95)
  • segment: parallelize the Sauvola threshold pass (#575) (#623) (5b24f50)
  • wasm: coarse-grained batch page rendering (#610) (#642) (db65a1a)
  • wasm: open documents through the lazy shared backing (#609) (#632) (8b81993)
  • wasm: reusable Rust-owned pixel buffer with zero-copy view (#611) (#631) (dea47a5)
  • wasm: ship simd128 package variant (1b2e4db)
  • wasm: ship simd128 package variant (#581) (81acb78)

v0.26.2

Choose a tag to compare

@github-actions github-actions released this 10 Jul 05:12

0.26.2 (2026-07-10)

Performance Improvements

  • BG-heavy colour-encode bench + land PAR_PAGE_LAYERS (Sjbz ∥ BG44 join) (#496) (#555) (ad29126)

v0.26.1

Choose a tag to compare

@github-actions github-actions released this 09 Jul 18:23

0.26.1 (2026-07-09)

Bug Fixes

  • decode ANTa/ANTz annotation payloads leniently — one bad byte no longer drops all annotations (#553) (#554) (9806824)
  • decode non-structural strings leniently — CP1252 fallback for NAVM/TXTz/METa (#524) (#551) (a461a8a)