Skip to content

Software Supply Chain

Below is a list of third-party software that is either included in Firedancer source code (vendored), required to build Firedancer, or downloaded when checking out the repository (./deps.sh).

Development-only dependencies are omitted.

The purpose of this document is to list relevant exposure to third-party code changes. Low-risk vendored code that was exhaustively tested for correctness, is near-immutable, or fully maintained by the Firedancer team is not included in this list. (This includes, e.g., the Ed25519 and ChaCha modules.)

FRANKENDANCER

This document only covers full Firedancer. Frankendancer is omitted because of Agave's extremely large and rapidly changing set of dependencies. It would therefore be impractical to adequately document Agave's or Frankendancer's software supply chain.

For copyright notices of vendored code, see the NOTICE file instead.

Distribution

Firedancer source code is distributed via GitHub.com.

External dependencies are downloaded from GitHub.com and GitLab.com.

System environment

Firedancer requires a glibc-based Linux environment, either Fedora- or Ubuntu-like.

Build dependencies

Build dependencies are installed via the system's native package manager (dnf or apt) when running ./deps.sh check. These include:

  • Git
  • GNU Make
  • C/C++ compiler: GCC or Clang
  • pkgconf
  • GNU coreutils
  • GNU diffutils
  • GNU patch
  • Perl (for building OpenSSL)

Vendored

This section only lists vendored code that requires interaction with third-party repositories (e.g. pulling bug fixes). Other vendored code is omitted (see the NOTICE file above for a complete list).

nanopb

https://github.com/nanopb/nanopb

Protobuf encoding library. Written in C.

picohttpparser

https://github.com/h2o/picohttpparser

HTTP/1.1 parser. Written in C.

cJSON

https://github.com/DaveGamble/cJSON

JSON encoding library. Written in C.

Fiat-Crypto

https://github.com/mit-plv/fiat-crypto

Cryptographic subroutines. Written in C.

musl libc

https://musl.libc.org/releases/musl-1.2.5.tar.gz

Imported name resolver and DNS client from the musl libc project. Written in C.

External

External dependencies are downloaded and installed when running ./deps.sh install.

Most dependencies are checked out using by Git tag; SHA refs are not pinned.

All production external dependencies are statically linked into the Firedancer executable.

Zstandard

https://github.com/facebook/zstd

Data compression library by Meta. Written in C.

bzip2

https://gitlab.com/bzip2/bzip2

Data compression library. Written in C.

s2n-bignum

https://github.com/awslabs/s2n-bignum

Collection of cryptographic integer arithmetic routines by AWS Labs. Written in assembly language.

OpenSSL

https://github.com/openssl/openssl

Widely used TLS library. Written in C.

blst

https://github.com/supranational/blst

Cryptographic routines for the BLS12-381 curve by Supranational. Written in assembly language and C.