Skip to main content
Version: dev

Development

How to build Apache Fory™

Clone the source tree from https://github.com/apache/fory.

Build Apache Fory™ Java

cd java
mvn -T16 package

Environment Requirements

  • JDK 17+
  • Maven 3.6.3+

Build Apache Fory™ Python

cd python
pip install -v -e .

# Optional: build Cython extension (replace X.Y with your Python version)
bazel build //:cp_fory_so --@rules_python//python/config_settings:python_version=X.Y

Environment Requirements

  • CPython 3.8+
  • Bazel 8+ (required when building Cython extensions)

Build Apache Fory™ C++

cd cpp
bazel build //cpp/...

Environment Requirements

  • C++17 compiler
  • Bazel 8+

Build Apache Fory™ Go

cd go/fory
go test -v ./...

Run Go xlang tests from Java test module:

cd java
mvn -T16 install -DskipTests
cd fory-core
FORY_GO_JAVA_CI=1 ENABLE_FORY_DEBUG_OUTPUT=1 mvn test -Dtest=org.apache.fory.xlang.GoXlangTest

Environment Requirements

  • Go 1.24+

Build Apache Fory™ Rust

cd rust
cargo build
cargo test --features tests

# Debug a specific test
RUST_BACKTRACE=1 FORY_PANIC_ON_ERROR=1 ENABLE_FORY_DEBUG_OUTPUT=1 \
cargo test --test mod $dir$::$test_file::$test_method -- --nocapture

Environment Requirements

  • Rust toolchain via rustup
  • cargo-expand (optional, for macro expansion debugging)

Build Apache Fory™ JavaScript

cd javascript
npm install

npm run build
node ./node_modules/.bin/jest --ci --reporters=default --reporters=jest-junit

Environment Requirements

  • Node.js (LTS)
  • npm

Lint Markdown Docs

cd docs
npx prettier --write "**/*.md"

Environment Requirements

  • Node.js (LTS)
  • npm

Contributing

For contribution details, see How to contribute to Apache Fory™.