Skip to main content

scraper-rs

PyPI - Version Tests PyPI Downloads

Python bindings for high-performance Rust HTML parsing via PyO3. It provides a lightweight Document/Element API with CSS selectors backed by rustedbytes-tl, XPath (via xee-xpath), handy helpers, and zero Python-side parsing work.

Install

pip install scraper-rust

# or using uv
uv add scraper-rust

Quick start

from scraper_rs import Document, first, prettify, select, select_first, xpath

html = """
<html><body>
  <div class="item" data-id="1"><a href="/a">First</a></div>
  <div class="item" data-id="2"><a href="/b">Second</a></div>
</body></html>
"""

doc = Document(html)
print(doc.text)  # "First Second"

items = doc.select(".item")
print(items[0].attr("data-id"))  # "1"
print(items[0].to_dict())  # {"tag": "div", "text": "First", "html": "<a...>", ...}

first_link = doc.select_first("a[href]")  # alias: doc.find(...)
print(first_link.text, first_link.attr("href"))  # First /a
print(doc.generate_css_selector(first_link))    # e.g. a[href="/a"]
print(doc.generate_xpath_selector(first_link))  # Robula+-style XPath, with positional fallback
links_within_first_item = items[0].select("a[href]")
print([link.attr("href") for link in links_within_first_item])  # ["/a"]

# XPath (element results only)
xpath_items = doc.xpath("//div[@class='item']/a")
print([link.text for link in xpath_items])  # ["First", "Second"]
print(doc.xpath_first("//div[@data-id='1']/a").attr("href"))  # "/a"

# Functional helpers
links = select(html, "a[href]")
print([link.attr("href") for link in links])  # ["/a", "/b"]
print(first(html, "a[href]").text)  # First
print(select_first(html, "a[href]").text)  # First
print(
    [link.text for link in xpath(html, "//div[@class='item']/a")]
)  # ["First", "Second"]
print(prettify(html))

For runnable samples, see examples/demo.py and examples/demo_prettify_url.py. Quick URL prettify demo:

python examples/demo_prettify_url.py https://example.com --max-lines 80

Async usage

The scraper_rs.asyncio module exposes an async-first surface for coroutine code. AsyncDocument stores shareable HTML/text state instead of a thread-affine sync Document, and all selectors are awaitable for consistent async calling style:

import asyncio
from scraper_rs import asyncio as scraping_async

html = "<div class='item'><a href='/a'>First</a></div>"


async def main():
    async with await scraping_async.parse(html) as doc:
        items = await doc.select(".item")
        first_link = await items[0].select_first("a[href]")
        print(first_link.text)  # First

    links = await scraping_async.select(html, "a[href]")
    print([link.attr("href") for link in links])  # ["/a"]


asyncio.run(main())

All async functions accept the same keyword arguments as their sync counterparts (max_size_bytes, truncate_on_limit, etc.). CPU-bound async parsing and selection work is offloaded through the Rust async core onto Rayon worker threads so concurrent coroutines do not run that work on the event-loop thread. AsyncDocument supports async with for automatic cleanup in coroutine code, and AsyncElement / AsyncDocument both expose async .prettify() helpers.

Large documents and memory safety

To avoid runaway allocations, parsing defaults to a 1 GiB cap. Pass max_size_bytes to override:

from scraper_rs import Document, select

doc = Document(html, max_size_bytes=5_000_000)  # 5 MB guard
links = select(html, "a[href]", max_size_bytes=5_000_000)

If you want to parse a limited portion of an oversized HTML document instead of rejecting it entirely, use truncate_on_limit=True:

# Parse only the first 100KB of a large HTML document
doc = Document(large_html, max_size_bytes=100_000, truncate_on_limit=True)
links = doc.select("a[href]")  # Will only find links in the first 100KB

# Also works with top-level functions
items = select(large_html, ".item", max_size_bytes=100_000, truncate_on_limit=True)

Note: Truncation happens at valid UTF-8 character boundaries to prevent encoding errors.

