Skip to main content

waveforms

View build status Coverage Status PyPI version

Form waveforms used in experiment.

Installation

We encourage installing waveforms via the pip tool (a python package manager):

python -m pip install waveforms

To install from the latest source, you need to clone the GitHub repository on your machine.

git clone https://github.com/feihoo87/waveforms.git

Then dependencies and waveforms can be installed in this way:

cd waveforms
python -m pip install numpy
python -m pip install -e .

Usage

import numpy as np
import matplotlib.pyplot as plt

from waveforms import *

pulse = cosPulse(20e-9)

x_wav = zero()
y_wav = zero()

I, Q = mixing(0.5*pulse, freq=-20e6, DRAGScaling=0.2)
x_wav += I
y_wav += Q

I, Q = mixing(pulse >> 1e-6, freq=-20e6, phase=np.pi/2, DRAGScaling=0.2)
x_wav += I
y_wav += Q

I, Q = mixing((0.5 * pulse) >> 2e-6, freq=-20e6, DRAGScaling=0.2)
x_wav += I
y_wav += Q


t = np.linspace(-1e-6, 9e-6, 10001)
plt.plot(t, x_wav(t))
plt.plot(t, y_wav(t))
plt.show()

Unified binary representation

Waveform is the common base class for every signal object. RealWaveform and ComplexWaveform are concrete waveforms; WaveVStack is the common stack base, with RealWaveVStack and ComplexWaveVStack as its concrete forms. The original construction style remains unchanged and automatically selects the compact C core for common pulses and repeated-pulse stacks:

import waveforms as wf

# The default tick is already the period of 120 GHz (1 / 120e9 seconds).
# To use another global tick, override it before constructing/loading waveforms:
# wf.set_time_resolution(1e-12)

pulse = (wf.gaussian(12e-9) >> 20e-9) * wf.cos(2 * wf.pi * 5e9)
data = pulse.to_bytes()
restored = wf.Waveform.from_bytes(data)

assert isinstance(pulse, wf.Waveform)
stack = wf.WaveVStack([pulse, pulse >> 40e-9])
assert isinstance(stack, wf.RealWaveVStack)
assert isinstance(stack, wf.WaveVStack)

The C block format stores signed 64-bit ticks using a process-wide clock. The default is 120 GHz. A different process-wide time resolution may be selected before the first waveform is constructed; the same C representation and evaluator continue to be used. The setting is locked by the first object.

sample() has integer-grid fast paths for 500 MHz, 1 GHz, 1.2 GHz, 2 GHz, 2.4 GHz, 2.5 GHz, 4 GHz, 6 GHz, 8 GHz, and 10 GHz. Real waveforms can be quantized directly to signed DAC buffers:

pulse.start = 0
pulse.stop = 100e-9
dac16 = pulse.sample(2_400_000_000, dtype=np.int16, full_scale=1.0)

The low-level cores store and evaluate real-valued signals only. Complex signals are represented in Python as independent real and imaginary channels:

z = (1 + 0.25j) * wf.gaussian(12e-9)
assert isinstance(z, wf.ComplexWaveform)

stack = wf.ComplexWaveVStack([z, z >> 20e-9])
samples = stack(t)  # complex NumPy array

Real waveforms and stacks therefore avoid complex storage and arithmetic for the common real-valued case. ComplexWaveform.real and .imag expose the two real channel waveforms.

Post-sampling nonlinear calibration

NonlinearMap compiles one monotone branch of calibration samples to a compact native lookup table. A centered map is useful when a waveform describes a frequency excursion around an idle point:

frequency = np.array([4.0e9, 4.5e9, 5.0e9, 5.5e9, 6.0e9])
flux = np.array([0.31, 0.22, 0.08, -0.06, -0.16])

frequency_to_flux = wf.NonlinearMap.from_samples(
    frequency,
    flux,
    method="monotone_cubic",  # PCHIP compiled to uniform cubic segments
    reference=5.0e9,          # map(0) == 0 around the idle frequency
    dtype=np.float32,
    extrapolate="error",
)

trajectory.start = 0
trajectory.stop = 200e-9
trajectory.sample_rate = 2_400_000_000
trajectory.nonlinear = frequency_to_flux
flux_samples = trajectory.sample(dtype=np.int16)

The sampling order is waveform accumulation, nonlinear mapping, optional SOS filtering/predistortion, output amplitude limits (min/max), and finally integer quantization or floating-point output. This is important for WaveVStack: the map is applied to the accumulated trajectory rather than to each pulse event independently. method="linear" selects the smaller and fastest two-point interpolation path. Maps serialize independently through to_bytes()/from_bytes() using the language-neutral NLM1 format.

