We welcome contributions to Apache Iceberg C++. For general Iceberg contribution guidelines, see the official guide. Contributors using AI-assisted tools must follow the AI-assisted contribution guidelines.
For build and installation instructions, see Getting Started.
The project follows the same coding standard as Apache Arrow (a variant of the Google’s C++ Style Guide)
| Element | Style | Examples |
|---|---|---|
| Classes / Structs | PascalCase | TableScanBuilder, PartitionSpec |
| Factory methods | PascalCase | CreateNamespace(), ExtractYear() |
| Accessors / Getters | snake_case | name(), type_id(), partition_spec() |
| Variables | snake_case | file_io, schema_id |
| Constants | k + PascalCase | kHeaderContentType, kMaxPrecision |
std::unique_ptr, std::shared_ptr) for memory managementResult<T> for error propagation/// \brief ...) for all public APIs[[deprecated("Use new_method() instead. Will be removed in a future release.")]] void old_method();
Formatting is enforced via .clang-format (Google base, ColumnLimit: 90). Set up pre-commit to run it automatically:
pip install pre-commit pre-commit install
To run all hooks manually on the entire codebase:
pre-commit run -a
We provide Dev Container templates for VS Code:
cd .devcontainer cp Dockerfile.template Dockerfile cp devcontainer.json.template devcontainer.json
Then select Dev Containers: Reopen in Container from the Command Palette.
main:git checkout -b feature/your-feature-name
pre-commit run -a is cleanFollow Conventional Commits:
feat: add support for S3 file system fix: resolve memory leak in table reader docs: update API documentation test: add unit tests for schema validation refactor(rest): simplify auth token handling
The Apache Iceberg community follows the Apache Way and the Apache Foundation Code of Conduct.