This library contains basic functionality that is useful in code compiled
using the mypyc compiler, and efficient
C alternatives to various Python standard library classes and functions. Mypyc can
produce faster extensions when you use librt in the code you compile. librt also
contains some internal library features used by mypy.
Here are some feature highlights:
- librt.vecs defines the growable packed array-like type
vec - librt.strings defines fast string and bytes builders and binary data read/write helpers
- librt.base64 provides fast SIMD Base64 encoding/decoding
For more details, refer to librt documentation.
Report any issues in the mypyc issue tracker.
This repository is only used to build and publish the mypyc runtime library. Development
happens in the mypy repository. Code is then perodically
synced from the mypyc/lib-rt
subdirectory in the mypy repository.
Since this repo should be kept in sync with mypy, it has an unusual directory structure.
If you want to install from sources, it is recommended to use sdist wheel. If you want to
install directly form the repo, you will need to execute cp -r lib-rt/* . before install.
See issue #17 for discussion.
Unfortunatelly PyPy is not supported. If you develop a library that supports PyPy and you need
librt only as a mypy dependency, you can skip PyPy in your CI matrix when type checking
(since results of type checking will be identical on e.g. CPython 3.11 and PyPy 3.11).
See issue #16 for discussion.
- As a prerequisite, there generally will be some changes in the mypy repository under
mypyc/lib-rtthat you want to release. - Run the
sync-mypy.pyscript in this repository to sync changes from the mypy repository. - Bump the version number in
pyproject.tomlin this repository. - Update
smoke_tests.py(optional but recommended for new features). Here's how to run tests:- Activate a dedicated virtualenv (don't reuse your mypy virtualenv).
pip install -U ./lib-rtpip install pytest mypy-extensionspytest smoke_tests.py
- Commit and push (pushing directly to master is fine).
- Wait until all builds complete successfully (no release is triggered yet).
- Once builds are complete, tag the release (
git tag vX.Y.Z;git push origin vX.Y.Z). - Go to the "Actions" tab and click "Build wheels" on the left.
- Click "Run workflow" and pick the newly created tag from the drop-down list. This will build and upload the wheels.
- After the workflow completes, verify that
pip install -U librtinstalls the new version from PyPI. - Create a PR to update the
librtversion inmypy-requirements.txt,test-requirements.txtandpyproject.toml(dependencies, andrequiresunderbuild-system) in the mypy repository.
The process should take about 20 minutes.