Add Documentation: Native Binaries, manylinux, ISA Compatibility & PyPy Support
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- build-system, documentation
Línea de trabajo
Comienza localizando la documentación de Sphinx, la documentación de instalación y la documentación de desarrollo o para contribuidores donde se pueda añadir y referenciar una nueva página. Verifica el comportamiento documentado frente al contenido del wheel, el flujo de trabajo de manylinux y auditwheel, el punto de entrada flatc incluido y el soporte de PyPy descrito en el issue; se considera terminado cuando el proceso de distribución nativa y las restricciones de compatibilidad estén explicados con claridad.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
📘 Add Documentation: Native Binaries, manylinux, ISA Compatibility & PyPy Support
See also: https://github.com/crossbario/zlmdb/issues/99
Summary
Both zlmdb and autobahn-python ship native code and native executables as part of their Python distributions:
- CFFI-based native extensions (LMDB)
- A bundled FlatBuffers compiler (
flatc) - Native wheels for x86-64 and ARM64
- First-class PyPy support
- Fully manylinux-compliant wheels verified with
auditwheel
This is powerful — but also subtle and non-obvious.
This issue proposes adding a dedicated documentation page explaining how and why native artifacts are built, bundled, verified, and distributed the way they are.
Motivation
From a user’s point of view, installation is intentionally simple:
pip install zlmdb
# or
pip install autobahn
Behind the scenes, however, a lot of careful engineering ensures that:
- wheels install without compilation
- binaries work across distributions
- PyPy works just as well as CPython
auditwheel repairsucceeds- ISA incompatibilities (e.g.
x86_64_v2) are avoided - users do not need system FlatBuffers, LMDB, or compilers
Without documentation, it is difficult for users and contributors to understand:
- why
flatcis bundled at all - why it is shipped inside the Python package
- why manylinux containers matter
- why baseline ISA flags are required
- why CFFI was chosen over CPython C-API
- why PyPy support “just works”
What This Documentation Should Explain
1. Native Components Shipped in the Wheel
Each wheel contains:
- A CFFI-based LMDB extension (
_lmdb_cffi.*.so) - A native
flatcexecutable, invoked via a Python wrapper - Vendored FlatBuffers Python runtime and reflection data
All of these are installed transparently into the environment.
2. manylinux and ISA Compatibility
Key constraints:
-
Wheels must run on a wide range of Linux distributions
-
auditwheelenforces:- ABI compatibility
- baseline CPU instruction sets
-
Compiling on a “modern” host can silently introduce:
x86_64_v2instructions (SSE4.2, etc.)- too-new symbol versions
Therefore:
- Builds are done in manylinux containers
- Baseline architecture flags are enforced
- Toolchains are chosen carefully
- Wheels are verified with
auditwheel repair
This ensures wheels are installable on older systems, not just CI hosts.
3. Bundled flatc: Why and How
Why bundle flatc?
- Avoid system dependencies
- Ensure schema ↔ compiler compatibility
- Guarantee reproducible builds
- Support hermetic CI and user installs
- Enable schema-driven workflows out of the box
How it is exposed:
flatcis shipped as a native executable inside the package- A Python console script (
flatc) dispatches to it - Works identically on CPython and PyPy
- No PATH manipulation required
4. PyPy as a First-Class Target
PyPy support is not accidental:
- LMDB is accessed via CFFI, not CPython C-API
- Native wheels are built and published for PyPy
- No fallback-to-sdist compilation required for users
From a user’s perspective:
pip install zlmdb
flatc --version
Just works — even on PyPy.
This deserves to be documented explicitly.
5. Dynamic vs Static Linking (and Why It Matters)
The documentation should clarify:
- Which libraries are dynamically linked (e.g.
libc) - Which are intentionally not statically linked
- Why auditwheel compatibility matters more than “fully static” binaries
- How symbol versions and ISA levels interact with manylinux
This context explains earlier design decisions and prevents future regressions.
Example: What Users Actually Get
After installation, users have:
- A working
flatcexecutable - A native LMDB backend
- No system-level dependencies required
- Identical behavior on CPython and PyPy
This is the goal, and the build system exists to make this boringly reliable.
Proposed Documentation Location
Add a new Sphinx page such as:
- “Native Binaries & manylinux Compatibility”
- “Native Code, Wheels, and PyPy Support”
- “How Native Components Are Built and Distributed”
This page should be referenced from:
- Installation docs
- Development / contributor docs
Why This Matters
Documenting this will:
- Reduce confusion around build complexity
- Help contributors avoid breaking manylinux compliance
- Explain why certain CI constraints exist
- Make PyPy support feel intentional (because it is)
- Turn “tribal knowledge” into durable documentation
Outcome
A clear explanation of:
- native binaries in Python wheels
- manylinux constraints
- ISA compatibility
- PyPy support
- why
flatcis bundled
This complements the higher-level architecture & data-plane documentation and completes the picture from design → implementation → distribution.
Checklist
- I have searched existing issues to avoid duplicates
- I have described the problem clearly
- I have provided use cases
- I have considered alternatives
- I have assessed impact and breaking changes
- Lenguaje dominante
- Python
- Estrellas
- 2.5k
- Forks
- 767
- Merge medio
- 23 h 55 min
- PR fusionados (30 d)
- 25
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de crossbario/autobahn-python
-
CI-CD enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
crossbario/autobahn-python#1945 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug CI-CD
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
crossbario/autobahn-python#1932 ·
Los mantenedores suelen responder en 1 día
-
CI-CD enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
crossbario/autobahn-python#1829 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug CI-CD
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
crossbario/autobahn-python#2013 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
crossbario/autobahn-python#1963 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de crossbario/autobahn-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
pydot/pydot#601 · 4 comentarios ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
letsencrypt/cp-cps#361 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
CI: startup_failure because callers grant fewer permissions than ledger-app-workflows@v1 declaresPosiblemente ocupada @maykonmichel la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
LedgerHQ/app-boilerplate-rust#227 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
linuxmint/mintupdate#1107 ·