- C 46.6%
- Shell 29.1%
- Rust 11.1%
- Swift 8.3%
- Starlark 2.5%
- Other 2.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| artifacts | ||
| BCache | ||
| BCacheCLI | ||
| BCacheFFI | ||
| BCacheFormat | ||
| BCacheFSKit | ||
| BCacheFSKit.xcodeproj | ||
| BCacheRust | ||
| BCacheRustCLI | ||
| BCacheTool | ||
| BCacheWorker | ||
| documentation | ||
| evolution | ||
| External | ||
| scripts | ||
| Sources/CBcacheFS/compat/include/generated | ||
| Tests/Release | ||
| .bazelrc | ||
| .bazelversion | ||
| .gitignore | ||
| .gitmodules | ||
| BUILD.bazel | ||
| CONSTITUTION.md | ||
| LICENSE | ||
| MODULE.bazel | ||
| MODULE.bazel.lock | ||
| README.md | ||
| TESTING.md | ||
BCacheFSKit
BCacheFSKit is an experimental macOS FSKit implementation for bcachefs. It hosts reviewed bcachefs userspace code behind a C FFI, implements the shipping file-system extension in Rust, and includes native format, maintenance, and command-line tools.
The current generation focuses on multi-session and multi-thread correctness: per-resource lifecycle ownership, concurrent block I/O, journal publication, wait queues, RCU/SRCU, workqueues, and independent writable mounts all have focused tests. See TESTING.md for the source gate and live FSKit acceptance sequence.
Status
This is pre-release software. Generation 16 uses an Apple-Development-only
AppleLIFSUserClient diagnostic entitlement to exercise a macOS FSKit I/O
path affected by Apple bug FB18614667/r.155070316. That local diagnostic is not
a Developer ID distribution policy and must not be presented as one.
Build and test
Initialize the two pinned upstream submodules, then run:
git submodule update --init --recursive
bazelisk --bazelrc=.bazelrc test //:release_tests
Use Bazelisk 1.28.1. The remote workflow pins the Apple-silicon binary by
SHA-256 so a fresh clone does not depend on the ignored local .tools/ cache.
The local signed-bundle and live acceptance procedures require a local Apple Development identity and matching FSKit provisioning profile. Developer ID signing is reserved for the protected remote release lane.
That remote lane is staged but intentionally disabled. It builds an unsigned
closed-world app on macOS, signs recursively with Conrad's Developer ID key in
Google Cloud KMS using the pinned Burrow stack, notarizes on Linux, and returns
to macOS for native signature, entitlement, stapling, and Gatekeeper checks.
release_ready=false remains the first gate until the generation-16
AppleLIFS diagnostic and kernel-offload discovery workaround are both removed,
a post-generation-16 candidate passes live FSKit acceptance, and the
repository-scoped WIF, protected branch, direct-distribution profiles, and
notary secrets exist. None of those release credentials are needed for local
development.
Source modifications
Upstream bcachefs and bcachefs-tools are pinned to public commits. Hosted
source mirrors, intentional shadows, compatibility wrappers, and their exact
hashes are recorded in
BCacheFFI/Sources/CBcacheFS/HOSTED_PROVENANCE.v1.tsv; rationale is in
BCacheFFI/Sources/CBcacheFS/HOSTED_OVERRIDES.md.
BCacheFSKit is licensed under GPL-2.0-only. See LICENSE.