Skip to main content

GSFit: Grad-Shafranov Fit

BSD-3-Clause License

Rust Rust coverage: Rust tests Rust coverage: Python tests Rust coverage: Rust + Python tests dependency status

Python 3.11|3.12|3.13|3.14|3.15 Python coverage: Python tests Ruff ty Checked with mypy

GSFit is a modern tokamak equilibrium reconstruction tool for post-shot experimental analysis and scientific interpretation. Developed by Tokamak Energy Ltd. for use on ST40, the world's highest field spherical tokamak.

The Grad-Shafranov equation is the equilibrium solution to the ideal, single-fluid, MHD equations, assuming axisymmetry. The Grad-Shafranov equation has two free degrees of freedom, often referred to as the source functions: the pressure gradient p_prime and ff_prime, where f gives rise to the poloidal plasma current. GSFit uses diagnostics, most importantly the magnetics, to simultaneously solve the non-linear Grad-Shafranov equation while optimising the p_prime and ff_prime degrees of freedom to minimise the difference between the experimental "measured" values and the "calculated" values. More details about the algorithms used can be found in the excellent paper J.-M. Moret, et. al., "Tokamak equilibrium reconstruction code LIUQE and its real time implementation", Fusion Eng. Design, 91, 2015.

GSFit's numerical solver is written in Rust for speed and robustness, and the user interface / set-up is written in Python for its convenience.

The goal of GSFit is high accuracy, not performance; when something can be calculated accurately, it should be calculated accurately regardless of computational cost.

GSFit uses the COCOS 13 coordinate system, as described in O. Sauter and S. Y. Medvedev, "Tokamak Coordinate Conventions: COCOS", Comput. Phys. Commun. 184, 2013. Where, in summary, flux is measured in weber, and the poloidal angle increases counterclockwise, starting from the outboard mid-plane.

Why Rust and Python?

Rust is a compiled, high-performance language, nearly as fast as C and Fortran. It includes modern tooling such as a package manager and centralised registry (cargo and crates.io), autoformatting (rustfmt), and has testing built into the language. Rust enforces strict ownership rules, making programs extremely memory efficient without requiring any extra effort. These rules also eliminate entire classes of memory issues. Additionally, Rust has zero-cost abstractions, allowing object-oriented programming (implementations) to be used without a performance penalty. For more information, the official Rust book gives a complete introduction to the language with examples.

Python is ubiquitous within the fusion industry. Using Python allows easy integration into existing workflows. For example, in examples/example_02_mastu_with_synthetic_data_from_freegsnke.ipynb, we reconstruct an equilibrium using synthetic "measured" data produced by the open source forward Grad-Shafranov solver FreeGSNKE.

1. Installation and environment

1.1 Python environment

GSFit can be run on Python 3.11, 3.12, 3.13, and 3.14.

uv is both an environment and package manager and is recommended. There are several other Python virtual environment providers which should work, but we have not tested against them.

# Install the `uv` environment and package manager
python -m pip install uv

# Creating and activating a virtual environment, called `venv_gsfit`
uv venv --python=3.13
source .venv/bin/activate

1.2 Installing from PyPI

GSFit is available on the PyPI package registry as a pre-compiled binary. The binary is compiled for Linux, macOS, and Windows. For Linux the "manylinux2014" build system is used, which typically can be run on any Linux machine newer than 2014.

All of the packages GSFit depends on are listed in the pyproject.toml. These are divided into essential packages which are always required for any run and optional packages which can be installed for different purposes. An example of optional packages are machine-specific database readers.

# Install GSFit from the PyPI package registry, with only the essential packages
uv pip install gsfit
# or install GSFit from the PyPI package registry, with the "developer" packages
uv pip install gsfit[dev]
# or install GSFit with reading/writing to/from ST40's experimental database
uv pip install gsfit[with_st40_mdsplus]  # (this will only work within Tokamak Energy's network)
# or any combination
uv pip install gsfit[dev,with_st40_mdsplus]

1.3 Compiling and installing from source code on Linux

# Install the Rust compiler (only needs to be done once)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.4 Compiling and installing from source code on macOS

# Install the Rust compiler (only needs to be done once)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.5 Compiling and installing from source code on Windows

