Skip to main content

BasedPL

BasedPL, the Based-array Programming Language, is an APL-derived array language, borrowing ideas from J and BQN, with an emphasis on simple, consistent notation. Most of this documentation calls it BPL. It is implemented in Rust, with a native executable, Jupyter kernel and Python API.

For APL users, the main choices are:

  • Based arrays, as in BQN: numbers, characters and functions are atoms; enclosure always adds a layer.
  • Brackets write vectors, and spaces group: [a b c] is a vector, and a+b × c+d is (a+b)×(c+d). A run that ends in a function is a train, so +/÷≢ x is the mean of x, and 2× binds 2. An array next to an argument selects from it: v 0 is the first item.
  • Leading-axis broadcasting, including expansion of length-1 axes, plus string keys and names on axes.
  • Exact integers and rationals alongside approximate real and complex numbers.
  • Dfns, trains and operators, with additions such as Under, iteration histories, windows and function arrays.

Positions and axes count from 0, as in BQN and Python. Approximate comparisons use tolerance 1E¯14. See the language principles for why BPL works this way, the glyph reference for Dyalog differences and the language rules for the array model.

Install and try it

pip install basedpl
bpl

At the prompt, define a mean and apply it:

avg←+/÷≢
avg 2 4 9
5

Use bpl -e 'avg←+/÷≢ ⋄ avg 2 4 9' for a shell command. The command-line guide covers source files and pipes.

Interactive use

In the REPL, type a backtick followed by a glyph name: `iota becomes ⍳ when you press Tab or type a non-letter. Abbreviations and Alt-key shortcuts are available. ]help + shows help; ]box on -style=max -trains=tree -fns=on enables boxed arrays and function trees. See REPL and the glyph reference, which lists each glyph’s key.

In Jupyter, select the installed BasedPL kernel. Cells share definitions and support completion, Shift-Tab help and interruption. You can also use %%bpl cells in a Python notebook. See Using BPL notebooks.

New to APL?

APL is a language built around operations on whole arrays and notation for combining functions. Here is a taste of that style in BPL.

Numbers separated by spaces form a vector. Arithmetic applies to every element:

10+1 2 3
11 12 13

Operators modify or combine functions. Reduce (/) turns addition into summation. ⍳10 generates 0…9:

+/⍳10
45

Functions can also be combined without naming their arguments. In avg←+/÷≢, sum (+/) divided by tally (≢) defines the mean:

avg 1 2 3 4
2.5

To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (|⊗⍨1+⍳50), count the zeros down each column (+⌿0=), and find the positions (⍸) whose count is two. Positions count from 0, so 1+ turns them back into numbers:

1+⍸2=+⌿0=|⊗⍨1+⍳50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

Getting started builds this expression step by step, displaying the divisibility matrix along the way.

What’s distinctive?

Numbers

Bare numbers are approximate. Use x for exact integers and r for exact fractions:

1r3+1r6
1r2

Complex numbers use j between real and imaginary parts. Functions such as square root extend into the complex domain:

√¯4
0j2

See numbers for conversion and mixed arithmetic.

Array literals and broadcasting

Write matrix rows directly in an array literal. Leading-axis agreement lets a vector supply one offset per row:

m←[1 2 3 ⋄ 4 5 6]
m+10 20
11 12 13
24 25 26

See array notation and broadcasting.

Keys and named axes

Axes can have names, and positions along them can have string keys. Describe the axes once, then select by key or reduce by axis name:

axes←["city":["NY" "LA"] "month":["Jan" "Feb" "Mar"]]
sales←axes:[10 20 30 ⋄ 40 50 60]
"LA" "Feb"⌷sales
+/⍠"month" sales
50

["city":2]⍴["NY":60 "LA":150]

Keys and names travel with axes through operations such as transpose. Arithmetic aligns matching names and keys. See Axis keys.

Function operators

A vector of counts keeps the history: one state for each count, where count 0 is the initial value. Here, double up to four times:

2×⍣(⍳5) 1
1 2 4 8 16

Under (⌾) transforms the argument, applies a function, then reverses the transformation. Scale by ten, floor, and scale back to round down to tenths:

⌊⌾(10×)1.25 2.78
1.2 2.7

Explore iteration and inverses, Under, windows and function selection.

Mathematical tools

Primes and factorisation are built in:

⨸360x
[2 2 2 3 3 5]ₓ

Polynomials support coefficients, roots and evaluation. Polynomial functions can be differentiated: for f(x) = 1 + 2x + 3x², f′(2) = 14.

f←[1 2 3]ₓ⌻ ⋄ f∂2x
14ₓ

Probability distributions provide sampling, density, CDF and quantiles. Two fair coin tosses give these probabilities for 0, 1 and 2 heads:

coin←•binomial 2 0.5
coin.density 0 1 2
0.25 0.5 0.25

Matrix division handles linear systems and least squares.

Data and text

JSON objects become keyed arrays, with dot access to their fields:

order←•json "{""price"":10.5,""qty"":2}"
order.price×order.qty
21

CSV headers likewise name column vectors. Files, CSV and JSON covers reading, transforming and writing data. Regex supplies matching, captures and replacement through Rust’s regex engine.

Drawing

•plot draws charts from arrays. Keys label the axes and name the lines. See Plots.

["legend":"end"]•plot sales

Build SVG from element functions and keyed attributes. Notebooks display the picture directly. The same element trees serialize to XML. See XML and SVG.

circle←•element "circle"
text←•element "text"
c←["cx":50 "cy":40 "r":25 "fill":"orange"]circle ""
t←["x":50 "y":85 "text-anchor":"middle"]text "Hello, SVG"
["width":240 "height":240]•svg [c t]

Python

BPL functions are Python callables:

from basedpl import fn

mean = fn('+/÷≢')
mean([1, 2, 3])

Arrays have .py, .np and .df conversions for Python values, NumPy and pandas. Functions also have Python names and composition operators. See the Python tutorial.

For other frontends, the process interfaces provide JSON messages and interruptible workers. The BPL library contains more algorithms, codecs, interpreters and puzzles.

Install from source

Requires Python ≥3.10 and Rust ≥1.98. On x86-64, it also requires a CPU with AVX2 (x86-64-v3). In your Python environment:

git clone https://github.com/AnswerDotAI/basedpl.git
cd basedpl
pip install .

For a standalone executable without Python, run cargo install --path .. Cargo installs it in its bin directory, normally ~/.cargo/bin. Put that directory on your PATH.

Contributing

Install the development and documentation tools with pip install -e '.[dev]'. The main commands are:

cargo test
cargo run -- -e '2×3+4'
cargo fastfmt
maturin develop
pytest
ship-rs-build

Rebuild with maturin develop after Rust changes, before checking the installed extension. Cargo tests alone don’t update the editable Python installation. Use cargo fastfmt, not cargo fmt.

Before a release, run python scripts/prep.py from the repository root. It checks the glyph reference against the interpreter’s glyph table, writes the syntax highlighters’ glyph lists, cleans and exports the notebooks, and renders this README.

Use lowercase j in complex literals throughout tests and examples, including adapted reference cases. Reserve uppercase J for explicit input-alias tests. Keep archived upstream source unchanged.

Write literal matrices in array notation, [10 20 30 ⋄ 40 50 60], not as a reshape, 2 3⍴10 20 30 40 50 60. Keep ⍴ where the example is about reshape.

Brackets are the usual way to write a list. A bare literal list, such as 1 2 3, is a shorthand. End an operand with a space, not with parentheses or ⊢. Where a literal operand would run into the argument, write the argument in parentheses: f⍤1(2 3). Report any case where neither a space nor parentheses works.

A name applied to a literal touches it, as a glyph does: fib10, v¯1 and 1+⌽f5. Write it that way where it’s shorter and needs no new parentheses. Keep the space where the literal would join the next part of the expression, or where an array before the name is its left argument.

Metadata

Release files for basedpl 0.1.18

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

Source distribution (sdist)

Source distribution for basedpl 0.1.18
File Size Uploaded
basedpl-0.1.18.tar.gz 1.8 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for basedpl 0.1.18
File
basedpl-0.1.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.18-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
basedpl-0.1.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.18-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
basedpl-0.1.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.18-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
basedpl-0.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.18-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 55.8 MB

Release files / basedpl-0.1.18.tar.gz

Download URL basedpl-0.1.18.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
58f819971ace1ef82ce3618044cf2faf215f2dc502d3d3ca1da8e20f1df3dc9a
BLAKE2b-256 checksum
How to use checksums
3468c8bf17d060455deb4110942cf92ce0c8d5358f654dafd1b58cdb3af29235
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.0 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
24ee164f4dd814a58592fa40defc9ffc922aa377acdea33afeafa3664c55608d
BLAKE2b-256 checksum
How to use checksums
a7dd25970f9642529c9e87d36ebbb6367c2c716eceb34ea78941c0824342b15f
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.3 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
40dc888ca2d8b3afd889ecb30d38c16ccb2d5176499acf34b7c40850af6e8185
BLAKE2b-256 checksum
How to use checksums
5a6a867b94c6385c69d23f9f49e3e6a1620fd91dfdcf46c0f6e2c972bfe6f21d
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp313-cp313-macosx_11_0_arm64.whl

Download URL basedpl-0.1.18-cp313-cp313-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7b3e2b7a16f2f510a6c3c2ff36228c23381b7bf9da01e59cd0e75e5c36f2b5d9
BLAKE2b-256 checksum
How to use checksums
ce3df0d97315ec4fe598c20534ff93faf9c6ef5304bc421eceede4a9ed52a877
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6631c5dc0a8339dc68224332065c9c1ccbe05a4b5ab2adee074fe38d2d30349f
BLAKE2b-256 checksum
How to use checksums
2804c311baee4c1a36205a3a1b74cb16b0ae15cad3e3fd53872bb53cbde410a3
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.3 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1436702505ea994f58870ef62d477bb33349967094c5fa626c4e3786cbd4937d
BLAKE2b-256 checksum
How to use checksums
8671941cd14fd85659a4db7e7b743fc4c1868eef23f617e55fb464301f99bae2
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp312-cp312-macosx_11_0_arm64.whl

Download URL basedpl-0.1.18-cp312-cp312-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
deac08316fef11b2c7b765539971eedff4522cac806fd3c1b7bda81e7fa3127b
BLAKE2b-256 checksum
How to use checksums
dc4529ff9355245b35f640a6f27dd46584c9e02c346b0d426c3de27c08eb2fdf
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.0 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a35d9d1646b4defb949da7c8734dc6d2e7ef57f566771fb6040fd7708e70ed1b
BLAKE2b-256 checksum
How to use checksums
592784c9cbc61fb4ef73c5e0088be5ddeddd6ac55e9e4315639373f2ee352f6e
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.4 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
8ca832290e1ca39c3db0b817a3e24181354650131f0734496813387b5c6e7818
BLAKE2b-256 checksum
How to use checksums
b93f0a58c277dcdb55834059f0b8dd9bd966385e4699576e628d69e21227b9d1
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp311-cp311-macosx_11_0_arm64.whl

Download URL basedpl-0.1.18-cp311-cp311-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8f3b3a965097c62514c5c8c2423889e30604e2f276a2e2ff337f81ee56467852
BLAKE2b-256 checksum
How to use checksums
4d597f3ff2a74c5d385789496fc6884098a461dec15c167c3f3c0f68fc03ac53
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
48850ded05a6a5027e10085a8c1c6da65f5003aa17ed796f46244797bab27e99
BLAKE2b-256 checksum
How to use checksums
7bb30f7208f0b2672d168d7ea114321cd55f93baac01ee55e66eb18e6b69e92a
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.4 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
ae1aae7b3c03d371a1cf278f6cb5cb5f1988b4f64cd2443563af5c7af6874932
BLAKE2b-256 checksum
How to use checksums
701431b67c0df9d70ab08e3cfa093cd7c45aba8bb98ee865733d8006d09941bc
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 30, 2026.

Transparency log

Release files / basedpl-0.1.18-cp310-cp310-macosx_11_0_arm64.whl

Download URL basedpl-0.1.18-cp310-cp310-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
294c4209485333f440b060957c885906d7c7af34e901b567463541ff02b56620
BLAKE2b-256 checksum
How to use checksums
fd7f9add059ec02830d3b05239e226a8d9b09eb859b9cb19b216127d98409fad
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 30, 2026.

Transparency log
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