goldbaum at Nathans-MBP in ~
○ pip install fastar
Collecting fastar
Downloading fastar-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl.metadata (4.0 kB)
Downloading fastar-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl (627 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 627.8/627.8 kB 9.3 MB/s 0:00:00
Installing collected packages: fastar
Successfully installed fastar-0.8.0
[notice] A new release of pip is available: 25.3 -> 26.0.1
[notice] To update, run: pip install --upgrade pip
goldbaum at Nathans-MBP in ~
○ python
Python 3.14.3 free-threading build (main, Feb 10 2026, 08:41:08) [Clang 17.0.0 (clang-1700.6.3.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import fastar
<frozen importlib._bootstrap>:491: RuntimeWarning: The global interpreter lock (GIL) has been enabled to load module 'fastar.fastar', which has not declared that it can run safely without the GIL. To override this behavior and keep the GIL disabled (at your own risk), run with PYTHON_GIL=0 or -Xgil=0.
The free-threaded build requires extensions to explicitly declare that they support running without the GIL, otherwise this RuntimeWarning happens on import.
In a project using PyO3, you can set gil_used = false in your pymodule declaration. You can also update to PyO3 0.28 or newer to opt into this behavior by default.
I don't see any uses of unsafe impl in the crate itself, so I think you can rely on PyO3 and guarantees provided by the underlying Rust libraries. It probably wouldn't hurt to add some multithreaded tests though. It'd also probably be a good idea to look at what the multithreaded safety story is for the flate2, tar, and zstd crates.
The free-threaded build requires extensions to explicitly declare that they support running without the GIL, otherwise this
RuntimeWarninghappens on import.In a project using PyO3, you can set
gil_used = falsein yourpymoduledeclaration. You can also update to PyO3 0.28 or newer to opt into this behavior by default.I don't see any uses of
unsafe implin the crate itself, so I think you can rely on PyO3 and guarantees provided by the underlying Rust libraries. It probably wouldn't hurt to add some multithreaded tests though. It'd also probably be a good idea to look at what the multithreaded safety story is for theflate2,tar, andzstdcrates.