# Download and install Rust compiler
# run rustup-init.exe from https://www.rust-lang.org/tools/install

# Clone a copy of GSFit from GitHub
git clone git@github.com:tokamak-energy/gsfit.git
cd gsfit

# Install GSFit
uv pip install --reinstall --editable .
# or install with the "developer" packages, such as `pytest` and `mypy`
uv pip install --reinstall --editable .[dev]

1.6 IDE

VS Code is the recommended IDE for GSFit.

A particularly useful extension is rust-analyzer, which "is a part of a larger rls-2.0 effort to create excellent IDE support for Rust."

The PyO3 crate requires Python>=3.7. On machines where the python3 command links to an unsupported Python version, you can change the following file: ~/.vscode-server/data/Machine/settings.json to point to your desired Python's "standard library files", which will be similar to:

{
    "rust-analyzer.server.extraEnv": {
        "PYO3_CROSS_LIB_DIR": "/home/<user.name>/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib"
    }
}

and Python's "standard library files" directory can be found by:

python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))"

2. GSFit program layout and flow

2.1 Initialisation

GSFit's solver and numerics are programmed in Rust, with the initialisation done within Python.

The communication between Python and Rust is handled by the PyO3 crate. From the Python side the integration is seamless, and a general user would not know if a function / class is written in Python or Rust. In a similar way, a user interacting with numpy does not know if they are calling Python, C or Fortran.

GSFit has the following implementations (which are similar to classes):

  • coils for the PF and TF coils. This object contains the geometry; measured values; and reconstructed values
  • passives for the toroidally conducting structures, such as the vacuum vessel and passive plates. passives also contains the degrees of freedom allowed for the passive conductors
  • plasma contains a $(R, Z)$ grid and the reconstructed equilibrium
  • bp_probes contains the Mirnov coils: geometry; measured values; which sensors to use in the reconstruction and their weights; and the reconstructed values
  • flux_loops the toroidal flux loops. Note the units are in weber.
  • rogowski_coils measuring toroidal currents
  • isoflux contains two time-dependent $(R, Z)$ coordinates which have equal poloidal flux
  • isoflux_boundary contains a time-dependent $(R, Z)$ coordinate which has the same poloidal flux as the plasma boundary. This can be used if we have measurements of where the strike point is, for example if there is an IR camera

All of these implementations are initialised from Python. As a result, all of the database access is contained within Python, and any pre-processing such as filtering or smoothing experimental data can also be done within Python.

Below is a reproduction of examples/example_01_st40_with_experimental_data.py.

# Note, this example will only run inside Tokamak Energy's network

from gsfit import Gsfit

# Construct the GSFit object
gsfit_controller = Gsfit(
    pulseNo=12050,
    run_name="TEST01",
    run_description="Test run",
    write_to_mds=True,
    settings_path="default",
)

# Run (solve the inverse Grad-Shafranov equation, and if requested write to database)
gsfit_controller.run()

To improve reliability and traceability, the number of arguments needed to initialise the gsfit_controller object is deliberately kept to a minimum. The settings_path="default" argument tells GSFit to use the settings (JSON files) from this directory python/gsfit/settings/default/. By storing all the settings needed to run GSFit in JSON files allows changes to be tracked through Git.

2.2 Adding a new experimental device or coupling to a new forward Grad-Shafranov code

The information needed to run GSFit comes from two sources:

  1. python/gsfit/settings/: Contains parameters in JSON files, such as:
    • the maximum number of iterations,
    • which magnetic sensors to use in the reconstruction,
    • the degrees of freedom given to p_prime and ff_prime,
    • and which database_reader to use.
  2. python/gsfit/database_readers/: Connects to machine-specific databases to read experimental results in, such as:
    • geometry and current in poloidal field coils
    • measured signals from magnetic sensors
    • isoflux constraints

These two sources of information are combined to initialise the Rust objects needed to run GSFit (as described in section 2.1).

Writing to the database is done through python/gsfit/database_writers/, in a similar format to database_readers.

Included are the settings and readers for ST40's experimental data, and synthetic data produced by FreeGS and FreeGSNKE simulations. We welcome and are happy to include configurations for other devices.

2.3 Where are the Green's tables stored?

We can classify objects as either "current sources" or "sensors".

  • coils, passives, and plasma are "current sources".
  • bp_probes, flux_loops, rogowski_coils, isoflux, and plasma are "sensors".

Note, plasma is both a current source and a sensor; this is because it contains the plasma current and the 2D (R, Z) grid where we want to take measurements on.

Principles about where data should be:

  • "sensors" contain the Green's tables.
  • "current sources" contain the currents.

The sensors and currents are linked by names; every magnetic probe and PF coil must have a unique name.

2.4 Decision on coils vs PSUs

On many tokamaks, including ST40, several PF coils are connected to a single PSU. For ST40 we have the BVLT and BVLB PF coils, both connected to the BVL PSU.

Several equilibrium reconstruction codes treat the PSU current as a measurement with an associated degree of freedom. To allow for this degree of freedom we would need to tell GSFit which PF coil is connected to which PSU. This is quite burdensome and to keep GSFit simple to initialise, we have decided to only consider "coils". The work-around, if you want to have the PSU currents as a degree of freedom, is to combine all of the PF coils connected to a single power supply into a single coil. On ST40 we could create a PF coil called BVL_combined which contains both BVLT and BVLB.

3. Advanced building

GSFit is intended to be a Python library, where the Rust code is called from Python (Python is not called from within Rust). The advantage of this is that the Rust binary does not need to link agains libpython-dev which is not always installed on all machines.

However, for testing, where the Rust code is run as it's own executable, not from within Python, we must link to Python!

4. Planned future development

  • Interfacing to and from IMAS & OMAS.
  • More kinetic sensors, such as MSE, polarimeters, and interferometers.

5. Citing GSFit

We intend on publishing a paper on GSFit. While GSFit is unpublished, please cite it as "P. F. Buxton, GSFit, https://github.com/tokamak-energy/gsfit, 2025"

Please use the GSFit nomenclature, not GS-Fit, GSFIT, or g/s fit.

Metadata

Release files for gsfit 0.0.9

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

Source distribution (sdist)

Source distribution for gsfit 0.0.9
File Size Uploaded
gsfit-0.0.9.tar.gz 2.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for gsfit 0.0.9
File
gsfit-0.0.9-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
gsfit-0.0.9-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.9-cp315-cp315-macosx_11_0_arm64.whl CPython 3.15 CPython 3.15 macOS 11.0+ ARM64 Details
gsfit-0.0.9-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gsfit-0.0.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.9-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
gsfit-0.0.9-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gsfit-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.9-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
gsfit-0.0.9-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gsfit-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.9-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
gsfit-0.0.9-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gsfit-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
gsfit-0.0.9-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 34.5 MB

Release files / gsfit-0.0.9.tar.gz

Download URL gsfit-0.0.9.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
8c5db90b7ab4f10783fcf3292e57652f72213b53124e112be4354b6d0b9e31a5
BLAKE2b-256 checksum
How to use checksums
dad31175695be9d47a0fb4d543d02c3fb20fa768c4005f79ee3372d6fee78ebb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp315-cp315-win_amd64.whl

Download URL gsfit-0.0.9-cp315-cp315-win_amd64.whl
Size 2.3 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
da8d30b0d1ca6b16165caf9178d660782a72d18543efaf3354d94f3a03987493
BLAKE2b-256 checksum
How to use checksums
4f1cdcae27c60b9579dab6bddd9691e2b4c224ae71c9cb5f8c1e69d2f27eabdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.9-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
af3117b54a378630343e0909ac138fab5002776d75344784ad1fe58b2128ffa8
BLAKE2b-256 checksum
How to use checksums
75d7edfa655c639651f80746990e890d2b5d7bea830fa106a8721fdf0f5b0c49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp315-cp315-macosx_11_0_arm64.whl

Download URL gsfit-0.0.9-cp315-cp315-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.15 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
869c46d6d6a5e2440dc6d1e23439ac61248046052c3cdcd9f2f019fc4f752558
BLAKE2b-256 checksum
How to use checksums
480b2830eaeff1b024ffbd7985e5b5923467f6af9ac3c8e839a2a69d2e853c40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp314-cp314-win_amd64.whl

