skillfed

rpds-py

Python bindings to Rust's persistent data structures (rpds)

rpds-py Permissive license MIT Active v2026.6.3 released

Install

rpds-py on PyPI

pip

pip install rpds-py

uv

uv add rpds-py

poetry

poetry add rpds-py

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.11)
Install friction medium — platform-specific wheel
Runtime dependencies none
Maintenance actively maintained — 44 days since the last release
First released
Popularity one of the 100 most-downloaded packages on PyPI (30-day window, as of 2026-08-13)
Known vulnerabilities none known (OSV.dev, checked 2026-08-13)

Evidence: rpds_py-2026.6.3-cp311-cp311-macosx_10_12_x86_64.whl; rpds_py-2026.6.3-cp311-cp311-macosx_11_0_arm64.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_31_riscv64.whl; rpds_py-2026.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl; rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_aarch64.whl; rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_i686.whl; rpds_py-2026.6.3-cp311-cp311-musllinux_1_2_x86_64.whl; rpds_py-2026.6.3-cp311-cp311-win32.whl; rpds_py-2026.6.3-cp311-cp311-win_amd64.whl; rpds_py-2026.6.3-cp311-cp311-win_arm64.whl; rpds_py-2026.6.3-cp312-cp312-macosx_10_12_x86_64.whl; rpds_py-2026.6.3-cp312-cp312-macosx_11_0_arm64.whl; rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; rpds_py-2026.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl

Keywords: data structures, rust, persistent

Development Status :: 3 - AlphaIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.15Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyProgramming Language :: Rust

About rpds-py

from the package's own PyPI description — quoted content, verbatim

=========== rpds.py ===========

|PyPI| |Pythons| |CI|

.. |PyPI| image:: https://img.shields.io/pypi/v/rpds-py.svg :alt: PyPI version :target: https://pypi.org/project/rpds-py/

.. |Pythons| image:: https://img.shields.io/pypi/pyversions/rpds-py.svg :alt: Supported Python versions :target: https://pypi.org/project/rpds-py/

.. |CI| image:: https://github.com/crate-py/rpds/workflows/CI/badge.svg :alt: Build status :target: https://github.com/crate-py/rpds/actions?query=workflow%3ACI

.. |ReadTheDocs| image:: https://readthedocs.org/projects/referencing/badge/?version=stable&style=flat :alt: ReadTheDocs status :target: https://referencing.readthedocs.io/en/stable/

Python bindings to the Rust rpds crate <https://docs.rs/rpds/>_ for persistent data structures.

What's here is quite minimal (in transparency, it was written initially to support replacing pyrsistent in the referencing library <https://github.com/python-jsonschema/referencing>_). If you see something missing (which is very likely), a PR is definitely welcome to add it.

Installation

The distribution on PyPI is named rpds.py (equivalently rpds-py), and thus can be...

Read as markdown · JSON record · Source repository · Homepage · Docs

AI interpretation — verify before relying

AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page

rpds-py provides Python bindings to Rust's rpds crate, offering persistent (immutable) data structures including hash trie maps, hash trie sets, and linked lists with structural sharing for efficient memory use.

Medium install friction due to Rust compilation requirement at build time; wheels are pre-built for common platforms (CPython 3.11–3.15, multiple architectures) but source installs need a Rust toolchain. Package is actively maintained with a recent release 44 days ago.

MIT license permits commercial and private use with minimal restrictions, making it suitable for most projects.

Usage

pip install rpds-py

from rpds import HashTrieMap, HashTrieSet, List

m = HashTrieMap({"foo": "bar"})
m_updated = m.insert("baz", "quux")

s = HashTrieSet({"a", "b"})
s_updated = s.insert("c")

L = List([1, 2, 3])
L_updated = L.push_front(0)

Requires Python ≥3.11; if installing from source, a Rust toolchain must be available at build time.

Verdict: rpds-py is a well-maintained, actively developed binding to a mature Rust library, offering high-performance persistent data structures with no runtime dependencies. The MIT license is permissive, and pre-built wheels minimize friction on common platforms. Suitable for projects needing efficient immutable collections, though source builds require Rust.

Needs verification

  • Performance characteristics compared to pyrsistent or standard Python collections in typical use cases
  • Completeness of the rpds crate API surface exposed by the Python bindings
  • Community adoption and real-world usage patterns beyond the referencing library
persistent immutable data structuresrust rpds python bindingshash trie map setstructural sharing collectionsfunctional data structures pythonimmutable list map setpyrsistent alternative

Similar packages