• Stars
    star
    119
  • Rank 297,930 (Top 6 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created about 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Minimal asynchronous runtime for Rust

Pasts

Changelog | Source | Getting Started

tests GitHub commit activity GitHub contributors
Crates.io Crates.io Crates.io (recent)
Crates.io Docs.rs

Minimal and simpler alternative to the futures crate.

The pasts asynchronous runtime is designed for creating user-space software and embedded software using an asynchronous event loop. It aims to abstract away all of the pain points of using asynchronous Rust. Pasts is purposely kept small with the entire source directory under 500 lines of Rust code.

Check out the documentation for examples.

Goals

  • No unsafe (safe and sound)
  • No required std (executor requires two allocations at startup, if needed can use a bump allocator with small capacity)
  • No macros (fast compile times)
  • No dependencies1 (bloat-free)
  • No cost (true zero-cost abstractions)
  • No pain (API super easy to learn & use)
  • No platform-specific API differences (code works everywhere).

Supported Platforms

Pasts targets all platforms that can run Rust. The executor works on at least the following platforms (may work on others):

  • All platforms that support threading (includes all tier 1 and some tier 2, 3)
  • Web Assembly In Browser (Tier 2)
  • No standard devices (Tiers 2 and 3)

License

Copyright © 2019-2023 The Pasts Contributors.

Licensed under any of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as described above, without any additional terms or conditions.

Help

If you want help using or contributing to this library, feel free to send me an email at [email protected].

Related Projects

Since pasts is not an all-in-one async runtime solution, here's a list of crates that are designed to work well with pasts:

  • Async Main - Proc macro crate to remove boilerplate for the main function
  • Whisk - No-std compatible MPMC (multi-producer/multiple-consumer) asynchronous channel
  • Smelling Salts - Library for asynchronous device waking using OS APIs
  • Lookit - Library for asynchronously connecting to devices using OS APIs

Footnotes

  1. Some features require a platform integration dependency, for instance:

    ↩

More Repositories

1

whoami

Rust crate to get the current user and environment.
Rust
189
star
2

wavy

Asynchronous cross-platform real-time audio recording & playback.
Rust
84
star
3

stick

Rust library for platform-agnostic asynchronous gamepad, joystick, and flightstick interaction
Rust
76
star
4

fon

Rust audio types, resampling, converting, and mixing library.
Rust
42
star
5

fonterator

Load fonts as vector graphics in pure Rust with advanced text layout.
Rust
40
star
6

window

Minimal Rust code for creating a window with native headerbars.
Rust
19
star
7

ardaku

General-purpose application engine for WebAssembly. Implementation of the Daku API.
Rust
17
star
8

alloy

A fast and minimalistic image viewer forked from the now discontinued emulsion.
Rust
16
star
9

quantii

An operating system running the Ardaku engine.
Rust
14
star
10

whisk

Simple and fast async channels
Rust
14
star
11

smelling_salts

Start a thread to wake an async executor when the OS's I/O event notifier gathers that the hardware is ready.
Rust
10
star
12

caved

Codecs for Audio and Video Encoding and Decoding for Rust.
C
8
star
13

wari

Experimental WebAssembly Runtime for RISC processors.
Rust
6
star
14

audio

A collection of safe Rust audio encoder/decoder crates designed for usage with fon.
C
4
star
15

qiish

Builtin terminal for Quantii. Short for QuantII SHELL (note capitals)
Rust
3
star
16

dimi

Cross-Platform Async MIDI Instrument Library for Rust.
Rust
3
star
17

async_main

Runtime-agnostic async main proc macro
Rust
3
star
18

scour

Fuzzy search implementation in Rust
Rust
3
star
19

daku

Asynchronous host interface abstraction API for WebAssembly plugins, drivers, applications, and more!
Rust
2
star
20

dive

Dive Application Launcher / Desktop Environment For Ardaku
Rust
2
star
21

lookit

Rust crate to asynchronously get device connection events.
Rust
2
star
22

ember

Semantic filesystem implemented in Rust
Rust
2
star
23

nucleic

The Nucleic Desktop Environment
Rust
2
star
24

rvg

Resizable Vector Graphics (RVG) format.
Rust
2
star
25

sprengui

Rust Native-ish GUI Toolkit - Designed for use with Cala, but not limited to Cala.
Rust
2
star
26

traitful

A collection of helper attribute macros for trait patterns
Rust
1
star
27

human

Human interface devices abstraction
Rust
1
star
28

quantii-pack

Create a quantii installer toml
Rust
1
star
29

cruith

Cruith Maximum Contrast Theme; designed for usage with Sprengui.
1
star
30

mali-simulator

Scala
1
star
31

qiish-argparse

Argument parser for Quantii Shell (Qiish)
Rust
1
star
32

kbrd

Keyboard input
Rust
1
star
33

quantii-docs

Documentation for Quantii
1
star
34

wasite

WASI Terminal Environment API
Rust
1
star
35

clot

An opinionated mini argument parsing library that doesn't use macros.
Rust
1
star