Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The package matching this topic is spelled frozndict—without the second “e” in “frozen.” It is a Rust-backed project offering Python and Node.js bindings. It is not the separate Python package spelled frozendict, nor the built-in type specified for Python 3.15 by PEP 814. Knowing which one you mean matters: their features and APIs are not interchangeable.

What is frozndict?

frozndict is a third-party immutable hashmap project whose PyPI description says it is powered by Rust and PyO3. The project describes its mapping as immutable, hashable, thread-safe, and insertion-ordered, and lists installation routes for Python and Node.js. These are the project’s stated features, not an independent verification of its performance or behavior in every environment.

The spelling is easy to confuse with frozendict, which has an established Python package and is also the name used by Python’s proposed built-in type. Treat these as three distinct identities:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Identity What it is What the cited source establishes
frozndict Third-party Rust-backed project for Python and Node.js PyPI lists pip install frozndict, npm i frozndict, and other package channels. Its listing states Python 3.12 or later and shows version 2.1.1 files dated 19 September 2026. Package support and releases can change. PyPI project page
Python package frozendict A separate immutable, dict-like Python package Its documentation describes hashing when all values are hashable, pickle support, and persistent-style methods such as set and delete. Those details apply to this package, not automatically to frozndict. PyPI project page
Python built-in frozendict A standard-library type specified by PEP 814 for Python 3.15 PEP 814 records an accepted resolution dated 11 February 2026. The proposal is separate from both PyPI projects. PEP 814

What does an immutable mapping do?

A mapping associates keys with values; Python’s ordinary dict lets code add, replace, and remove those associations. An immutable mapping prevents changes to those key/value associations after construction. That can be useful when a value should be safe to share without another part of the program changing its entries, or when the mapping itself needs to serve as a key in a dictionary or an element in a set.

PEP 814 also identifies hashable mappings as useful for arguments to functools.lru_cache() and for immutable defaults in function parameters. The built-in proposal specifies support for the collections.abc.Mapping protocol and pickling. These are proposed built-in semantics; do not assume they describe every third-party implementation.

Immutability does not necessarily make values immutable

Immutability is shallow unless the values are immutable too. An immutable outer mapping can still contain a list or another mutable object, and that nested object can still change. PEP 814 allows non-hashable values; if any value makes the mapping unhashable, the mapping itself cannot be hashed. A mapping that cannot be hashed cannot be used as a dictionary key or set element.

How does the Python 3.15 built-in differ?

PEP 814, “Add frozendict built-in type,” proposes adding frozendict to Python’s builtins for Python 3.15. Its authors, Victor Stinner and Donghee Na, describe it in the abstract as: “A new public immutable type frozendict is added to the builtins module.” The accepted proposal is a specification for Python’s built-in type, not proof that the third-party frozndict package is built into Python.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Under the PEP’s specification, the built-in preserves insertion order, while equality and hashing do not depend on item order. It supports equality comparisons with an ordinary dict. Its | merge operator returns a new frozendict, with the right-hand value taking precedence when a key appears in both mappings. Constructing it from a dict makes a shallow copy, so nested mutable values remain mutable.

How can you install the third-party project?

The project lists these package-manager commands:

  • Python: pip install frozndict
  • Node.js: npm i frozndict

Its PyPI listing states Python 3.12 or later and shows version 2.1.1 files dated 19 September 2026. These are listing details, not a promise of support for every Python version, operating system, or hardware platform. Check the current package listing and your runtime and platform before adopting it. See the frozndict PyPI listing.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What does the performance benchmark show?

The project publishes a microbenchmark using 1,000-element dictionaries, comparing Python dict, immutables.Map, the established C-backed frozendict, and frozndict. The table reports seconds per operation in a configured x86-64 Linux environment. Its results are mixed: Python dict leads in construction and lookup, while frozndict leads in iteration and copy, according to the project’s table. Read the project’s benchmark and documentation.

These are project-published microbenchmark results, not an independent replication or a general performance guarantee. A benchmark of one mapping size and configured environment cannot establish which option will be fastest or most memory-efficient for a different application. The project’s “world’s most memory-efficient” description is its own promotional claim; the cited comparison does not independently establish that ranking. Test representative data and operations on the platforms you intend to use if performance determines your choice.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Which immutable mapping should you choose?

  • Choose the built-in when you want Python’s standard type: PEP 814 specifies a Python 3.15 built-in named frozendict. Check the Python version you actually run and consult the PEP for the specified semantics.
  • Consider frozndict when you need its project’s package channels: it lists Python and Node.js bindings, as well as Rust and Linux channels. Verify current runtime and platform support against the package listing.
  • Consider the separate Python frozendict package when its documented API fits: its documentation describes methods such as set and delete that return new mappings. Do not assume those methods exist in the similarly spelled Rust-backed package.
  • Check whether you need hashability or only protection from reassignment: hashability depends on the values, and shallow immutability does not freeze nested objects.
  • Benchmark your own workload when speed or memory matters: construction, lookup, iteration, copying, and memory use can produce different results; the published 1,000-element comparison is not a universal ranking.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.