• [Python-announce] zlmdb v25.10.1 released

    From Tobias Oberstein@[email protected] to comp.lang.python.announce on Fri Nov 7 10:43:04 2025
    From Newsgroup: comp.lang.python.announce

    Hi all,

    I'd like to share a new release of zlmdb: LMDB for Python with PyPy Support, Binary Wheels, and Vendored Dependencies.

    - **📦 PyPI:** https://pypi.org/project/zlmdb/25.10.1/
    - **📖 Docs:** https://zlmdb.readthedocs.io/en/latest/
    - **💻 GitHub:** https://github.com/crossbario/zlmdb
    - **📋 Full Announcement:** https://github.com/crossbario/zlmdb/discussions/73

    ## What is zlmdb?

    zlmdb provides two APIs in one package:

    1. **Low-level py-lmdb compatible API** - Drop-in replacement for py-lmdb with the same interface
    2. **High-level ORM API** - Type-safe persistent objects with automatic serialization

    ## Why this release is interesting

    **🔋 Batteries Included - Zero Dependencies**
    - Vendored LMDB (no system installation needed)
    - Vendored Flatbuffers (high-performance serialization built-in)
    - Just `pip install zlmdb` and you're ready to go!

    **🐍 PyPy Support**
    - Built with CFFI (not CPyExt) so it works perfectly with PyPy
    - Near-C performance with JIT compilation
    - py-lmdb doesn't work on PyPy due to CPyExt dependency

    **📦 Binary Wheels for Everything**
    - CPython 3.11, 3.12, 3.13, 3.14 (including free-threaded 3.14t)
    - PyPy 3.11
    - Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), Windows (x64)
    - No compilation required on any platform

    **⚡ Performance Features**
    - Memory-mapped I/O (LMDB's legendary speed)
    - Zero-copy operations where possible
    - Multiple serializers: JSON, CBOR, Pickle, Flatbuffers
    - Integration with Numpy, Pandas, and Apache Arrow

    ## Quick Example

    ```python
    # Low-level API (py-lmdb compatible)
    from zlmdb import lmdb

    env = lmdb.open('/tmp/mydb')
    with env.begin(write=True) as txn:
    txn.put(b'key', b'value')

    # High-level ORM API
    from zlmdb import zlmdb

    class User(zlmdb.Schema):
    oid: int
    name: str
    email: str

    db = zlmdb.Database('/tmp/userdb')
    with db.begin(write=True) as txn:
    user = User(oid=1, name='Alice', email='[email protected]')
    txn.store(user)
    ```

    ## When to use zlmdb?

    - ✅ Need PyPy support (py-lmdb won't work)
    - ✅ Want zero external dependencies
    - ✅ Building for multiple platforms (we provide all wheels)
    - ✅ Want both low-level control AND high-level ORM
    - ✅ Need high-performance embedded database

    zlmdb is part of the [WAMP project family](https://wamp-proto.org/) and used in production by [Crossbar.io](https://crossbar.io/).
    --- Synchronet 3.21a-Linux NewsLink 1.2