rusterlium/rustler

Safe Rust bridge for creating Erlang NIF functions

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 21 minutes ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 14th, 2026
Created on August 18th, 2015
Open Issues & Pull Requests: 50 (+0)
GitHub issues: Enabled
Number of forks: 246
Total Stargazers: 4,864 (+0)
Total Subscribers: 77 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 3.4 hours
Mean response time: 35.8 days
90th percentile: 29.0 days
Tracked items: 42

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 17
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 880 days
Stale 30+ days: 16
Stale 90+ days: 12

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • serde (3)
  • bug (2)
  • enhancement (1)
  • help wanted (1)
  • needs docs (1)

Most active issues this week

Sign in to see which issues are moving.

Detailed Description

Rustler is a library for writing Erlang NIFs in safe Rust code.

Rustler solves the problem of integrating performance-critical Rust code into Erlang and Elixir applications while maintaining the stability of the BEAM virtual machine. The library prevents crashes by catching Rust panics before they unwind into C and provides automatic handling of encoding and decoding between Rust values and Erlang terms. It eliminates boilerplate through attribute macros that make Rust structs automatically encodable and decodable, and supports resource objects that allow safe passing of Rust struct references into Erlang code with automatic cleanup.

Rustler is most suitable for Elixir and Erlang projects that need to call computationally intensive Rust functions. The project currently favors Elixir over pure Erlang. Adoption is straightforward through the rustler Elixir library, which provides a mix task to generate new NIFs. If you are already using serde for serialization, the project supports a serde feature that integrates with existing serde-based workflows. The library maintains compatibility with the three newest major OTP versions and three newest minor Elixir versions, with configurable NIF version support through Cargo features to match your deployment environment.

The project maintains active community engagement through Matrix and Slack channels. Development follows a structured approach to version support, explicitly defining minimal supported Rust versions and NIF versions through documented configuration. The codebase is organized to support both Erlang and Elixir ecosystems, with clear documentation and getting-started guides provided through the official Elixir package.