libc

Raw FFI bindings to platform system libraries for Rust

Library
Cargo
v0.2.191
2,632 stars
MIT OR Apache-2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
93 /100 Excellent
Development Activity 96
Maintenance 96
Community 80
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
76 /100 Good
Architecture 85
Code Quality 90
Innovation 70
Learning Curve 60

libc provides raw FFI (foreign function interface) bindings to the C system library on every platform Rust supports — type definitions like c_int, constants like EINVAL, and function declarations like malloc. It is one of the most-depended-upon crates in the Rust ecosystem, forming the low-level foundation that higher-level system-interaction crates build on.

All exported items match the exact types and values of the platform libc is compiled for, and everything is accessible directly under the crate root as libc::foo. It deliberately excludes Windows API bindings, which live in the separate windows-sys crate, keeping its scope tightly focused on C-compatible system interfaces across Unix-like systems, Windows’ C runtime, WASI, and embedded targets.

What You Get

  • Raw type definitions (c_int, c_char, etc.) matching each supported platform’s C ABI exactly
  • Constants for system-level values like errno codes (EINVAL), file flags, and signal numbers
  • Function declarations for core C library calls such as malloc, open, and pthread primitives
  • Platform-specific modules covering Unix variants, Windows’ C runtime, WASI, Fuchsia, and embedded/RTOS targets
  • A stable, near-universal dependency that higher-level crates (Tokio, nix, mio) build their safe abstractions on top of

Common Use Cases

  • Writing low-level system programming crates that need direct syscall or C library access
  • Building safe wrapper crates (like nix or mio) on top of libc’s raw bindings
  • Interfacing Rust code with existing C libraries that expect standard C types and constants
  • Implementing cross-platform low-level utilities that need to branch on platform-specific constants or types
  • Embedded or no-std development targeting RTOS platforms like Hermit, SGX, or VxWorks

Under The Hood

Architecture - The crate root (src/lib.rs) re-exports a large tree of platform-specific modules under src/unix/, src/windows/, src/wasi/, and further per-OS/per-arch subdirectories, each defining the exact struct layouts, constants, and extern "C" function signatures for that target. src/macros.rs and src/types.rs provide the code-generation macros used to keep thousands of near-identical platform declarations consistent, while build.rs handles target-specific compile-time configuration.

Tech Stack - Pure Rust with no_std support for embedded targets, dual-licensed MIT OR Apache-2.0, MSRV 1.65. The ci/verify-build.py script cross-compiles the crate against dozens of Tier 1/2/3 Rust targets (aarch64-apple-darwin, x86_64-pc-windows-msvc, wasm targets, RTOS targets, and more) to catch platform-specific breakage before release.

Code Quality - The libc-test/ctest subdirectories run a C-vs-Rust cross-validation suite that compiles small C programs against the actual system headers and compares struct layouts and constant values against what the crate declares — an unusually rigorous approach for an FFI-bindings crate, since a mismatched struct layout is undefined behavior rather than a compile error. The project is one of the most heavily reviewed crates in the Rust ecosystem given how many other crates transitively depend on it.

API Design - Because this is a raw FFI layer, the API is deliberately unsafe and matches C naming/signatures rather than idiomatic Rust conventions — callers are expected to wrap calls in safe abstractions themselves (which is exactly what crates like nix provide). There is effectively no onboarding curve for using individual bindings (libc::EINVAL, libc::malloc), but using them correctly requires C/systems-programming knowledge the crate does not abstract away.

Used by 24 apps in this directory

Rust
56%
Other

Jan

AI Assistants

45,052

Run LLMs 100% locally with full privacy, or connect to cloud AI — your machine, your data, your control.

View details
90
Repo Health
81
Technical
65
Dependency
Built with
Rust 56%
TypeScript 40%
Updated 5 days ago
C++
33%
BSD 2

Ladybird

Browser

66,651

A truly independent web browser built from scratch — no Chromium, no WebKit, no Gecko.

View details
76
Repo Health
82
Technical
81
Dependency
Built with
C++ 33%
Rust 30%
HTML 24%
Updated 5 days ago
Rust
43%
Apache 2.0

LanceDB

AI Development · Databases

11,757

Open-source, embedded vector database built on the Lance columnar format for fast multimodal search across billions of vectors, backed by Y Combinator (W23).

View details
90
Repo Health
86
Technical
72
Dependency
Built with
Rust 43%
Python 27%
HTML 21%
Updated 5 days ago
TypeScript
78%
LGPL 3.0

Latitude

AI Agents · Monitoring

4,733

Open-source AI agent monitoring that catches what will break next before your users do.

View details
87
Repo Health
88
Technical
67
Dependency
Built with
TypeScript 78%
Python 11%
Rust 11%
Updated 6 days ago
Rust
60%
Apache 2.0

Magnitude

AI Development · Developer Tools

7,313

An open source inference engine that profiles your hardware, recommends the best local models, and tunes them for the coding agent you already use.

View details
79
Repo Health
83
Technical
71
Dependency
Built with
Rust 60%
TypeScript 25%
Updated 5 days ago
TypeScript
95%
MIT

melty

AI Code Assistants · Code Editors · Developer Tools

5,462

The AI code editor where every chat message is a git commit you can revert, branch, or squash

View details
35
Repo Health
75
Technical
67
Dependency
Built with
TypeScript 95%
Updated 1 years ago
C++
66%
Other

Memgraph

AI Development · Databases

4,628

High-performance in-memory graph database for AI context and real-time analytics

View details
90
Repo Health
79
Technical
66
Dependency
Built with
C++ 66%
Python 18%
Updated 5 days ago
Rust
86%
Apache 2.0

mesh-llm

AI Agents · AI Development

3,551

Mesh LLM pools GPUs and memory across every machine you own into one OpenAI-compatible API, so agents tap distributed compute instead of a single GPU box or a metered cloud bill.

View details
85
Repo Health
91
Technical
69
Dependency
Built with
Rust 86%
TypeScript 10%
Updated 5 days ago
Rust
87%
Apache 2.0

OpenShell

AI Agents · Developer Tools

18,930

The safe, private runtime that lets autonomous AI agents operate in sandboxed environments governed by declarative YAML policies — blocking data exfiltration, credential leaks, and unauthorized network activity before they happen.

View details
84
Repo Health
81
Technical
67
Dependency
Built with
Rust 87%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers