Tags: donge/clickfs
Tags
release: v0.4.1 (revert v0.4.0 ladder) The elastic tail-buffer ladder shipped in v0.4.0 was a net regression. GNU tail's first read is 8 KiB; the ladder's first rung materialized only ~125 bytes, so the read fell outside the buffer and returned EIO -- 'tail file' produced zero output on Linux. macOS BSD tail never reverse-preads a 2^63-sized file at all, making the ladder dead code there. Restoring v0.3.2 behavior: a single ORDER BY <pk> DESC LIMIT N materialization. With the default N=10000 the buffer comfortably covers GNU tail's 8 KiB read and 'tail file' works as expected on Linux. macOS BSD tail limitation is platform-inherent. -185 LOC vs v0.4.0; no behavior change vs v0.3.2.
fix(build): re-gate mod fs behind the fuse feature Commit 5470e52 (mount-time metadata prefetch) accidentally dropped the #[cfg(feature = "fuse")] attribute on mod fs; while adding the new mod readme;. The macOS CI job runs `cargo check --no-default-features` to verify the crate compiles on platforms without macFUSE installed; that broke as soon as the fs module — which uses fuser:: types throughout — became unconditional. Local cargo build/test were green because the default feature set includes fuse and pulls fuser in. The fix is the original gate; the readme module stays unconditional since it only depends on serde_json + the driver.
release: drop macos-x86_64 target The macos-13 (Intel) GitHub runner pool is congested and adds 10+ minutes to every release. Intel macs can run the arm64 binary via Rosetta 2; install.sh now detects this and uses macos-arm64. - workflow: remove macos-x86_64 matrix entry - install.sh: on Intel mac, warn and fall back to arm64 binary - Cargo.toml: drop x86_64-apple-darwin binstall override
clickfs v0.1.0 — initial release Mount a ClickHouse server as a read-only POSIX filesystem over FUSE. Tested on Linux (libfuse) and macOS (macFUSE) against ClickHouse 25.3. Highlights - Browse databases as directories: /db/<database>/<table>/ - Per-table files: .schema, all.tsv, <partition_id>.tsv - Streaming reads via async->sync mpsc bridge; strict-sequential per fd - FOPEN_DIRECT_IO on data files to avoid kernel readahead surprises - Read-only by design: every mutation returns EROFS - HTTP-only ClickHouse driver with rustls - Clean unmount on SIGTERM/SIGINT - Cancel via dropped HTTP connection + server max_execution_time Quality bar - 11 unit tests, 26 end-to-end cases (tests/e2e.sh) - CI: rustfmt + clippy -D warnings + tests on Linux and macOS - 0 compiler warnings, 0 clippy warnings on stable Rust