Explore a Rust interface for CCF applications - #8200
Draft
Amaury Chamayou (achamayou) wants to merge 20 commits into
Draft
Explore a Rust interface for CCF applications#8200Amaury Chamayou (achamayou) wants to merge 20 commits into
Amaury Chamayou (achamayou) wants to merge 20 commits into
Conversation
Copilot started reviewing on behalf of
Amaury Chamayou (achamayou)
August 26, 2026 12:29
View session
Amaury Chamayou (achamayou)
force-pushed
the
achamayou-rust-interface-exploration
branch
from
August 26, 2026 12:31
fc3606c to
ae04da5
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Introduces exploratory Rust support for native CCF applications through a C ABI bridge and Rust SDK.
Changes:
- Adds endpoint, authentication, response, and raw KV APIs.
- Adds Cargo/CMake integration and packaging.
- Adds a sample application, E2E coverage, documentation, and changelog entry.
Custom instructions used
.github/copilot-instructions.md.github/instructions/changelog.instructions.md.github/instructions/reviewing.instructions.md
Reviewed changes
Copilot reviewed 17 out of 19 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
CHANGELOG.md |
Announces Rust application support. |
CMakeLists.txt |
Installs Rust sources and registers the E2E test. |
cmake/ccf_app.cmake |
Adds the Rust application build helper. |
cmake/gersemi_definitions.cmake |
Registers the helper for CMake formatting. |
include/ccf/rust_ffi.h |
Defines the public C ABI. |
src/rust/app_bridge.cpp |
Implements the C++ bridge and endpoint registry. |
src/rust/ccf-app/Cargo.toml |
Defines the Rust SDK crate. |
src/rust/ccf-app/Cargo.lock |
Locks the SDK crate. |
src/rust/ccf-app/src/lib.rs |
Implements the Rust-facing API and handlers. |
samples/CMakeLists.txt |
Includes the Rust sample. |
samples/apps/basic_rust/CMakeLists.txt |
Builds the sample application. |
samples/apps/basic_rust/Cargo.toml |
Defines the sample crate. |
samples/apps/basic_rust/Cargo.lock |
Locks sample dependencies. |
samples/apps/basic_rust/rust-toolchain.toml |
Pins Rust 1.90. |
samples/apps/basic_rust/src/lib.rs |
Implements records and health endpoints. |
tests/basic_rust.py |
Exercises authentication and KV behavior. |
doc/build_apps/index.rst |
Adds Rust to the application overview. |
doc/build_apps/get_started.rst |
Links Rust build guidance. |
doc/build_apps/example_rust.rst |
Documents the initial Rust interface. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Amaury Chamayou (achamayou)
force-pushed
the
achamayou-rust-interface-exploration
branch
from
August 26, 2026 14:42
b50fb7c to
66b1b47
Compare
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve compaction retry semantics, reject unsupported HTTP status codes, and keep the CI test bucket inventory in sync. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Stabilize the C ABI, preserve Cargo dependency tracking, register Rust unit tests, enforce unwind panics, and clarify native application trust semantics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Amaury Chamayou (achamayou)
force-pushed
the
achamayou-rust-interface-exploration
branch
from
August 28, 2026 14:05
fa47450 to
30b12d6
Compare
Copilot started reviewing on behalf of
Amaury Chamayou (achamayou)
August 28, 2026 17:22
View session
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Member
Author
|
Copilot resolve the merge conflicts in this pull request |
Co-authored-by: achamayou <4016369+achamayou@users.noreply.github.com>
Contributor
Resolved: merged the branch with |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This draft explores what it would take to support native CCF applications written in Rust while keeping the integration boundary small and explicit.
It introduces:
ccf-appRust crate for endpoint registration, request and response handling, authentication selection, and raw-byte KV access;Goal
The goal is to evaluate the viability and ergonomics of Rust as another native CCF application language without exposing C++ implementation details across the boundary. The proposed API deliberately starts small so that ownership, lifetime, panic containment, transaction, concurrency, and packaging concerns can be reviewed before expanding the surface area.
Exploration status
This is exploratory work, not a commitment to a stable or production-supported Rust SDK. The current interface intentionally omits advanced endpoint configuration, custom authentication policies, historical queries, indexing, and commit callbacks. Feedback is especially welcome on the ABI design, safety guarantees, SDK ergonomics, and long-term maintenance implications.
This replays the work from achamayou/CCF#107 onto the current
microsoft/CCFmainbranch so it can be discussed and evaluated in the upstream repository.