Repository navigation
v0.10.1
Highlights
The stable Word family adds native RTF, HTML, and OpenDocument Text input,
native RTF and OpenDocument Text output, deterministic EPUB and SVG export,
and ordered compatibility readers that preserve unsupported XML. Layout also
honors caller font aliases and restores bounded editor-scale reuse.
This patch release recovers the complete stable family after v0.10.0 published
only rdocx-opc and rdocx-oxml, then stopped during rdocx-layout package
verification. Version 0.10.1 is the first complete stable family carrying the
S56 outcome.
Added
- Read RTF, HTML5, and OpenDocument Text into the native
Documentfacade with
bounded inputs, ordered diagnostics, and no network access. - Write deterministic RTF byte streams with stable lossy diagnostics and
failure-atomic path replacement. - Write deterministic OpenDocument Text archives with stable lossy diagnostics
and failure-atomic path replacement. - Export deterministic EPUB publications that retain supported links, images,
headings, lists, tables, and accessibility structure while reporting
unsupported source content. - Export searchable SVG pages with deterministic fixed-page geometry, images,
and safe links while reporting unsupported visual content. - Export exact selected pages as opaque or transparent PNG, quality-controlled
JPEG, or one deterministic multi-page TIFF through native Word, Python, and
the general Word and PowerPoint CLI paths. - Inspect direct table-cell children through
CellRef::items. This hardened
equivalent includes the outcome proposed in
PR 47. - Inspect direct run content through
RunRef::items, including text, breaks,
drawings, fields, notes, comments, and preserved XML. This hardened
equivalent includes the outcome proposed in
PR 48. - Inspect direct paragraph and hyperlink content without changing established
flattened accessors. This hardened equivalent includes the outcome proposed
in PR 49. - Classify retained unsupported body XML through borrowed qualified-name,
namespace, and child-content facts without inventing source bytes. This
hardened equivalent includes the outcome proposed in
PR 50.
Fixed
- Honor caller-supplied font family aliases without duplicating font bytes,
while retaining deterministic fallback and bounded caches. This hardened
equivalent addresses
Issue 44 and the reference
implementation in PR 45. - Restore bounded reusable layout performance for document load, typing, undo,
and table mutation while retaining exact shaping, source mappings, and page
structure. This hardened equivalent addresses
Issue 46. - Reject undecodable ordinary and deleted Word text instead of publishing an
empty lossy value. This hardened equivalent includes the correction proposed
in PR 52.
Compatibility
The exact seven-package stable crates.io family moves together from 0.9.0 to
0.10.1. This is an intentional pre-1.0 Rust source boundary. The shared OOXML
and PowerPoint family is published at 0.6.0. Python, WASM, npm, and PyPI
publication authority is unchanged.
The immutable v0.10.0 attempt contains only rdocx-opc and rdocx-oxml.
Callers should select 0.10.1 for a coherent seven-package stable graph. No
v0.10.0 tag or registry entry was moved, replaced, or reused.
ST_NumberFormat now preserves producer-defined values in Other(String).
The enum no longer implements Copy, and exhaustive matches must handle the
new value-bearing variant. Callers should borrow or clone numbering formats as
needed and retain unknown values rather than substituting a modeled marker.
This hardened equivalent includes the preservation outcome proposed in
PR 51.
External layout backends must continue to recurse through
PositionedElement::MarkedContent or use oxml_layout::walk, as documented for
v0.9.0. No migration is required for callers that use the high-level document
facade and do not exhaustively match ST_NumberFormat.
Contributors
Atul Sharma maintained the release. Thanks to @emptinessform for the caller
font-alias report and reference implementation in
Issue 44 and
PR 45, and for the editor
performance measurements and migration evidence in
Issue 46.
Thanks to @pedroassumpcao for the ordered cell, run, paragraph, and hyperlink
reader designs in PR 47,
PR 48, and
PR 49, the unsupported XML facts
in PR 50, producer-defined
numbering preservation in PR 51,
and fail-closed text decoding in
PR 52.
No named external patch landed directly. Each named report or proposal landed
through the hardened equivalent described above so that current namespace,
non-exhaustive API, bounded-allocation, diagnostic, and compatibility contracts
remain intact.