Every waveform and stack has output limits, defaulting to min=-np.inf and max=np.inf. A stack ignores its child waveforms' limits and uses only its own:

stack.min = -0.2
stack.max = 0.3
samples = stack.sample()  # limit after the complete calibration/filter chain

Limits apply to whole and chunked sampling, including out= buffers and integer output. Complex signals limit I and Q independently; sample_iq() uses the same final limits. The filter state continues from the unclipped filtered signal across chunks. DAC full_scale controls integer conversion and saturation separately from these amplitude limits.

Real-coefficient SOS filters (filters=(sos, initial)) run in the C core for float64 and complex128 signals. This stage subtracts the baseline initial, applies the cascade, restores the baseline, and applies the final limits. Real int16/int32 output is quantized in the same stage, without allocating a full filtered floating-point buffer. Float output can reuse the sampled buffer. A small fixed scratch buffer keeps filtering and conversion local; waveform evaluation and nonlinear mapping still precede this stage. Complex coefficients and extended precision retain the SciPy implementation. sample_iq() still converts the filtered complex result into separate I/Q output arrays. See the SOS benchmark.

Calling waveform(t) applies waveform/event accumulation, the object's nonlinear mapping, and then its own amplitude limits. It does not apply SOS filters or DAC quantization. Stacks and complex wrappers use raw child values; child maps and limits do not affect the parent's processing chain. Thus direct evaluation and unfiltered floating-point sampling have the same processing semantics on the same time grid, subject to floating-point rounding. With out= and accumulate=True, the processed contribution is added to the existing buffer without mapping or limiting its previous contents. Sampling starts from raw values so mapping and limits are each applied only once, with SOS filtering between them when configured. Maps and limits are metadata preserved by pickle, not part of the raw WNF4/WNS4 binary blocks.

Reporting Issues

Please report all issues on github.

License

MIT

Metadata

Release files for waveforms 3.6.1

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

Source distribution (sdist)

Source distribution for waveforms 3.6.1
File Size Uploaded
waveforms-3.6.1.tar.gz 123.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for waveforms 3.6.1
File
waveforms-3.6.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
waveforms-3.6.1-cp314-cp314t-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.31+ x86-64, Linux glibc 2.34+ x86-64 Details
waveforms-3.6.1-cp314-cp314t-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64) Details
waveforms-3.6.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
waveforms-3.6.1-cp314-cp314-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.31+ x86-64, Linux glibc 2.34+ x86-64 Details
waveforms-3.6.1-cp314-cp314-macosx_10_15_universal2.whl CPython 3.14 CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) Details
waveforms-3.6.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
waveforms-3.6.1-cp313-cp313-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64, Linux glibc 2.31+ x86-64 Details
waveforms-3.6.1-cp313-cp313-macosx_10_13_universal2.whl CPython 3.13 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) Details
waveforms-3.6.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
waveforms-3.6.1-cp312-cp312-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.31+ x86-64, Linux glibc 2.34+ x86-64 Details
waveforms-3.6.1-cp312-cp312-macosx_10_13_universal2.whl CPython 3.12 CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) Details
waveforms-3.6.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
waveforms-3.6.1-cp311-cp311-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.31+ x86-64, Linux glibc 2.34+ x86-64 Details
waveforms-3.6.1-cp311-cp311-macosx_10_9_universal2.whl CPython 3.11 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) Details
waveforms-3.6.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
waveforms-3.6.1-cp310-cp310-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.31+ x86-64, Linux glibc 2.34+ x86-64 Details
waveforms-3.6.1-cp310-cp310-macosx_10_9_universal2.whl CPython 3.10 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) Details

Total release size: 15.2 MB

Release files / waveforms-3.6.1.tar.gz

Download URL waveforms-3.6.1.tar.gz
Size 123.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b4fec999dc4728ed73ab7724ea7b5fa76a328003532b4f16a4580ac6bbc2b648
BLAKE2b-256 checksum
How to use checksums
c7d2f04a3faccd10606211bd17af0b7b2d8816238709d4239ffc614dd6630dff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314t-win_amd64.whl

Download URL waveforms-3.6.1-cp314-cp314t-win_amd64.whl
Size 333.6 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
a920bc3c18ff3989d2e651b7ba49c2639e389df3214a520a09e00a6578326be8
BLAKE2b-256 checksum
How to use checksums
d7d34b1da40c5014342a7b1c4c8439811ea981399f96f83b3ff02e4ee02c9c7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314t-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp314-cp314t-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
7b6f01a5d97c20a6cdba54d7fd44fa06c415a88f37318915a5b2bdaa78a7b4b4
BLAKE2b-256 checksum
How to use checksums
e6e72ef3871023af7638efcb986d2570f3140b91cfafcfa91d0ea7b975b497b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314t-macosx_10_15_universal2.whl

Download URL waveforms-3.6.1-cp314-cp314t-macosx_10_15_universal2.whl
Size 624.9 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
bb539211ee3ae54405013ada191cab5b15f88ed1fa736ddcdf49472981e8bfb9
BLAKE2b-256 checksum
How to use checksums
66ece62ff6e1c460d35bdacf35c2187c17a242a9c31bfe0c38c8128913df0b1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314-win_amd64.whl

Download URL waveforms-3.6.1-cp314-cp314-win_amd64.whl
Size 322.7 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
acef4cddf4f8e3536df29ba9deec3b3a3f707234f5471b5f88ecc183da574226
BLAKE2b-256 checksum
How to use checksums
8e8188490e9fd9206fcccde859cc402ec96fead3c3b13246f438f66b31bb6668
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp314-cp314-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.6 MB
Tags CPython 3.14 Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
1065a229bdf8e41bd8622e514ad46a45570dfa5a71b45aa73262808931c6f0b7
BLAKE2b-256 checksum
How to use checksums
1134b30dd50d652e3a004c0025377142402ae7a6fd62acd7d7a17ad3597363b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp314-cp314-macosx_10_15_universal2.whl

Download URL waveforms-3.6.1-cp314-cp314-macosx_10_15_universal2.whl
Size 612.2 kB
Tags CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
9955a257b033553bd637760073ed4912ecd22f6d6ef9a7d9eef12636957bb326
BLAKE2b-256 checksum
How to use checksums
b1e8a3d80c1f3d9d680fc3b13aa62272cd843e00159adc526c7a242d1dddf4fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp313-cp313-win_amd64.whl

Download URL waveforms-3.6.1-cp313-cp313-win_amd64.whl
Size 315.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
54f835efe7db254ca9f1000ed7d52b9c19e53f94c9ad342cc7a8000d6e8675da
BLAKE2b-256 checksum
How to use checksums
48b07b15ad3b1a7957d2ba6e8267cb5e3aebb06e47811710d2aba8248924de0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp313-cp313-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp313-cp313-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
62e4b4b02ae90ab64164c25204b525d36494b71ae132cd0687ce5b5ee0e2706d
BLAKE2b-256 checksum
How to use checksums
fe59b5752bedd7c68398f8db033ee1e39f56a63bc94df9505fd058843397e819
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp313-cp313-macosx_10_13_universal2.whl

Download URL waveforms-3.6.1-cp313-cp313-macosx_10_13_universal2.whl
Size 611.0 kB
Tags CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
755391f553973a2289abd11334068a5177e55e1fec9071a7b075ed98d06cd1cc
BLAKE2b-256 checksum
How to use checksums
3f0c3941fb800e42ee036c0a52066ad8ae7adeed5c0e275e251c712923e4be91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp312-cp312-win_amd64.whl

Download URL waveforms-3.6.1-cp312-cp312-win_amd64.whl
Size 315.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6a790612c3c73837ad1b2db98003ff335a92a24afed89ff294e2816a823ff68c
BLAKE2b-256 checksum
How to use checksums
4a19f2a56b708968cdfda92a01ee9baded160149d2c964c5419ba16c2eab5477
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp312-cp312-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp312-cp312-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
5f37559f219563b787b05f6e6cb34248ad821d572067df639c98fe4794814eb3
BLAKE2b-256 checksum
How to use checksums
297052a0cdb35f47c70c426274f6d0f32dc02a35fd11c39ef569f49da94d3b15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp312-cp312-macosx_10_13_universal2.whl

Download URL waveforms-3.6.1-cp312-cp312-macosx_10_13_universal2.whl
Size 610.1 kB
Tags CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
2f49f9a4133c92ae52bec7f326c476789b5ce8668f93953da74a4533d678735a
BLAKE2b-256 checksum
How to use checksums
7b69e4f0c255ccd9632748bc67e291f903106a3c917240d0a8343a5b4970514e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp311-cp311-win_amd64.whl

Download URL waveforms-3.6.1-cp311-cp311-win_amd64.whl
Size 330.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
d0a8a232c9edbb6f0a52f8cda828fd2eb505a4d3f00fef6dc48d8036264aa41b
BLAKE2b-256 checksum
How to use checksums
14c7d0b581625e7bff72f3c37dfae7d26a9e2046e68f31bbc57514a657b811bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp311-cp311-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp311-cp311-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
5c503f1e2ce5d8692637470601ec24787e98d1f39e6ed7511edc3b05644d2ed6
BLAKE2b-256 checksum
How to use checksums
0215b769fc00bc687d91dac3c32659f58b4eea4addea7f264ab76e771a799c83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp311-cp311-macosx_10_9_universal2.whl

Download URL waveforms-3.6.1-cp311-cp311-macosx_10_9_universal2.whl
Size 604.3 kB
Tags CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
0efc8a3a8e22e64cd1e077d499db989ff74963aed0b16581617857980554bcac
BLAKE2b-256 checksum
How to use checksums
b3d50cd7dbf7506b41a947c5582bd63dd3d6c2e6aa0a5e779b6822e5f291791b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp310-cp310-win_amd64.whl

Download URL waveforms-3.6.1-cp310-cp310-win_amd64.whl
Size 330.9 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
ae52423d3872ebe44baa671b6668d34c6b43e3bfbef7c169f35153126bbcb5ec
BLAKE2b-256 checksum
How to use checksums
cfeefe1799d67b8e26e8d533bce5676165d9b1fc8c42723cace7838bb5e429e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp310-cp310-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl

Download URL waveforms-3.6.1-cp310-cp310-manylinux_2_31_x86_64.manylinux_2_34_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.31+ x86-64 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
71476a1cc2179894e3b6d2b310fa38052159eefddffd65c051e812c94a3040e2
BLAKE2b-256 checksum
How to use checksums
29aaff39084ae53af92d72e1dcaee3f036572fbcc042197f1518af3312aeff10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / waveforms-3.6.1-cp310-cp310-macosx_10_9_universal2.whl

Download URL waveforms-3.6.1-cp310-cp310-macosx_10_9_universal2.whl
Size 608.4 kB
Tags CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
6fe8717346adeae1d305d5dd1a7c95d1a7780ec4ecc0391cf4c1b7b0d6b72698
BLAKE2b-256 checksum
How to use checksums
121585b8079617b34f24135c4188dd2266b49e601bf4626620a817b6ffdf9837
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

3.7.0

19 release files

This release

3.6.1 This release

19 release files

3.4.0

19 release files

3.3.2

19 release files

3.3.0

19 release files

3.2.0

19 release files

3.1.0

19 release files

3.0.0

19 release files

2.3.0

19 release files

2.2.3

19 release files

2.2.2

19 release files

2.2.0

13 release files

2.1.0

13 release files

2.0.1

13 release files

1.9.4

10 release files

1.9.1

10 release files

1.8.9

10 release files

1.8.8

10 release files

1.8.7

10 release files

1.8.6

10 release files

1.8.5

10 release files

1.8.4

10 release files

1.8.1

10 release files

1.8.0

10 release files

1.7.9

10 release files

1.7.8

10 release files

1.7.7

10 release files

1.7.6

7 release files

1.7.5

7 release files

1.7.4

7 release files

1.7.3

7 release files

1.7.2

7 release files

1.7.1

7 release files

1.7.0

7 release files

1.6.11

7 release files

1.6.10

7 release files

1.6.9

7 release files

1.6.8

4 release files

1.6.7

7 release files

1.6.6

7 release files

1.6.5

7 release files

1.6.4

7 release files

1.6.3

7 release files

1.6.2

7 release files

1.6.1

7 release files

1.6.0

7 release files

1.5.99

7 release files

1.5.98

7 release files

1.5.97

9 release files

1.5.93

7 release files

1.5.92

7 release files

1.5.90

7 release files

1.5.89

7 release files

1.5.87

7 release files

1.5.86

7 release files

1.5.85

7 release files

1.5.84

7 release files

1.5.83

7 release files

1.5.81

7 release files

1.5.80

7 release files

1.5.79

7 release files

1.5.78

7 release files

1.5.77

7 release files

1.5.76

7 release files

1.5.75

5 release files

1.5.74

5 release files

1.5.63

7 release files

1.5.62

7 release files

1.5.61

5 release files

1.5.60

2 release files

1.5.59

2 release files

1.5.57

2 release files

1.5.56

5 release files

1.5.55

5 release files

1.5.54

7 release files

1.5.53

7 release files

1.5.52

7 release files

1.5.51

7 release files

1.5.50

7 release files

1.5.47

7 release files

1.5.42

2 release files

1.5.38

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