Arity 
Arity is a language server, formatter, and linter for the R programming language, built in Rust on a lossless, incremental parser. It provides a fast, deterministic development experience that integrates with popular code editors and IDEs.
- Formatter: deterministic, rule-based formatting toward the tidyverse style guide, with idempotent output and roxygen support.
- Linter: correctness, readability, and performance rules, many with safe autofixes.
- Language server: formatting, diagnostics with quick fixes, hover, completion, signature help, go-to-definition and references, rename, document and workspace symbols, semantic tokens, folding, and call hierarchy.
Installation
Arity is available from several sources:
- crates.io:
cargo install arity - Homebrew:
brew install jolars/tap/arity - npm:
npm install -g arity-cli(bundles a prebuilt binary) - PyPI:
uv tool install arity/pipx install arity - Aqua:
aqua install jolars/arity - Prebuilt binaries: from the releases page
- VS Code/Open VSX: the Arity extension (also works in Positron)
- Arch Linux:
pacman -S arity-bin(orarity) (from the AUR:arity-bin,arity)
Install script
The install scripts download the Arity release asset for your platform, installing to a user-local directory by default. If you prefer, download and inspect the script before running it.
For macOS and Linux:
curl --proto '=https' --tlsv1.2 -LsSf \
https://raw.githubusercontent.com/jolars/arity/refs/heads/main/scripts/arity-installer.sh | sh
For Windows PowerShell:
powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/jolars/arity/refs/heads/main/scripts/arity-installer.ps1 | iex"
Set ARITY_INSTALL_DIR to change the destination, ARITY_TAG to pin a version,
and ARITY_LIBC (gnu or musl) to override the detected libc on Linux.
Formatter
To format your code, you can use:
arity format [file]arity format --verify [file]arity format --check <path> [<path> ...]
Linter
To lint your code, you can use:
arity lint <path> [<path> ...]
arity lint reads from stdin when given no paths, and exits non-zero when it
reports any findings.
Configuration
Arity reads an optional arity.toml, discovered by walking up from each file's
directory to the repository root. Run arity init to scaffold a commented
starter file. See the configuration
reference for every key.
Editor integration
arity lsp starts a stdio-based language server offering formatting,
diagnostics with quick fixes, hover, completion, signature help,
go-to-definition and references, rename, document and workspace symbols,
semantic tokens, folding, and call hierarchy.
The Arity extension for VS Code/Open VSX (and Positron) bundles the binary and starts the server automatically. For Neovim, Helix, and other editors, see the editor setup guide.
Pre-commit hook
arity-pre-commit provides pre-commit hooks for linting and formatting. It installs a prebuilt binary wheel from PyPI, so no Rust toolchain or R installation is required:
repos:
- repo: https://github.com/jolars/arity-pre-commit
# arity version
rev: v0.13.0
hooks:
# Lint .R files
- id: arity-lint
# Format the same files in place
- id: arity-format
GitHub Actions
arity-action installs arity and runs format and lint checks in CI:
jobs:
arity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: jolars/arity-action@v1
Acknowledgements
The core architecture of Arity is entirely based on rust-analyzer, using salsa for incremental computation and rowan for lossless syntax trees. Arity also owes a great debt to air, on which it is heavily inspired and from which it has borrowed tests, rules, and formatting style. It is also inspired by jarl and has borrowed rules from it as well as some of its architecture.
Documentation
Full documentation lives at arity.cc:
Release files for arity 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arity-0.15.0.tar.gz | 984.5 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| arity-0.15.0-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| arity-0.15.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| arity-0.15.0-py3-none-musllinux_1_2_x86_64.whl | Python 3 | none | Linux musl 1.2+ x86-64 | Details |
| arity-0.15.0-py3-none-musllinux_1_2_aarch64.whl | Python 3 | none | Linux musl 1.2+ ARM64 | Details |
| arity-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| arity-0.15.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| arity-0.15.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| arity-0.15.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size:36.8 MB
Release files / arity-0.15.0.tar.gz
| Download URL | arity-0.15.0.tar.gz |
|---|---|
| Size | 984.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79b45279a795b7f1a0f8d5d01bdf4746b052d868075c0c35cd6c159a967d2cb7
|
|
BLAKE2b-256 checksum How to use checksums |
4713db9ece7de8c211ed78ccea024b676295539c6bd477852ee96e7ac2a2204c
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-win_arm64.whl
| Download URL | arity-0.15.0-py3-none-win_arm64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
b966da5beec1300abdc34472394676bc8352150b115221ba15e9d56511be1c68
|
|
BLAKE2b-256 checksum How to use checksums |
26d35e597a98192a0e4967291878d6094390ff75b04fdf1dee688c8b7d587460
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-win_amd64.whl
| Download URL | arity-0.15.0-py3-none-win_amd64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
036aa5ef9917d247773e10a4ec7089e4c0b83cc06119b05c397775af77cd84e0
|
|
BLAKE2b-256 checksum How to use checksums |
4977d4a66dba7870ccaa1cc64618687cbf44ac930f593f62a492670eb60a899d
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-musllinux_1_2_x86_64.whl
| Download URL | arity-0.15.0-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.7 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
f174ffa6e622bdea9b008ec675aaae01a44fb45b1dc873b8e3b63c413e225977
|
|
BLAKE2b-256 checksum How to use checksums |
3bb15e508cc8b91bd85ea155db6a745c0aae836ec8d90cfaaf0c9ada3c116357
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-musllinux_1_2_aarch64.whl
| Download URL | arity-0.15.0-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
92bf189c3e3794972da335f21e826ec9efd5defbd1a30dadfcd206b22a69c496
|
|
BLAKE2b-256 checksum How to use checksums |
8141b3eb0c623a97754cdd7218799060226de6bb1be1ebd1905432e5c9b9bc6d
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | arity-0.15.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
18e38e7e780a69d715219a778d68690d4b75aeac466120bfaa5a9d7659d02f41
|
|
BLAKE2b-256 checksum How to use checksums |
c9c95721eefc0ee3e25dc21dcdd6d06b9b1d6c85226c8bc41a2c05b3ac791514
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | arity-0.15.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
44407db09bc33a30a26ecd5f78b8964d5c3ec6e24b7b42499364861e2c755776
|
|
BLAKE2b-256 checksum How to use checksums |
5c329ea82f2968411efcfbe7c2b3e184d778dbcd1838804699a9dbfa20d263fb
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-macosx_11_0_arm64.whl
| Download URL | arity-0.15.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3d292724c63ecf236db05bd3e20d1c5d160f8bd6bf86e0d920b7f75e7ca1a521
|
|
BLAKE2b-256 checksum How to use checksums |
1ced61c70dcfc57ab7471d295fb085560ebf81792606235b5349320f3eb28a38
|
| 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 Aug 5, 2026.
Transparency logRelease files / arity-0.15.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | arity-0.15.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.5 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
060796c978a70170c86ad3b3f9526df1a1e40998728ae912cd222d61dc7d2385
|
|
BLAKE2b-256 checksum How to use checksums |
425eea0474df0787907085c754e21f5b060a36955143b2398d542c5dcb24664e
|
| 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 Aug 5, 2026.
Transparency log