freastal
A fast WSGI/ASGI server for Python, built as a C extension on top of libuv and picohttpparser. Optional TLS 1.3 via picotls.
Freastal (IPA: /ˈfʲɾʲasˠtəl/) is Irish Gaelic for "service."
Performance
Regenerate with bench/compare/run.sh, which runs every server in a Linux
container under identical conditions and writes this table plus a JSON record.
See bench/compare/README.md for the method.
| Platform | aarch64, Debian GNU/Linux 13 (trixie) (kernel 7.0.12-linuxkit) |
| CPU | Apple M5 Max, 18 available |
| Python | 3.12.14 |
| libuv | 1.52.1 |
| Load | wrk -t4 -c40, 30s x 3 rounds (median), loopback |
| Versions | gunicorn 23.0.0, uvicorn 0.34.0 (uvloop + httptools), bjoern 3.2.2 |
| freastal | b1b4b69 |
500B response
| Server | Protocol | TLS | Workers | Req/s | p50 | p99 | vs baseline | between | within |
|---|---|---|---|---|---|---|---|---|---|
| gunicorn+uvicorn | ASGI | no | 1 | ~112k | 318us | 672us | 1.00x | 6% | 4% |
| bjoern | WSGI | no | 1 | ~256k | 150us | 249us | 2.28x | 2% | 3% |
| freastal | WSGI | no | 1 | ~357k | 103us | 215us | 3.18x | 4% | 10% |
| freastal | ASGI | no | 1 | ~277k | 133us | 271us | 2.48x | 3% | 8% |
| freastal | WSGI | yes | 1 | ~302k | 123us | 244us | 2.70x | 5% | 8% |
| freastal | ASGI | yes | 1 | ~238k | 158us | 292us | 2.13x | 3% | 9% |
| gunicorn+uvicorn | ASGI | no | 4 | ~374k | 94us | 225us | 1.00x | 3% | 7% |
| bjoern | WSGI | no | 4 | ~786k | 39us | 123us | 2.10x | 6% | 5% |
| freastal | WSGI | no | 4 | ~856k | 34us | 122us | 2.29x | 2% | 4% |
| freastal | ASGI | no | 4 | ~799k | 39us | 126us | 2.14x | 10% | 5% |
| freastal | WSGI | yes | 4 | ~778k | 40us | 129us | 2.08x | 7% | 5% |
| freastal | ASGI | yes | 4 | ~762k | 40us | 125us | 2.04x | 3% | 5% |
12KB response
| Server | Protocol | TLS | Workers | Req/s | p50 | p99 | vs baseline | between | within |
|---|---|---|---|---|---|---|---|---|---|
| gunicorn+uvicorn | ASGI | no | 1 | ~106k | 334us | 714us | 1.00x | 4% | 7% |
| bjoern | WSGI | no | 1 | ~220k | 176us | 260us | 2.08x | 2% | 2% |
| freastal | WSGI | no | 1 | ~319k | 114us | 241us | 3.01x | 3% | 10% |
| freastal | ASGI | no | 1 | ~261k | 143us | 286us | 2.47x | 6% | 9% |
| freastal | WSGI | yes | 1 | ~190k | 200us | 405us | 1.79x | 2% | 8% |
| freastal | ASGI | yes | 1 | ~163k | 233us | 444us | 1.54x | 2% | 12% |
| gunicorn+uvicorn | ASGI | no | 4 | ~353k | 101us | 219us | 1.00x | 5% | 6% |
| bjoern | WSGI | no | 4 | ~621k | 51us | 141us | 1.76x | 2% | 5% |
| freastal | WSGI | no | 4 | ~802k | 39us | 108us | 2.27x | 8% | 4% |
| freastal | ASGI | no | 4 | ~757k | 42us | 126us | 2.14x | 4% | 7% |
| freastal | WSGI | yes | 4 | ~512k | 65us | 157us | 1.45x | 8% | 4% |
| freastal | ASGI | yes | 4 | ~508k | 66us | 176us | 1.44x | 5% | 3% |
How to read this. between is the spread across the three interleaved
rounds, within is wrk's own per-thread variation inside a run. Both are
published because a median over scattered samples looks more precise than it
is. At one worker every row above is cleanly separated. At four workers the
middle of the pack is not: freastal ASGI, bjoern, and both TLS variants all
land within a few percent of each other at 500B, and their per-round ranges
overlap, so treat their ordering as unresolved rather than as shown.
These are comparative figures on one host over loopback, not absolute capacity.
wrk saturates the server rather than holding a fixed rate, so the latency
columns are queueing latencies under overload.
The application sets Content-Length explicitly and uvicorn is installed with
its [standard] extras (uvloop + httptools). Both matter: without the header
bjoern falls back to chunked encoding and collapses to ~1k rps, and without the
extras uvicorn runs on plain asyncio and h11 at roughly a third of its real
throughput. Benchmarking either misconfiguration would flatter freastal by a
large factor.
Installation
Pre-built wheels for Linux (x86_64, aarch64) and macOS (arm64, x86_64) are available on PyPI:
pip install freastal
Building from source requires libuv ≥ 1.44, a C compiler, and (optionally) OpenSSL for TLS support. See Building from source.
Usage
WSGI
import freastal
def app(environ, start_response):
body = b"Hello, world!"
start_response("200 OK", [("Content-Type", "text/plain")])
return [body]
freastal.serve(app, host="0.0.0.0", port=8000, workers=4)
ASGI
import freastal
async def app(scope, receive, send):
await send({"type": "http.response.start", "status": 200,
"headers": [[b"content-type", b"text/plain"]]})
await send({"type": "http.response.body", "body": b"Hello, world!"})
freastal.serve_asgi(app, host="0.0.0.0", port=8000, workers=4)
TLS 1.3
freastal.serve(app, host="0.0.0.0", port=8000, workers=4,
certfile="/path/to/cert.pem", keyfile="/path/to/key.pem")
TLS requires OpenSSL headers at build time. Wheels published to PyPI include TLS support.
Workers
workers=N starts N server processes. The listening socket is bound once, in the
parent, and handed to every worker, so a bind failure is reported once from
serve() rather than N times inside the workers.
Two things follow from that:
- The app must be picklable — in practice a module-level callable. The
spawnstart method (macOS's default, and whatforkserverdoes too, which becomes Linux's default in 3.14) re-imports the child rather than inheriting it, so the app travels to the worker as a pickled argument. reuse_portis a tri-state. Unset (the default) enablesSO_REUSEPORTonly where it earns its keep: more than one worker, on a kernel that load-balances the group.Truedemands it and raises where it cannot be honoured.Falsenever uses it, and the workers share one accept queue instead — which works everywhere.
SO_REUSEPORT load-balances TCP listeners on Linux, FreeBSD, DragonFly and
Solaris. macOS accepts the option and then delivers every connection to a
single socket in the group, which is why libuv refuses UV_TCP_REUSEPORT
there and why reuse_port=True is an error rather than a no-op.
Session resumption. Session tickets are on: a returning client skips the certificate signature, the most expensive part of the handshake. Tickets are good for 2 hours, and the key that seals them is rotated hourly and kept for three rotations, so a compromise of the server process exposes at most the last 3 hours of tickets rather than every ticket since boot. Resumption always re-runs (EC)DHE, so a stolen ticket key does not decrypt recorded traffic.
0-RTT early data is deliberately not enabled and is not configurable: early data is replayable by design, and a general-purpose WSGI/ASGI server cannot know whether an application's handlers are idempotent.
The ticket key is per worker process. With workers > 1 behind SO_REUSEPORT the kernel picks the worker, so a resuming client hits the one that issued its ticket roughly 1/workers of the time and otherwise falls back to a full handshake — the same handshake it would have done anyway. Sharing one key across workers needs an operator-supplied key rotated out of band; freastal has no interface for that yet.
Architecture
- libuv — cross-platform event loop; io_uring-ready on Linux (libuv ≥ 1.45 batches syscalls automatically)
- picohttpparser — SSE4.2/NEON SIMD HTTP/1.1 parser from the h2o project; vendored
- picotls — TLS 1.3 library from the h2o project; vendored, gated by
FREASTAL_TLS. The vendored tree is upstream at a pinned commit plus the patches invendor/patches/, rebuilt byscripts/vendor_picotls.sh - Single
uv_writeper response — headers and body sent together, no extra copy - HTTP/1.1 keep-alive: connections re-armed in-place without close/reopen;
TCP_NODELAYset on every accepted socket - Slab allocator for per-connection state — no per-request malloc on the hot path
- Pre-interned Python strings for all WSGI/ASGI environ keys
- GIL released for the duration of the libuv event loop; acquired only when calling the WSGI/ASGI application and touching Python response objects
SO_REUSEPORT(UV_TCP_REUSEPORT) for kernel-level load balancing across worker processes, where the kernel supports it
Multi-process model: workers=N starts N independent OS processes, each with its own libuv loop and Python interpreter (and therefore its own GIL). Where SO_REUSEPORT load-balances, each worker gets its own accept queue; elsewhere the workers share the single listening socket the parent bound. See Workers.
ASGI event loop bridge (libuv ↔ asyncio):
freastal runs asyncio inside the libuv event loop rather than the other way around. A uv_check_t steps asyncio after each I/O poll; a uv_poll_t on asyncio's selector fd wakes libuv when external async I/O (database calls, aiohttp, etc.) completes.
Building from source
# macOS
brew install libuv openssl@3
pip install freastal --no-binary freastal
# Debian/Ubuntu
apt-get install libuv1-dev libssl-dev
pip install freastal --no-binary freastal
picohttpparser and picotls are vendored — no extra steps required.
Requirements
- Python ≥ 3.10
- Linux or macOS
- libuv ≥ 1.44 (shared library, found via pkg-config or standard include paths)
- OpenSSL (optional, for TLS 1.3)
License
MIT
Metadata
Release files for freastal 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| freastal-0.0.3.tar.gz | 309.6 kB | Details |
Built distributions (wheels)
Total release size: 29.7 MB
Release files / freastal-0.0.3.tar.gz
| Download URL | freastal-0.0.3.tar.gz |
|---|---|
| Size | 309.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59c52bd23fc983bdf8bf838ea94917a675d895f8b9a79fa6b6e108fb2330a8a0
|
|
BLAKE2b-256 checksum How to use checksums |
fa6ce2e1079d7726be54ad6b2502b0b056f72f6737d58e1b3f7b90d5e8e8e689
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | freastal-0.0.3-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
083b8dbedac77de964010db11cc1e9c1eac3fcad9d675b317bd01cbad9c60705
|
|
BLAKE2b-256 checksum How to use checksums |
83d795770647219221b616f0ef2529722e84a788e98f5cb0b1abad13b6cd64c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | freastal-0.0.3-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fae1bd65d70c16f698149ae804149ec65ee0ab7a5d879d4a17c11925da73f6e9
|
|
BLAKE2b-256 checksum How to use checksums |
7f288d5349fc63aea40a1a7562ebce3f1d2fd930d07db2c6d6da3b89643822e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp313-cp313-macosx_26_0_x86_64.whl
| Download URL | freastal-0.0.3-cp313-cp313-macosx_26_0_x86_64.whl |
|---|---|
| Size | 224.9 kB |
| Tags | CPython 3.13 macOS 26.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
7901eb373d837f01179a6562e262167fafd7fba8f44793650ed507ad9d7c5a11
|
|
BLAKE2b-256 checksum How to use checksums |
46f5ec6c473f16de2f519715d4ca1ae59ff21d4dc36a43cce955ffc2e66b3d1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp313-cp313-macosx_26_0_arm64.whl
| Download URL | freastal-0.0.3-cp313-cp313-macosx_26_0_arm64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.13 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
479a6cf72dbbfafbfe8ad58ef35c1f3d94b4f19420ae69eacf18097e446b4821
|
|
BLAKE2b-256 checksum How to use checksums |
06a8154302879a62ac7d5f3c3f5f2e6d3db06e57f426a5c7af3311e9215bfd11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | freastal-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
306ef06e9762490a0f64de8ba7020817505c64856e64c55e66516fe7fdfcab97
|
|
BLAKE2b-256 checksum How to use checksums |
8e93c9228b8aaa20116ceb497d4301229a75f974a2c32012a4b91cd14c0115a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | freastal-0.0.3-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
8ca26935604ff3c080fc44b3b3682bef26f436bfaa14341202df4aebd0d491ec
|
|
BLAKE2b-256 checksum How to use checksums |
d2367494af3c42d8ffe9ec5fe33896fc4edb73e76c7faf2d6aa31a3e0ec85cfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp312-cp312-macosx_26_0_x86_64.whl
| Download URL | freastal-0.0.3-cp312-cp312-macosx_26_0_x86_64.whl |
|---|---|
| Size | 224.9 kB |
| Tags | CPython 3.12 macOS 26.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
4c923647d27395403a92c4ba37db5be29c82b141ac21ffa75c9b625d5ddb5817
|
|
BLAKE2b-256 checksum How to use checksums |
e5bda6919d260f72b8ee57622721c48409f7ff501a2a6d824870ab3faa8296c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp312-cp312-macosx_26_0_arm64.whl
| Download URL | freastal-0.0.3-cp312-cp312-macosx_26_0_arm64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.12 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
340c6c3411e5466289c20c32a299104a34eb16c8cc44af7af59e3e89edbe58fa
|
|
BLAKE2b-256 checksum How to use checksums |
8da6ab1a1c83072674ede474969f6a58934f3432407537a3ff3cf985e84a697f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | freastal-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4ec7a050a45cbab26c192495e5b8bd1e7d4fbb173e0980bcc589f09b0c7958fc
|
|
BLAKE2b-256 checksum How to use checksums |
c0c319f64565f95b4523569d4f6b45b34860795a553821bf4133f486409d40aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | freastal-0.0.3-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
db306ebd644173ab6347a8ebf7023b97e0a62c4c56a5bf081fbcc7a7ba6ecca1
|
|
BLAKE2b-256 checksum How to use checksums |
afbd7ef4059e034eae79b09fc81d9e61957e744a1c482687aeded0266393ae48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp311-cp311-macosx_26_0_x86_64.whl
| Download URL | freastal-0.0.3-cp311-cp311-macosx_26_0_x86_64.whl |
|---|---|
| Size | 224.1 kB |
| Tags | CPython 3.11 macOS 26.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
9b5bd0fddc074637f844f5a898d8d0ec4885773c3826aceebd45e4e5d4512769
|
|
BLAKE2b-256 checksum How to use checksums |
d5eefde25a96ca445a26f9a67ec5f433dbb1d763e9918dcc8c828d2e02643915
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp311-cp311-macosx_26_0_arm64.whl
| Download URL | freastal-0.0.3-cp311-cp311-macosx_26_0_arm64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.11 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
49947c07650a2e7c634866402b2cf64b347409217d149b0994c32ca7c08b544e
|
|
BLAKE2b-256 checksum How to use checksums |
88a6e86098d0daf5bc21d2c98331a0dc914da7f9643007226633b3de11e9dc2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | freastal-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
35e80272d5e890d539f70f692d0dc4c74c2ac61d0ce706381ea9b290392c405d
|
|
BLAKE2b-256 checksum How to use checksums |
70ec5f274d982ceea28f8fec5ce8ff8ad7f326cfdd5d38d724425fc49738f895
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | freastal-0.0.3-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
1e96f7683e22ac093c7762f062b5625cbed4c7782955bcb354e8f2bc85db9bd4
|
|
BLAKE2b-256 checksum How to use checksums |
ee423081ee852a525090d4c53cc2c01d92726a3f54c10c907470a4010540c990
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp310-cp310-macosx_26_0_x86_64.whl
| Download URL | freastal-0.0.3-cp310-cp310-macosx_26_0_x86_64.whl |
|---|---|
| Size | 224.3 kB |
| Tags | CPython 3.10 macOS 26.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
dd4adc0f944e60faae05a5507439b020be63b860e937efec92bb7bb1057de96f
|
|
BLAKE2b-256 checksum How to use checksums |
71343d8f566509bce809e0d5ae068bf532c9ae4b32d798b19ee739f6367f0db8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / freastal-0.0.3-cp310-cp310-macosx_26_0_arm64.whl
| Download URL | freastal-0.0.3-cp310-cp310-macosx_26_0_arm64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.10 macOS 26.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1e4f0f07a0ecbc244317d96fbf6ddd214f5dd14e1f4c9ee76fa48d1a82ecedc3
|
|
BLAKE2b-256 checksum How to use checksums |
198ce25e2a73c79c0faa2bd65afaf074eee60abf0c9fc15fd6cf5f19f6b6c63f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency log