#flock #locking #file #fs2

fs4

No libc, pure Rust cross-platform file locks. Original fs2, now supports async and replace libc by rustix.

28 releases (4 stable)

1.1.0 Apr 28, 2026
0.13.1 Mar 8, 2025
0.12.0 Nov 30, 2024
0.9.1 Jul 30, 2024
0.5.4 Dec 31, 2021

#11 in Filesystem

Download history 778104/week @ 2026-01-22 749627/week @ 2026-01-29 670644/week @ 2026-02-05 685816/week @ 2026-02-12 782915/week @ 2026-02-19 844451/week @ 2026-02-26 951639/week @ 2026-03-05 882035/week @ 2026-03-12 654582/week @ 2026-03-19 676081/week @ 2026-03-26 810495/week @ 2026-04-02 947413/week @ 2026-04-09 922232/week @ 2026-04-16 903190/week @ 2026-04-23 924375/week @ 2026-04-30 1043541/week @ 2026-05-07

3,971,459 downloads per month
Used in 827 crates (154 directly)

MIT/Apache

120KB
2K SLoC

fs4

Extended utilities for working with files and filesystems in Rust.

This is a fork of the fs2-rs crate, the aim for this fork is to support async and replace libc by rustix.

github LoC Build codecov

docs.rs crates.io crates.io license

Installation

  • std

    [dependencies]
    fs4 = { version = "1", features = ["sync"] }
    
  • async-std runtime

    [dependencies]
    fs4 = { version = "1", features = ["async-std"] }
    
  • fs-err v2

    [dependencies]
    fs4 = { version = "1", features = ["fs-err2"] }
    
  • fs-err-tokio v2

    [dependencies]
    fs4 = { version = "1", features = ["fs-err2-tokio"] }
    
  • fs-err v3

    [dependencies]
    fs4 = { version = "1", features = ["fs-err3"] }
    
  • fs-err-tokio v3

    [dependencies]
    fs4 = { version = "1", features = ["fs-err3-tokio"] }
    
  • smol runtime

    [dependencies]
    fs4 = { version = "1", features = ["smol"] }
    
  • tokio runtime

    [dependencies]
    fs4 = { version = "1", features = ["tokio"] }
    

Features

Minimum Supported Rust Version

fs4 itself compiles on Rust 1.75.0 (the value of rust-version in Cargo.toml), and that guarantee covers the default sync feature.

Some opt-in features inherit a higher MSRV from their transitive dependencies — enabling them requires whatever toolchain those crates ask for, not what fs4 declares:

Feature Effective MSRV Reason
async-std 1.85 async-std pulls async-lock >= 3.4.2 (rust-version = 1.85)
smol 1.85 smol pulls async-signal >= 0.2.14 (rust-version = 1.85)

These bounds are set by upstream and can drift with future minor releases; pin the relevant dependency if you need an older toolchain.

Platform Notes

Fuchsia

Every feature builds on Fuchsia except fs-err3 and fs-err3-tokio. The blocker is upstream: fs-err v3.3.0 calls std::os::unix::fs::chroot, which rustc gates out on target_os = "fuchsia". The fs4 Unix modules themselves compile on Fuchsia (sync, fs-err2, async-std, smol, tokio all work). Tracking issue: https://github.com/andrewhickman/fs-err/issues/90.

License

fs4 is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE, LICENSE-MIT for details.

Copyright (c) 2026 Al Liu.

Copyright (c) 2015 Dan Burkert.

Dependencies

~1.4–8MB
~165K SLoC