20 unstable releases (5 breaking)

0.6.0 Nov 3, 2024
0.4.1 Oct 27, 2024
0.3.3 Apr 1, 2022
0.3.2 Mar 24, 2022
0.1.7 Dec 29, 2020

#95 in Asynchronous


Used in 4 crates (3 directly)

Apache-2.0

140KB
2K SLoC

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

A safe Rust async runtime.

Features

  • forbid(unsafe_code)
  • Depends only on std at runtime
  • Good test coverage (>85%)

Limitations

  • No fs module yet. async-fs is a fast async networking library that works well with Safina. It contains some unsafe code.
  • net module has poor performance. async-net is a fast async networking library that works well with Safina. It contains some unsafe code.
  • Not optimized

Examples

use std::sync::Arc;
use safina::executor::Executor;

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

Alternatives

  • smol
    • Popular
    • Contains some 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 code
  • bastion
    • Generous amounts of unsafe code
  • nostd_async

Cargo Geiger Safety Report


Metric output format: x/y
    x = unsafe code used by the build
    y = total unsafe code found in the crate

Symbols: 
    🔒  = No `unsafe` usage found, declares #![forbid(unsafe_code)]= No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☢️  = `unsafe` usage found

Functions  Expressions  Impls  Traits  Methods  Dependency

0/0        0/0          0/0    0/0     0/0      🔒  safina 0.6.0
0/0        0/0          0/0    0/0     0/0      🔒  └── safina-macros 0.1.3
0/0        0/0          0/0    0/0     0/0      🔒      ├── safe-proc-macro2 1.0.67
0/0        4/4          0/0    0/0     0/0      ☢️      │   └── unicode-ident 1.0.13
0/0        0/0          0/0    0/0     0/0      🔒      └── safe-quote 1.0.15
0/0        0/0          0/0    0/0     0/0      🔒          └── safe-proc-macro2 1.0.67

0/0        4/4          0/0    0/0     0/0    

Changelog

Changelog
  • v0.6.0 2024-11-02 - Simplify ExecutorBuilder.
  • v0.5.0 2024-10-27 - Add ExecutorBuilder and simplify Executor constructors.
  • v0.4.1 2024-10-27 - Improve async_test:
    • Make async_test a default feature so it shows up in docs.rs.
    • Timeout after 5s.
    • Override timeout with #[async_test(timeout_sec = 1)].
    • Support #[should_panic] and other test modifier macros.
    • Stop adding _ to the end of the test name.
  • v0.4.0 2024-10-26 - Merge crates into this crate.
  • v0.3.3 - Update docs.
  • v0.3.2 - Add threadpool module.
  • v0.3.1
    • Add sync_channel and SyncSender.
    • Add Receiver::async_recv to let users await without writing ugly (&mut receiver).await.
    • Remove Receiver::blocking and add try_recv, recv, etc.
  • v0.3.0
    • Move structs into sub-modules.
    • Replace Promise with oneshot, OneSender, and Receiver that supports async and blocking reads.
    • schedule_blocking to return new sync::Receiver.
  • v0.2.1 - Update docs.
  • v0.2.0
    • Executor::new and Executor::with_name to return Result.
    • ThreadPool::new to return Result.
    • ThreadPool::try_schedule to return an error when it fails to restart panicked threads.
    • ThreadPool::schedule to handle failure starting replacement threads.
  • v0.1.10 - block_on functions to take futures that are not Send.
  • 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

TO DO

  • Add init function that makes an executor and starts the timer thread.
  • Add an #[async_main] macro

License: Apache-2.0

Dependencies

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy