fuser (Rustクレート)

FUSEファイルシステムをRustで実装するためのクレート。単なるlibfuseへのバインディングではなく、「Cで書かれた元のFUSEライブラリをRustのアーキテクチャを活かして書き直したもの」を謳っている。zargony/fuse-rsというクレートからフォークして開発を継続する形で始まった。 #rust #linux #ファイルシステム

アーキテクチャ: libfuseなしのpure-Rust実装がデフォルト

FUSEは通常「カーネルドライバ」「ユーザー空間ライブラリ(libfuse)」「ユーザー空間実装」の3層構造だが、fuserはlibfuseを置き換える形でユーザー空間ライブラリ部分を担う。README曰く「mount/unmountの1回の呼び出しを除いて全部Rustで動く。Linuxではこのlibfuse呼び出し自体もオプション」。

Cargo.tomlを見るとlibfuseフィーチャはdefault = []に含まれていない。build.rsもLinux/FreeBSD等でlibfuseフィーチャが無効な場合にはfuser_mount_impl="pure-rust"という設定を選ぶ実装になっている。そのためlibfuse3-devのようなヘッダパッケージを一切インストールせずにビルド・マウントできる(fuse-hello-world実験で確認済み)。libfuse/libfuse3フィーチャを明示的に有効化すれば、従来通りCのlibfuseにリンクする実装に切り替えることもできる。

API設計

Filesystemトレイトを実装する形の低レベルAPI。lookup/getattr/read/readdirのようなコールバックをino番号ベースで自分で実装する。libfuseの高レベル/低レベルAPIでいう低レベルAPI相当の設計にあたる。

対応OS・ライセンス

  • Linux(開発・テストの主対象、fuse/fuse3両対応)
  • macOS(10.9以降、Apple Siliconはkext有効化が必要)
  • FreeBSD
  • MITライセンス

開発方針: コーディングエージェント主体への転換を明言

READMEに以下のように明記されている。

Version 0.18.0 is the last version that was primarily developed without coding agents. Future releases will be developed primarily by a coding agent, as I believe this will lead to higher quality code, and faster feature development. All the changes will receive at least a cursory review from a human, and a full review from a coding agent.

つまり0.18.0が「コーディングエージェントを使わず人間主体で開発された最後のバージョン」で、それ以降はコーディングエージェントが主体で開発する方針に転換したと公式に宣言している。すべての変更は人間による簡易レビューと、コーディングエージェントによるフルレビューを受けるとしている。

出典

作成日時: 2026-08-16 07:32 / 更新日時: 2026-08-16 07:32