API highlights

  • Document(html: str) / Document.from_html(html) parse HTML for CSS and keep the DOM; XPath parsing is initialized lazily on first XPath query.
  • .select(css) → list[Element], .select_first(css) / .find(css) → first Element | None, .css(css) is an alias.
  • .xpath(expr) / .xpath_first(expr) evaluate XPath expressions that return element nodes.
  • .generate_css_selector(element) and .generate_xpath_selector(element) generate selectors for elements returned by the same Document CSS API. CSS generation returns None when its bounded search finds no unique selector supported by the current CSS subset; this is not a proof that no selector exists. XPath uses a scraping-oriented Robula+-style search ranked for stability: semantic data-*/ARIA/item metadata and semantic ancestors are preferred over generated IDs and presentation classes; link/media paths can ignore query churn and relative-vs-absolute URL changes; short normalized text can identify attribute-less targets; positional XPath remains a late fallback. The search is capped at 256 candidates and 12 attributes per node; uniqueness and target identity are checked in the normalized XPath DOM.
  • .prettify() renders the current DOM as an indented string for readable output/debugging.
  • .text returns normalized text; Document.html is the original input HTML; Element.html is inner HTML.
  • scraper_rs.asyncio exposes async parse/select/xpath wrappers plus awaitable AsyncDocument / AsyncElement methods.
  • Element exposes .tag, .text, .html, .attrs plus helpers .attr(name), .get(name, default), .to_dict().
  • Elements support nested CSS and XPath selection via .select(css), .select_first(css), .find(css), .css(css), .xpath(expr), .xpath_first(expr).
  • Elements also expose .prettify() to format element HTML with indentation.
  • Top-level helpers mirror the class methods: parse(html), prettify(html), select(html, css), select_first(html, css) / first(html, css), xpath(html, expr), xpath_first(html, expr).
  • Parse-tree helpers parse_document(html) and parse_fragment(html) return rustedbytes-tl backed structural dictionaries for callers that need node data.
  • CSS selection uses the native rustedbytes-tl selector subset: tag, id, class, *, attribute selectors, comma selectors, descendants, and direct children.
  • max_size_bytes lets you fail fast on oversized HTML; defaults to a 1 GiB limit.
  • truncate_on_limit allows parsing a truncated version (limited to max_size_bytes) of oversized HTML instead of raising an error.
  • Call doc.close() (or with Document(html) as doc: ...) to free parsed DOM resources when you're done.
  • In async workflows, use async with await scraper_rs.asyncio.parse(html) as doc: ... for automatic AsyncDocument cleanup.

Installation

CPython wheels target abi3 (CPython 3.10+). Version-specific wheels are also published for PyPy 3.11 and 3.12. To build locally with the active interpreter:

# Install maturin (uv is used in this repo, but pip works too)
pip install maturin

# Build a wheel
maturin build --release --compatibility linux

# PyPy builds must disable the CPython-only abi3 feature
maturin build --release --compatibility linux --no-default-features

# Install the generated wheel
pip install target/wheels/scraper_rust-*.whl

If you have just installed, the repo includes helpers: just build (local wheel), just install-wheel (install the built wheel), and just build_manylinux (via the official maturin Docker image).

Projects Using scraper-rs

Development

Requirements: Rust toolchain, CPython 3.10+ or PyPy 3.11+, uv, maturin, pytest, and pytest-asyncio for tests.

  • Run tests: just test or uv run pytest tests/
  • Format code: just fmt (or cargo fmt --all and uv run ruff format)
  • Lint Rust: just lint (or cargo clippy --all-targets --all-features -- -D warnings)
  • The PyO3 module name is scraper_rs; the Rust crate is built as cdylib.

Contributions and issues are welcome. If you add public API, please extend the relevant tests, type stubs, docs, and examples accordingly.

Metadata

