9 releases

0.1.9 Mar 27, 2021
0.1.8 Mar 26, 2021
0.1.7 Dec 29, 2020

#293 in Asynchronous

43 downloads per month
Used in 2 crates

Apache-2.0

175KB
2.5K SLoC

safina

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

A safe Rust async runtime.

Features

  • forbid(unsafe_code)
  • Depends only on std
  • Good test coverage (>92%)

Limitations

Documentation

https://docs.rs/safina

safina_async_test has an #[async_test] macro for running async fn test functions.

Examples

let executor = safina::Executor::default();
let (sender, receiver) = std::sync::mpsc::channel();
executor.spawn(async move {
    sender.send(()).unwrap();
});
receiver.recv().unwrap();
let result = safina::block_on(async {
    prepare_request().await?;
    execute_request().await
})?;

Alternatives

  • smol
    • Popular
    • Contains generous amounts of unsafe code
  • async-std
    • Very popular
    • Contains generous amounts of unsafe code
  • futures
    • Very popular
    • Contains generous amounts of unsafe code
  • tokio
    • Very popular
    • Fast
    • Internally extremely complicated
    • Full of unsafe
  • bastion
    • Generous amounts of unsafe code
  • nostd_async

Changelog

  • v0.1.9 - Use once_cell by default.
  • v0.1.8 - Support stable with rust 1.51 and once_cell.
  • v0.1.7 - Add safina-net
  • v0.1.6 - Use safina-executor v0.1.3 API
  • v0.1.5 - Add safina_sync::Mutex
  • v0.1.4 - Upgrade to new safina-executor version which removes need for Box::pin.
  • v0.1.3 - Update docs
  • v0.1.2 - Renamed safina crate to safina-executor. Added new safina crate with re-exports, examples, and integration tests.
  • v0.1.1 - Add badges to readme
  • v0.1.0 - First published version

Happy Contributors 🙂

Fixing bugs and adding features is easy and fast. Send us a pull request and we intend to:

  • Always respond within 24 hours
  • Provide clear & concrete feedback
  • Immediately make a new release for your accepted change

TO DO

  • DONE - Make it work on Rust stable
  • Add an integration test
  • Add init function that starts worker threads and the timer thread.
  • Add an #[async_main] macro

Release Process

  1. Edit Cargo.toml and bump version number.
  2. Run ./release.sh

License: Apache-2.0

Dependencies

~77KB