Download URL gsfit-0.0.9-cp314-cp314-win_amd64.whl
Size 2.3 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
a742d97dd4bc16987545c1431207c16751da9ff675f62e6baa54f514e3b48214
BLAKE2b-256 checksum
How to use checksums
dbec05effed3ff2242484c1299a445adbf8416efb8f3c72b947303c6027e8828
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
878a2f27d508bbf9e829732d762da86924b95665b585c73f891c6ec5bf0c08c2
BLAKE2b-256 checksum
How to use checksums
79a0efb4e6165cb908dd375c90a703321e01dbc2b77896cdba383cfca8081fc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp314-cp314-macosx_11_0_arm64.whl

Download URL gsfit-0.0.9-cp314-cp314-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bdf50c69be1c41da6eb7859874b9f2f5c99ddbb580483e8b12ca21ea815206fa
BLAKE2b-256 checksum
How to use checksums
d4f84f7039ad52e6ffc6412b973ba6ff7d4511fa5b1b4c658704d687f1b84548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp313-cp313-win_amd64.whl

Download URL gsfit-0.0.9-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9e1ed19ac8ac1ac1e0a6ec4ba77ac25d8fd7e84c5a62676b966baadbed091b4e
BLAKE2b-256 checksum
How to use checksums
333ca5c34a166954327b67660c0874eb9e28e4f37e60028f0a1decdc0fff2cb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7408ffbb04c59c1af5638451f7ed9fe1ca2be53db69ad766d45637e669a0c268
BLAKE2b-256 checksum
How to use checksums
6ea7511528b38b35658316c7b074f3f7863b14834939196cdfe94f05bd15139f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp313-cp313-macosx_11_0_arm64.whl

Download URL gsfit-0.0.9-cp313-cp313-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
de0a71af517d2505675fca085fe7b40ae9a71f12bda31d2d826d7aca43b5d4fd
BLAKE2b-256 checksum
How to use checksums
0693a256f2e791dbb722b6fb03e18882a5e0d8c117a8a233be93df77357df03d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp312-cp312-win_amd64.whl

Download URL gsfit-0.0.9-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6e91422333070822bef51a44d8ec361b18415b015f6ef454f6337dd0d40857e6
BLAKE2b-256 checksum
How to use checksums
eb8f8350a522d59eaab53c6a3a18b7781fd6a71930e3aa7ddbe01b1560b83171
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3365f16f72e77b3202cfa089f865aa2dba3af65098061a28a99d51a906df0759
BLAKE2b-256 checksum
How to use checksums
bea386caf24c35465d1e4d49bbbf4805db1286925ed2b589d4aa20a3ecd9da74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp312-cp312-macosx_11_0_arm64.whl

Download URL gsfit-0.0.9-cp312-cp312-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1cfe9a79c2ea5ee74422fd75d9c87ea1e13ae04e9289ae51387461373674c49e
BLAKE2b-256 checksum
How to use checksums
b64f72053519976c326c23eb5a7ab06bf506ff59770cd02931ab2f1763162dbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp311-cp311-win_amd64.whl

Download URL gsfit-0.0.9-cp311-cp311-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9cd27d2d937d6ef45285f073ad8138c878b5d2cbde266dd85e97e4e00e1bc722
BLAKE2b-256 checksum
How to use checksums
96fe6e239d3280c4e3e3a2c3a7daf8f509a6e0c44316d2e775739f9814b132b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL gsfit-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d49a7d3233e5a27c513e1e476538b976767ec55a808748eca5559d76882638ae
BLAKE2b-256 checksum
How to use checksums
29d2ef15979521f47abffedd1eab099e139c7287020cb96b35e44b1c32ad63b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release files / gsfit-0.0.9-cp311-cp311-macosx_11_0_arm64.whl

Download URL gsfit-0.0.9-cp311-cp311-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5dfaa484aa16bec29e7a0b2a47f1a070e806795ac1175104ce04f694aab47d8c
BLAKE2b-256 checksum
How to use checksums
d4dd60f561528c99aea115b68ab9aa963d2ce118440faaa45cb25a3047af869a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.14.1

Release history Release notifications | RSS feed

This release

0.0.9 This release

16 release files

0.0.8

16 release files

0.0.4

10 release files

0.0.3

10 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