No description
  • C 46.6%
  • Shell 29.1%
  • Rust 11.1%
  • Swift 8.3%
  • Starlark 2.5%
  • Other 2.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-22 23:51:01 -07:00
.forgejo/workflows Wire the fail-closed Forgejo release lane 2026-08-22 16:15:08 -07:00
artifacts Track canonical bcachefs test fixtures 2026-08-22 14:55:51 -07:00
BCache Retain Swift parity coverage for FSKit policies 2026-08-22 15:02:55 -07:00
BCacheCLI Add the read-only Swift command engine 2026-08-22 15:02:56 -07:00
BCacheFFI Correct the hosted source delta inventory 2026-08-22 23:51:01 -07:00
BCacheFormat Add the native bcachefs formatter 2026-08-22 15:02:57 -07:00
BCacheFSKit Introduce the Rust FSKit extension and host-only app 2026-08-22 15:02:51 -07:00
BCacheFSKit.xcodeproj Prepare the repository for public collaboration 2026-08-22 15:05:43 -07:00
BCacheRust Introduce the Rust FSKit extension and host-only app 2026-08-22 15:02:51 -07:00
BCacheRustCLI Honor the selected Xcode in native CLI builds 2026-08-22 16:13:46 -07:00
BCacheTool Add the hardened bcachefs launcher distribution 2026-08-22 15:03:01 -07:00
BCacheWorker Add the offline maintenance worker 2026-08-22 15:02:59 -07:00
documentation Migrate BCFS governance to evolution and extend runtime stubs 2026-03-01 15:31:04 -08:00
evolution Accept the writable userspace runtime design 2026-08-22 15:01:52 -07:00
External Implement the concurrent hosted bcachefs runtime 2026-08-22 15:02:25 -07:00
scripts Fail closed on provenance-bearing E2E inputs 2026-08-22 23:33:51 -07:00
Sources/CBcacheFS/compat/include/generated Bootstrap readonly bcachefs bring-up with Bazel 9 2026-02-28 21:50:22 -08:00
Tests/Release Fail closed on provenance-bearing E2E inputs 2026-08-22 23:33:51 -07:00
.bazelrc Implement the concurrent hosted bcachefs runtime 2026-08-22 15:02:25 -07:00
.bazelversion Bootstrap readonly bcachefs bring-up with Bazel 9 2026-02-28 21:50:22 -08:00
.gitignore Prepare the repository for public collaboration 2026-08-22 15:05:43 -07:00
.gitmodules Prepare the repository for public collaboration 2026-08-22 15:05:43 -07:00
BUILD.bazel Pin Apple provisioning profile CMS trust 2026-08-22 16:31:40 -07:00
CONSTITUTION.md Accept the writable userspace runtime design 2026-08-22 15:01:52 -07:00
LICENSE Prepare the repository for public collaboration 2026-08-22 15:05:43 -07:00
MODULE.bazel Implement the concurrent hosted bcachefs runtime 2026-08-22 15:02:25 -07:00
MODULE.bazel.lock Bootstrap readonly bcachefs bring-up with Bazel 9 2026-02-28 21:50:22 -08:00
README.md Wire the fail-closed Forgejo release lane 2026-08-22 16:15:08 -07:00
TESTING.md Expand the documented TSan concurrency gate 2026-08-22 16:23:22 -07:00

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.