System Requirements
Golden Configuration
The most reliable system configuration for development is:- Kernel version: Linux 4.18 or newer
- Operating system: RHEL 8 or Ubuntu 22.04 (or Fedora/Debian equivalents)
- Compiler versions: GCC 12 or Clang 15
- CPU: Icelake Server or Epyc 2 (or newer)
- Memory: 2 gigantic pages (2x1 GiB) per core, reserved via
fd_shmem_cfg
While Firedancer aims to support tests on a wide variety of hosts (including architectures other than x86), the above configuration is what the Firedancer team uses internally. It also helps eliminate system noise such as page table walks, page faults, allocation failures, and OOM kills.
Supported Platforms
As of 2024, Firedancer builds on GNU/Linux sysroots with:- GCC 8.5 or newer
- Clang (also supported)
- CBMC (also supported)
- musl Linux, macOS, FreeBSD, Solana (SVM) C programs
- arm64, ppc64le, sBPFv1, sBPFv2
Initial Setup
Install dependencies
Run the dependency installation script with the This script will:
+dev flag to install development dependencies:- Detect your operating system and distribution
- Install required system packages
- Fetch and build external dependencies into the
opt/directory - Use
sudofor privileged operations if needed
Firedancer aims to have zero out-of-tree library dependencies. The
deps.sh script fetches and builds large external dependencies, then installs includes and static libraries into a custom prefix (opt directory).Configure huge pages
Allocate huge pages for optimal performance:For detailed large page and NUMA configuration:
Build and run
Build and run the development validator:The
make run target runs the fddev dev command, which will:- Ensure your system is configured correctly
- Create a genesis block
- Generate keys and set up a faucet
- Start a validator on the local machine
fddev will use sudo to make privileged changes to system configuration where needed. If sudo is not available, you may need to run the command as root.Development Cluster
By default,fddev creates a new development cluster. To join this cluster with other validators:
- Define
[rpc.entrypoints]in the configuration file - Point it at your first validator
- Run
fddev devagain
Dependency Management
Thedeps.sh script supports several commands:
Build Configuration
Firedancer uses GNU Make with machine-specific configurations. The compiler discovers dependencies via:Next Steps
Once your environment is set up:- Review the Code Style Guide to understand Firedancer coding standards
- Learn about Building for Development to explore different build options
- Set up your Testing Environment to run the test suite