f3954ff7e5
This reverts commit 0eef4bfae9c166b48f7a5fbbd6fd7a9cc963ca5d. rust-lang/cargo#1529 has been fixed, so this is no longer necessary. |
||
---|---|---|
.travis/docs | ||
benches | ||
examples | ||
src | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
build.rs |
README.md
libfringe
libfringe is a low-level green threading library for Rust. It's usable in freestanding environments (like kernels), but it can also provide an easy-to-use stack allocator using your operating system's memory mapping facility.
Performance
libfringe does context switches in 3.5ns flat on x86_64!
test swap ... bench: 7 ns/iter (+/- 0)
…and on x86, a mere 2.5ns!
test swap ... bench: 5 ns/iter (+/- 1)
Limitations
libfringe currently doesn't work on anything but x86 and x86_64, and is untested on anything but Linux.
Installation
libfringe is a Cargo package.
It's not stable software yet, so you'll have to use it as a git dependency.
Add this to your Cargo.toml
:
[dependencies.fringe]
git = "https://github.com/edef1c/libfringe.git"
Feature flags
libfringe provides several optional features through Cargo's feature flags. Currently, all of them are enabled by default.
valgrind
Valgrind integration. libfringe will register context stacks with Valgrind.
os
Built-in stack allocator using your your operating system's anonymous memory mapping facility. Currently only available for Unix.