Skip to content

chore: release json2xml 6.3.0#319

Merged
vinitkumar merged 1 commit into
masterfrom
release/json2xml-6.3.0
Jun 10, 2026
Merged

chore: release json2xml 6.3.0#319
vinitkumar merged 1 commit into
masterfrom
release/json2xml-6.3.0

Conversation

@vinitkumar

@vinitkumar vinitkumar commented Jun 10, 2026

Copy link
Copy Markdown
Owner

json2xml 6.3.0 and json2xml_rs 0.4.0

Released 2026-06-10.

Highlights

  • Reduced allocation pressure in the pure Python serializer hot paths for dicts, lists, scalar values, XML names, and emitted attributes.
  • Kept the Python and Rust release line aligned: json2xml[fast] now requires json2xml-rs>=0.4.0.
  • Documented the Rust memory benchmark in enough detail to reproduce the 100,000-record RSS measurement and understand the throughput tradeoff.

Why Upgrade

This release is focused on large conversion workloads. The 6.2.0 Rust release moved accelerator output directly into Python bytes to reduce peak serializer memory; 6.3.0 follows that with Python-side allocation reductions so fallback and unsupported-option paths also benefit.

No XML shape changes are intended. Existing callers should see the same output for supported options, including invalid-name normalization, @attrs/@val handling, list wrapping, XPath mode, and pure Python fallback behavior.

Package Versions

  • Python package: json2xml==6.3.0
  • Rust accelerator package: json2xml-rs==0.4.0
  • Fast install: pip install "json2xml[fast]"

Changelog

  • feat: reduce pure Python serializer allocations in hot dict, list, and scalar paths.
  • feat: preserve XML output semantics while reusing validated element-name and attribute work.
  • perf: lower peak memory pressure for large conversions after the 6.2.0 Rust bytes-writer release.
  • docs: add hyperfine Rust memory benchmark notes with reproduction details and the measured throughput tradeoff.
  • chore: release json2xml-rs 0.4.0 and require it from json2xml[fast] for accelerated installs.

Verification

The release changes are covered by the existing serializer, fast-backend, and Rust parity tests. The benchmark documentation records the measurement setup separately from the functional test suite so release consumers can reproduce performance results on their own hardware.

Summary by Sourcery

Release json2xml 6.3.0 and json2xml_rs 0.4.0 with aligned Python and Rust packages and updated performance documentation.

New Features:

  • Reduce allocations in pure Python serializer hot paths while preserving existing XML output semantics.

Enhancements:

  • Align the Python fast extra requirement with the new json2xml_rs 0.4.0 accelerator release.
  • Clarify architecture and packaging documentation around version alignment and release notes location.
  • Update Rust performance notes to describe the 0.4.0 allocator and RSS improvements over 0.3.0.

Build:

  • Bump Python package version to 6.3.0 and Rust accelerator versions to 0.4.0 in project metadata.

Documentation:

  • Add RELEASE_NOTES.md summarizing the 6.3.0 / 0.4.0 release, rationale, and benchmark details.

@sourcery-ai

sourcery-ai Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Release json2xml 6.3.0 and json2xml_rs 0.4.0, aligning Python and Rust package versions/requirements and updating release and benchmark documentation to reflect the new Rust accelerator behavior and memory characteristics.

File-Level Changes

Change Details Files
Bump Python and Rust package versions and align the fast extra requirement with the new accelerator release.
  • Update the core Python package version from 6.2.0 to 6.3.0 in project metadata and package init
  • Update the Rust accelerator crate and wheel metadata from 0.3.0 to 0.4.0
  • Tighten the json2xml[fast] extra requirement to depend on json2xml-rs>=0.4.0
pyproject.toml
json2xml/__init__.py
rust/Cargo.toml
rust/pyproject.toml
Refresh Rust README and architecture docs to describe the 0.4.0 allocator and release processes, including release-note locations.
  • Describe json2xml_rs 0.4.0 as building on the direct Python bytes writer with lower allocation pressure and clarify its relationship to the 0.3.0 improvements
  • Clarify that Python and Rust versions are kept aligned via requirements and explicitly document where Python, Rust, and release-note versions live
rust/README.md
lat.md/architecture.md
Add standalone release notes for the 6.3.0 / 0.4.0 release, including performance and verification details.
  • Introduce RELEASE_NOTES.md capturing highlights, upgrade rationale, package versions, changelog bullets, and verification strategy for this release
RELEASE_NOTES.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@vinitkumar vinitkumar merged commit d23ab0f into master Jun 10, 2026
57 of 58 checks passed
@codecov

codecov Bot commented Jun 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (0355496) to head (ec224ce).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##            master      #319   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            6         6           
  Lines          616       616           
=========================================
  Hits           616       616           
Flag Coverage Δ
unittests 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant