Skip to main content

libigl Python Bindings

PyPI version

This repository contains the source code for the python bindings for the C++ libigl library written using nanobind. Functions allow NumPy arrays as input and output for dense matrices and vectors and SciPy sparse matrices for sparse matrices.

Installation

python -m pip install libigl

Documentation

:warning: WARNING
The python-binding documentation is perennially out of date and will likely be removed/changed.
  • A tutorial on how to use the bindings can be found here
  • A function reference can be found here

Getting the current version of libigl within python code

Since version 2.5.4.dev0, the igl.__version__ attribute has been removed. To get the version of the libigl package you're using within your python code, you can use the following code:

import importlib.metadata
libigl_version = importlib.metadata.version('libigl')

The version of libigl is defined in the pyproject.toml file.

Compiling and modifying the bindings

According to the scikit-build-core documentation, the way to make an editable (incremental) build is to:

  1. Preinstall the dependencies (at the top of pyproject.toml
  2. Then use this very long command:
CMAKE_BUILD_PARALLEL_LEVEL=10  python -m pip install --no-build-isolation --config-settings=editable.rebuild=true -Cbuild-dir=build -ve.

The CMAKE_BUILD_PARALLEL_LEVEL=10 will invoke with 10 parallel build threads.

Adding a missing binding

Bindings are fairly mechanical to write. For example, suppose we didn't have a binding for the c++ function igl::moments. The first step would be to look at the corresponding .h header file in the C++ libigl library: moments.h.

Then we would create the src/moments.cpp file in this project which uses Eigen::MatrixXN for numeric types and Eigen::MatrixXI for integer types. Typically this requires a simple wrapper around the function matching its signature to these types and some boilerplate void bind_moments(... code which adds the function to the python module.

Simply adding this .cpp file will be enough to add the bindings on the next build.

If submitting a pull request with a new binding, please also add an execution test in tests/test_all.py to ensure the binding can at least be called as expected.

Packaging a wheel from an existing build

If you already have a compiled build directory, you can package it into a .whl without recompiling and install that wheel into other virtual environments on the same machine:

python -m pip wheel --no-build-isolation --no-deps -Cbuild-dir=build -w wheelhouse .
pip install wheelhouse/libigl-*.whl

The --no-deps flag skips bundling numpy/scipy (the target environment must have them already). No compiler or CMake is required in the target environment.

Testing cibuildwheel locally

Install whichever version of Python from the official website and then run:

/Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11 -m venv venv-official-3.11
source venv-official-3.11/bin/activate
python -m pip install cibuildwheel
CIBW_BUILD="cp311-*" python -m cibuildwheel --output-dir wheelhouse --platform macos

Downloading all the artifacts

A successful .github/workflows/wheels.yml run will a lot of .whl files. To download these all at once, you can use the following command:

mkdir wheelhouse
cd wheelhouse
gh run download [runid]

Then these can be uploaded to pypi using:

for f in wheelhouse/*/*.whl wheelhouse/*/*.tar.gz; do
    python3 -m twine upload --repository pypi "$f" || echo "Skipping failed upload: $f"
done

Acknowledgements

The original python bindings were generated and maintained by @teseoch, @KarlLeell, @fwilliams, @skoch9, and @danielepanozzo

The modern python bindings (since 2.5.4.dev0) can largely be blamed on @alecjacobson.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libigl-2.6.3.tar.gz (41.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

libigl-2.6.3-cp312-abi3-win_amd64.whl (20.2 MB view details)

Uploaded CPython 3.12+Windows x86-64

libigl-2.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

libigl-2.6.3-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (13.2 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

libigl-2.6.3-cp312-abi3-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

libigl-2.6.3-cp312-abi3-macosx_10_15_x86_64.whl (13.5 MB view details)

Uploaded CPython 3.12+macOS 10.15+ x86-64

libigl-2.6.3-cp311-cp311-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.11Windows x86-64

libigl-2.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

libigl-2.6.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (13.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

libigl-2.6.3-cp311-cp311-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

libigl-2.6.3-cp311-cp311-macosx_10_15_x86_64.whl (13.5 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

libigl-2.6.3-cp310-cp310-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.10Windows x86-64

libigl-2.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

libigl-2.6.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (13.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

libigl-2.6.3-cp310-cp310-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

libigl-2.6.3-cp310-cp310-macosx_10_15_x86_64.whl (13.5 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

libigl-2.6.3-cp39-cp39-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.9Windows x86-64

libigl-2.6.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

libigl-2.6.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (13.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

libigl-2.6.3-cp39-cp39-macosx_11_0_arm64.whl (12.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

libigl-2.6.3-cp39-cp39-macosx_10_15_x86_64.whl (13.5 MB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

libigl-2.6.3-cp38-cp38-win_amd64.whl (20.3 MB view details)

Uploaded CPython 3.8Windows x86-64

libigl-2.6.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

libigl-2.6.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (13.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

File details

Details for the file libigl-2.6.3.tar.gz.

File metadata

  • Download URL: libigl-2.6.3.tar.gz
  • Upload date:
  • Size: 41.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3.tar.gz
Algorithm Hash digest
SHA256 e2a3ff17b88cae728cb60ea63850131315bb661045a8642db73aea98c91486ab
MD5 14b6687f273a5a2e6467e5dde81a83b7
BLAKE2b-256 5c418b04eb112af0579790af6a04f7d0ffc9be6827ce44e99495d30c6820e1fc

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: libigl-2.6.3-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 20.2 MB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1d91745ed0e78c56a04539e3231ce6faff49ae0dbe123caa2034e1886fcb2e7d
MD5 a32b8852d89a03138f5db29020b85f53
BLAKE2b-256 0c136893321d8fc1a742a276a5de796e1818cae33a0589b46f487a6cba2547c5

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4a1d28aebfeb8b232a58943b1af318ec61a1fff7650a9d25a1396ba8fa1ef6d6
MD5 0074edb0d049b8d10ce50fd360fb0f26
BLAKE2b-256 f6c28641402402fbfa553c51615825434802de9c3b60b2580acdaad5312af396

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 98952af1bc41e363a642c880465e91f951164a6ee23ca62e8e8449d00a31e2d0
MD5 5f04ceba984ce3a2aa32393e90f4a2a0
BLAKE2b-256 6a88d964fc9e6ee297793b8c65937f1bbe1365f3faaa29fc22054aa51a1e05a1

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da3c62c50103be9b192bc76bbcb9e5031d80a2cf209b3ef0a0cf0060750088d9
MD5 7184fc6f41ece42d6857d8209faf92d6
BLAKE2b-256 505a687c38287c1ae298fc1221d8422f6fd63de9b9461dc8b0368e54953cc5ca

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp312-abi3-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp312-abi3-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 913ae71a57e164ed79237c8c320677923b61fd762fdbaa1d3b2a974a198ba3a9
MD5 9c8968fb55326e4202d988c642f91e2f
BLAKE2b-256 288329c5a7a76d1f231ea75dc55369289393f96fd0dd30748bc2109c2454b403

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: libigl-2.6.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 20.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65ac569fdc556a224c2d05ce265e0b0330c43c9787356dea5c6c26a92c6d6cd4
MD5 3dc46a0ee2c9a5664427052e28f2995f
BLAKE2b-256 3b3b16cd0b55355de72fa4fba737765eb1a51b3034acb032adeaad19b9146ee8

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e339d9b7c5ed1610971dfa1d5393a8cd1e244eec3809ef30e4063e32d3c0c9be
MD5 e62e8ccdee3d030750f8e38bd7d4305f
BLAKE2b-256 a9cf515db2791312df609ba7abb8d75cbe917a9e84a3f6fce416c64a526c5a9f

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0ac1519eef2328553542788cf352a5c1143bb27cb7bbf240bb5674e61b0cac5b
MD5 0dbbd292c797eaab2a90763f4fa46fdc
BLAKE2b-256 ab1f579f7f4eb51f00805a3a5d205f80ff32e40305393bd47187f177a1325299

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a6bf9f64335620e7de396c3c58faef3232ec3a98d9788dd3018f1a94618b3180
MD5 fa673eccbf932f15da3d0e3b7883b835
BLAKE2b-256 038b78899c5d0fa288caa318a24ed54b2d21ea96de54ee1d1a6af3cac1ae9afc

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f1150dfe0f9c63f9ce950e815151039087a383dcdd72561fbd991dcb9393597d
MD5 5bbd9fba43ea28148f3d04d5a83890eb
BLAKE2b-256 45bab3ef5c6fb173454a5775b414a42350778d21a10393013f5270813b01578b

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: libigl-2.6.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 20.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 40ad24757603620b5e34b91bb9fa2990c47868844868547f03cf600251c49018
MD5 00e064a837ac031e3a9fc97306f8f627
BLAKE2b-256 fa7d5d1418b42ee82c247ee899810d40ae109ae6dca8905f54b25c809a4a7cec

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a27f0bb4b8b4d09b663c2b3ec7dfd40269f5f7be08ac5cdd56d8973caf20bbe3
MD5 8e2b975992e8df0f713e03a69c84a78f
BLAKE2b-256 d98bb7301db9fbe233aeec747287b258a80ae13849aeb154bce5a77cec465ec7

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 05ef5c35ea496352c08ab0274e889ca345fbb1e6720cede0416a86e6a59361ee
MD5 fec895d59199bf6884fc6b04d4472ce1
BLAKE2b-256 037b7e536b437ecfb0457135071dd269f1b739456b1d0e35426d907ef616e901

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56ba76ad2f4c59e08b5454b62181f6c41612d3fcc5085f667b24660342e7286e
MD5 5847070d0a24cbd0416f51aea9455ef7
BLAKE2b-256 f1a955bde2920139c56e7842b338420e6d5b44027af212844c3090206b1d9059

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0526d1ff21d06bbbcfe511333157f1c6d7bf9a11fa2e274c5e6dd5f870aee5c3
MD5 e4442eba6f28b84647a3940b90fcf404
BLAKE2b-256 865b87093034ff5a877c5bee033c890a63438bf3035e36f37111128d029973aa

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: libigl-2.6.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 20.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 e8d3e8f27e361f5dd594a2563e80ec792ebbd3364229b437afd5e9a99c0ffc75
MD5 92e8434685d31ddc0f41e13531cead1b
BLAKE2b-256 5ea092f1a3283119ca5f9afcf5c8e802e926865fc916b8095000c68d58238c0a

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a90178bfe428a141ad61ed7e8dac51710fe64432b352ab7ec3433dd8acb8946c
MD5 4d759be63640845549ca4a8d6e915878
BLAKE2b-256 ecba10f51859e1254be1e04c57e49a72aaecf98776e91450f1c35b5bd8a62e63

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a08a567e0ad5d4f49f8432cf05c7909a347926c5361aa7b34eb03f882bc87f13
MD5 e2874c82ce8be378030a77829d8db6dd
BLAKE2b-256 4af507ea3bfaf564fea32ec3a4a4bde4b74d3fdab532e53499a1a3a6e67a9dd0

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2174139e303d5d430ff0e83100d7e4a6167687bb6fd96c34026909cb02ae892
MD5 605f3de7e4f7410ef8763945ac9cd8c1
BLAKE2b-256 e2c8b65942a33388a71c907cdb7d8261dd6aa5f39e2ebee185252507735c2015

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 afd1f75c1a36a18e003b24144e1eda7f2242ebc81709d262be1c9ba6fad0b234
MD5 6fbec2e3b12ad34f33f2985cdb490cf3
BLAKE2b-256 7f828fa1a7f3a9ac219f3ffd1f8aa3df4465747db3b98894a95d0c7b219db2dc

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: libigl-2.6.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 20.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for libigl-2.6.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b19229cd51a9e1c67c99b299ff6d8a46827f5cc5e35b61001947424f712bd8c5
MD5 7cb8bbe31ec36a94f36c38f2d83d1bc9
BLAKE2b-256 c8400863cf2b10b15649528c7eaa3dea46e306932993c29faad20df3df37080d

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d1fc360fce6a6e1946a9979a1a752cf126a272dfadc5b60e4902a6c6546fe2d
MD5 40e966997550474d60400d079adcbe83
BLAKE2b-256 128e1a78d89410759aaa8ba78e699e822f7cbfbd6497a6081e1b695555394813

See more details on using hashes here.

File details

Details for the file libigl-2.6.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for libigl-2.6.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7851a88583e3aad721614bfee9b3eda839ad2aeebfc8b74ac1f2336d8e703e8c
MD5 58e4b903febaba6a75eca49f720f6ea3
BLAKE2b-256 06ce04f08382fdac2a00f63c67dd526eaf921e5aad9f0cae990cc5ae4ddfaf32

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.6.3 This release

24 files

2.6.2

12 files

2.6.1

24 files

2.6.0

24 files

2.5.1

27 files

2.5.1.dev0

23 files

2.5.0

23 files

2.5.0.dev0

23 files

2.4.1

23 files

0.0.3

16 files

0.0.2

16 files

0.0.1

16 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