Release files for scraper-rust 0.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scraper-rust 0.16.0
File Size Uploaded
scraper_rust-0.16.0.tar.gz 96.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for scraper-rust 0.16.0
File
scraper_rust-0.16.0-pp312-pypy312_pp80-win_amd64.whl PyPy 3.12 PyPy 3.12 8.0 Windows x86-64 Details
scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_x86_64.whl PyPy 3.12 PyPy 3.12 8.0 Linux glibc 2.28+ x86-64 Details
scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_aarch64.whl PyPy 3.12 PyPy 3.12 8.0 Linux glibc 2.28+ ARM64 Details
scraper_rust-0.16.0-pp312-pypy312_pp80-macosx_11_0_arm64.whl PyPy 3.12 PyPy 3.12 8.0 macOS 11.0+ ARM64 Details
scraper_rust-0.16.0-pp311-pypy311_pp80-win_amd64.whl PyPy 3.11 PyPy 3.11 8.0 Windows x86-64 Details
scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_x86_64.whl PyPy 3.11 PyPy 3.11 8.0 Linux glibc 2.28+ x86-64 Details
scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_aarch64.whl PyPy 3.11 PyPy 3.11 8.0 Linux glibc 2.28+ ARM64 Details
scraper_rust-0.16.0-pp311-pypy311_pp80-macosx_11_0_arm64.whl PyPy 3.11 PyPy 3.11 8.0 macOS 11.0+ ARM64 Details
scraper_rust-0.16.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
scraper_rust-0.16.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 26.5 MB

Release files / scraper_rust-0.16.0.tar.gz

Download URL scraper_rust-0.16.0.tar.gz
Size 96.6 kB
Tags Source
SHA-256 checksum
How to use checksums
798e2ec380f1fe6fe728e6bf89dd4697e1716707df35c4dff8a7e803c4b0bbef
BLAKE2b-256 checksum
How to use checksums
b42146b01461b43c212c63ec64d9eb6162a318aa1a37aeb94d0d6e625eb276d0
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp312-pypy312_pp80-win_amd64.whl

Download URL scraper_rust-0.16.0-pp312-pypy312_pp80-win_amd64.whl
Size 2.1 MB
Tags PyPy 3.12 PyPy 3.12 8.0 Windows x86-64
SHA-256 checksum
How to use checksums
1e470353ef97749c48ab6217e439d3078e13ba5ee8290a18d51374f3b992fca0
BLAKE2b-256 checksum
How to use checksums
cd3120e96f21c670e72dcc0229e981f859d5ef94aa2c6bf6622c66e503072274
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_x86_64.whl

Download URL scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.12 PyPy 3.12 8.0
SHA-256 checksum
How to use checksums
390a1fd611735b63a58f3e10dbedcd877f7f51950c83c18f03c13fcc1494ce9c
BLAKE2b-256 checksum
How to use checksums
d3b662727b7ce3eb41f2cb90a131e8eabff26426a6c4c0480936ba9fcee3e1a2
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_aarch64.whl

Download URL scraper_rust-0.16.0-pp312-pypy312_pp80-manylinux_2_28_aarch64.whl
Size 2.3 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.12 PyPy 3.12 8.0
SHA-256 checksum
How to use checksums
23559b3964a02a19ee313abb1b7d616edaf1977c3e98514c09520b79b830a5da
BLAKE2b-256 checksum
How to use checksums
e339ceb2bd70528202e2788e814d459991e8853775d35c87820946bdc84ad10b
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp312-pypy312_pp80-macosx_11_0_arm64.whl

Download URL scraper_rust-0.16.0-pp312-pypy312_pp80-macosx_11_0_arm64.whl
Size 2.1 MB
Tags PyPy 3.12 PyPy 3.12 8.0 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c14ebe8465ea63c0601770d23f63ee4051ac8664e562dcbd493216426372cdf5
BLAKE2b-256 checksum
How to use checksums
239b73c7bfbc099311883d88a65ec45363aae00201dab7b2ab6830f877bfea6b
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp311-pypy311_pp80-win_amd64.whl

