All Versions
10
Latest Version
Avg Release Cycle
71 days
Latest Release
5 days ago

Changelog History

  • v6.2.0 Changes

    June 05, 2026

    json2xml 6.2.0

    🚀 This release ships the serializer memory savings for both the pure Python package and the optional Rust accelerator.

    Highlights

    • ⬇️ Reduces peak memory in the pure Python rooted-output path by avoiding an intermediate output list.
    • ⬇️ Reduces peak memory in json2xml-rs by writing directly into Python bytes instead of materializing a large Rust string first.
    • ⚡️ Publishes json2xml-rs 0.3.0 and updates json2xml[fast] to require json2xml-rs>=0.3.0.
    • ⚡️ Updates the Rust extension crate to Rust 2024 with rust-version = 1.96.
    • 🛠 Fixes macOS cargo test linking by separating normal PyO3 tests from extension-module builds.

    Memory benchmark

    For the documented 100,000-record benchmark, the Rust serializer RSS delta dropped from 157.70 MiB to 80.26 MiB, saving 77.44 MiB, about 49.1%.

    See docs/rust_memory_benchmark.rst for methodology and reproduction details.

    🚀 Release order

    🚀 json2xml-rs 0.3.0 was published first via rust-v0.3.0, then this json2xml 6.2.0 release was published so json2xml[fast] resolves cleanly.

  • v6.1.0 Changes

    May 04, 2026

    What's Changed

    • 🛠 fix: address open contribution issues (#292)
    • 📄 docs: improve README and add public roadmap (#287)

    Full Changelog : v6.0.7...v6.1.0

  • v6.0.7 Changes

    April 25, 2026
    • 🛠 fix: handle JSON conversion edge cases and improve URL reader robustness (#284)
    • ✅ chore(deps-dev): bump pytest from 9.0.1 to 9.0.3 (#282)
  • v6.0.6 Changes

    April 08, 2026

    What changed

    • 🛠 Fixed review cleanup and removed a needless line in the recent conversion and test cleanup (#281, #280)
    • ➕ Added lat.md support to the codebase for architecture and test knowledge tracking (#279)
    • ⬆️ Bumped the docs dependency pygments from 2.19.1 to 2.20.0 (#278)
    • ⬆️ Upgraded the Python workflow to 3.12

    🚀 Rust release

    • 🚀 No new json2xml-rs release was published for 6.0.6
    • There were no commits under rust/ since rust-v0.2.0, so no new Rust tag was needed

    Full changelog

    v6.0.5...v6.0.6

  • v6.0.5 Changes

    March 12, 2026

    What changed

    • 🛠 Fixed double-escaping of XML attribute values for invalid key names
    • 🛠 Fixed Rust backend float formatting to match Python output
    • 🛠 Fixed iteration errors being swallowed in the Rust backend
    • Validated custom_root as a proper XML element name
    • ⬇️ Reduced Rust writer allocations and removed duplicated dispatch logic
    • ⬆️ Bumped pyo3 and Rust binding versions
    • ➕ Added the missing xmltodict dependency to the Rust CI workflow

    Full changelog

    v6.0.4...v6.0.5

  • v6.0.1 Changes

    January 16, 2026

    json2xml v6.0.1

    🚀 This release enables the [fast] optional dependency and includes comprehensive benchmark comparisons.

    🚀 Easy Rust Acceleration

    You can now install json2xml with Rust acceleration in a single command:

    pip install json2xml[fast]
    

    This automatically installs both json2xml and json2xml-rs.

    📊 Comprehensive Benchmark Results

    ✅ Tested on Apple Silicon, comparing all implementations:

    🐎 Performance Summary

    ✅ | Test Case | Python | Rust | Go | Zig | | --- | --- | --- | --- | --- | | Small (47B) | 40.12µs | 1.45µs | 4.65ms | 3.74ms | | Medium (3.2KB) | 2.14ms | 71.28µs | 4.07ms | 3.28ms | | Large (32KB) | 21.08ms | 739.89µs | 4.05ms | 6.11ms | | Very Large (323KB) | 212.61ms | 7.55ms | 4.38ms | 33.24ms |

    Speedup vs Pure Python

    ✅ | Test Case | Rust | Go | Zig | | --- | --- | --- | --- | | Small (47B) | 27.6x | 0.0x* | 0.0x* | | Medium (3.2KB) | 30.0x | 0.5x* | 0.7x* | | Large (32KB) | 28.5x | 5.2x | 3.5x | | Very Large (323KB) | 28.2x | 48.5x | 6.4x |

    *CLI tools have ~3-4ms process spawn overhead

    Key Findings

    1. Rust is best for Python users - ~28x faster with zero overhead
    2. Go excels for large CLI workloads - 48x faster for 300KB+ files
    3. CLI startup overhead matters - Go/Zig slower for small files due to process spawn

    📦 Installation Options

    # Pure Python (always works)pip install json2xml# With Rust acceleration (recommended)pip install json2xml[fast]
    

    🔗 Related Projects

    What's Changed

    • Enable [fast] optional dependency for easy Rust installation
    • ➕ Add comprehensive benchmark_all.py script
    • ⚡️ Update BENCHMARKS.md with Python/Rust/Go/Zig comparison

    Full Changelog : v6.0.0...v6.0.1

  • v6.0.0 Changes

    January 16, 2026

    json2xml v6.0.0 🚀

    🚀 Major Release: Native Rust Extension for 29x Faster Performance

    This release introduces an optional native Rust extension built with PyO3 that provides approximately 29x faster JSON to XML conversion compared to pure Python.

    ✨ Highlights

    • Optional Rust acceleration - Install json2xml-rs for blazing fast performance
    • Zero breaking changes - Pure Python version works exactly as before
    • Automatic backend selection - Use dicttoxml_fast module for auto-detection
    • Cross-platform wheels - Pre-built for Linux, macOS (Intel + Apple Silicon), Windows

    🐎 📊 Performance Benchmarks

    JSON Size Pure Python With Rust Speedup
    Small (47 bytes) 6.85 µs 0.21 µs 33x
    Medium (3.2KB) 160 µs 5.6 µs 28x
    Large (32KB) 1.59 ms 53 µs 30x
    Very Large (323KB) 16.4 ms 569 µs 29x

    📦 Installation

    # Pure Python (always works)pip install json2xml# With Rust acceleration (optional, recommended)pip install json2xml json2xml-rs
    

    🔧 Usage

    # Option 1: Auto-selecting wrapper (recommended)fromjson2xml.dicttoxml\_fastimportdicttoxmlxml=dicttoxml({"name":"John","age":30})# Option 2: Direct Rust import (fastest, requires json2xml-rs)fromjson2xml\_rsimportdicttoxmlxml=dicttoxml({"name":"John","age":30})# Option 3: Pure Python (always available)fromjson2xml.dicttoxmlimportdicttoxmlxml=dicttoxml({"name":"John","age":30})
    

    📁 New Files

    • rust/ - PyO3 Rust extension source code
    • json2xml/dicttoxml_fast.py - Auto-selecting wrapper module
    • tests/test_rust_dicttoxml.py - 84 comprehensive tests
    • 🐎 benchmark_rust.py - Performance comparison script
    • 🏗 .github/workflows/build-rust-wheels.yml - CI for building wheels
    • 👷 .github/workflows/rust-ci.yml - CI for Rust code quality

    ⚠ ⚠️ Rust Extension Limitations

    👍 The Rust implementation does not yet support:

    • ids parameter
    • item_func parameter
    • xml_namespaces parameter
    • xpath_format parameter
    • @attrs, @val, @flat special dict keys

    For these features, use the pure Python implementation or dicttoxml_fast (which auto-falls back).

    🔗 Related Projects

    📝 Full Changelog

    👀 See HISTORY.rst for complete changelog.


    Thank you to all contributors! 🙏

  • v5.4.0 Changes

    January 14, 2026

    What's Changed

    • ⚡️ feat: update python3.15.0 to alpha 3 by @vinitkumar in #260
    • 📄 chore(deps): bump urllib3 from 2.5.0 to 2.6.0 in /docs by @dependabot[bot] in #261
    • ⚡️ chore: update GitHub Actions to latest versions by @vinitkumar in #262
    • 📚 update documentation and make it more correct by @vinitkumar in #263
    • 📄 chore(deps): bump urllib3 from 2.6.0 to 2.6.3 in /docs by @dependabot[bot] in #265
    • 👍 feat: add CLI support for json2xml-py by @vinitkumar in #266

    Full Changelog : v5.3.1...v5.4.0

  • v5.1.0 Changes

    June 12, 2025

    What's Changed

    Full Changelog : v5.0.5...v5.1.0

  • v5.0.5 Changes

    August 31, 2024

    What's Changed

    • 📄 chore(deps): bump webob from 1.8.7 to 1.8.8 in /docs by @dependabot in #212
    • 🛠 fix missing encoding indication in pretty mode by @fmigneault in #213

    🆕 New Contributors

    Full Changelog : v5.0.4...v5.0.5