Skip to content

Changelog

Office Oxide follows semver. Pre-1.0, minor versions may include breaking changes — they will always be called out here.

0.1.0 — Initial release

The first public release. Six formats, six bindings.

Highlights

  • Six formats: DOCX, XLSX, PPTX, plus legacy DOC, XLS, PPT — pure-Rust core, no JVM, no external binaries.
  • Six bindings: Rust, Python, Node.js (native via koffi), Node.js / browser (WASM), Go (cgo), C# / .NET (P/Invoke), C FFI.
  • One unified Document API across formats and bindings — extension detection, magic-byte sniffing, the same method names everywhere.
  • EditableDocument with replace_text (DOCX, PPTX) and set_cell (XLSX) — preserves all unmodified OPC parts on save.
  • to_markdown / to_html / to_ir for every format — designed for LLM and RAG pipelines.
  • save_as for transparent legacy → OOXML conversion (DOC → DOCX, XLS → XLSX, PPT → PPTX).
  • CLI (office-oxide) and MCP server (office-oxide-mcp) — same engine, different runtimes.

Performance

Benchmarked on 6,062 real-world files:

  • DOCX: 0.8 ms mean, 14× faster than python-docx
  • XLSX: 5.0 ms mean, 2.8× faster than python-calamine, 18× faster than openpyxl
  • PPTX: 0.7 ms mean, 46× faster than python-pptx
  • DOC: 0.3 ms mean, 14× faster than catdoc
  • XLS: 2.8 ms mean, 13× faster than xlrd
  • PPT: 0.7 ms mean, 4× faster than catppt
  • Overall pass rate: 98.4% across 6,062 files; zero failures on legitimate Office documents

Distribution

Licensing

Dual-licensed under MIT OR Apache-2.0 at your option. No AGPL, no GPL, no copyleft restrictions. Use freely in commercial and open-source projects.


For full details, see the GitHub releases page.