Download URL scraper_rust-0.16.0-pp311-pypy311_pp80-win_amd64.whl
Size 2.1 MB
Tags PyPy 3.11 PyPy 3.11 8.0 Windows x86-64
SHA-256 checksum
How to use checksums
a479e4b2eb1c4db4efba5592ff8fd249a9f5efaaf90ec632330d0fd8b6d3198f
BLAKE2b-256 checksum
How to use checksums
2575b82ef750855eaf8594ad75364b2bf4909e46975892c277442fd132801778
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_x86_64.whl

Download URL scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_x86_64.whl
Size 2.3 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.11 PyPy 3.11 8.0
SHA-256 checksum
How to use checksums
7cab05f0f3f90093217078dd3b2a3d178e751f7bd7f756adac6b74113da4ae7c
BLAKE2b-256 checksum
How to use checksums
753305125027dbaef9a916cfd09525d0d384d80079fb38718e91c55a37703581
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_aarch64.whl

Download URL scraper_rust-0.16.0-pp311-pypy311_pp80-manylinux_2_28_aarch64.whl
Size 2.2 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 8.0
SHA-256 checksum
How to use checksums
d58c70de2a462c031129e9fde91a565fd9bd2ee6e881a1fd71088bd77096181f
BLAKE2b-256 checksum
How to use checksums
06d83d2db9321296b5b9219bcaa9ee3d9300b04ac6d766ae8c90af90e713074b
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-pp311-pypy311_pp80-macosx_11_0_arm64.whl

Download URL scraper_rust-0.16.0-pp311-pypy311_pp80-macosx_11_0_arm64.whl
Size 2.1 MB
Tags PyPy 3.11 PyPy 3.11 8.0 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0ea3ad627fb05c3f0ae763341a221297130839a0517908a4ab96f8613fbf9a31
BLAKE2b-256 checksum
How to use checksums
f8a50f316943559b8cf0f1ce8a2433e2632f8864df781dd999e253930ab951e7
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-cp310-abi3-win_amd64.whl

Download URL scraper_rust-0.16.0-cp310-abi3-win_amd64.whl
Size 2.1 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
cb32ecba6840bd4d19935600de464d874f89cc7ef0257a10d2783cb9a9c044f2
BLAKE2b-256 checksum
How to use checksums
fb25f9468cc0a86fedc751c14835480f9847439f87d77ca370e55f83596c8d30
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.3 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
a093872efe63016f79066810679cdbd7111bee4f89afa49790ab23f8c4a8dbf9
BLAKE2b-256 checksum
How to use checksums
ddb53147b39ed32c4148e8cdf18f5ddaa99c0fe12052554fbf0bbb6de9cc815e
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL scraper_rust-0.16.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
2d05cbff1abc292ee01b8a3a52539e3db7175ab9e25d8622b91ca019d5ce8f46
BLAKE2b-256 checksum
How to use checksums
e896dadd05fc52af06b95a5b7240d09a4487fe23b463da93793d296d05d8101c
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 Oct 7, 2026.

Transparency log

Release files / scraper_rust-0.16.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL scraper_rust-0.16.0-cp310-abi3-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5642f8346c381ce6366eb65466a703cb1d79ead5ff16e60cbfd5059c24a6c7d7
BLAKE2b-256 checksum
How to use checksums
7210dfd803f60b9d8082a944efbfe06462fbeb0fa221f7ac0d2bace2879a4649
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 Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.16.0 This release

13 release files

0.11.0

5 release files

0.10.0

5 release files

0.9.0

5 release files

0.7.0

5 release files

0.6.0

5 release files

0.5.1

5 release files

0.5.0

5 release files

0.4.3

7 release files

0.4.2

7 release files

0.4.1

10 release files

0.4.0

10 release files

0.3.3

10 release files

0.3.2

10 release files

0.3.1

10 release files

0.3.0

10 release files

0.2.19

8 release files

0.2.17

6 release files

0.2.16

4 release files

0.2.14

4 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page