{"id":21945234,"url":"https://github.com/ardaku/pasts","last_synced_at":"2025-04-05T07:05:46.012Z","repository":{"id":37051195,"uuid":"221569535","full_name":"ardaku/pasts","owner":"ardaku","description":"Minimal asynchronous runtime for Rust","archived":false,"fork":false,"pushed_at":"2024-08-10T22:10:17.000Z","size":766,"stargazers_count":127,"open_issues_count":9,"forks_count":9,"subscribers_count":3,"default_branch":"v0","last_synced_at":"2025-03-29T06:05:14.774Z","etag":null,"topics":["async-await","asynchronous-programming","futures","futures-crate","no-std","rust","rust-crate"],"latest_commit_sha":null,"homepage":"https://docs.rs/crate/pasts/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ardaku.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE_APACHE_2_0.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-13T23:15:34.000Z","updated_at":"2025-03-06T03:40:45.000Z","dependencies_parsed_at":"2024-12-15T10:00:46.929Z","dependency_job_id":null,"html_url":"https://github.com/ardaku/pasts","commit_stats":{"total_commits":338,"total_committers":7,"mean_commits":"48.285714285714285","dds":"0.33136094674556216","last_synced_commit":"913e85bdeb87b9e9664fbffcfc52d4494b141b4f"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardaku%2Fpasts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardaku%2Fpasts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardaku%2Fpasts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ardaku%2Fpasts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ardaku","download_url":"https://codeload.github.com/ardaku/pasts/tar.gz/refs/heads/v0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299832,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async-await","asynchronous-programming","futures","futures-crate","no-std","rust","rust-crate"],"created_at":"2024-11-29T04:18:02.641Z","updated_at":"2025-04-05T07:05:45.993Z","avatar_url":"https://github.com/ardaku.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pasts\n\n#### [Changelog][3] | [Source][4] | [Getting Started][5]\n\n[![tests](https://github.com/ardaku/pasts/actions/workflows/ci.yml/badge.svg)](https://github.com/ardaku/pasts/actions/workflows/ci.yml)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/y/ardaku/pasts)](https://github.com/ardaku/pasts/)\n[![GitHub contributors](https://img.shields.io/github/contributors/ardaku/pasts)](https://github.com/ardaku/pasts/graphs/contributors)  \n[![Crates.io](https://img.shields.io/crates/v/pasts)](https://crates.io/crates/pasts)\n[![Crates.io](https://img.shields.io/crates/d/pasts)](https://crates.io/crates/pasts)\n[![Crates.io (recent)](https://img.shields.io/crates/dr/pasts)](https://crates.io/crates/pasts)  \n[![Crates.io](https://img.shields.io/crates/l/pasts)](https://github.com/ardaku/pasts/search?l=Text\u0026q=license)\n[![Docs.rs](https://docs.rs/pasts/badge.svg)](https://docs.rs/pasts/)\n\n**Minimal asynchronous runtime for Rust**\n\nThe pasts asynchronous runtime is designed for creating user-space software and\nembedded software using an asynchronous event loop.  It aims to abstract away\nall of the pain points of using asynchronous Rust.  Pasts is purposely kept\nsmall with the entire source directory under 500 lines of Rust code.\n\nCheck out the [documentation][0] for examples.\n\n# Goals\n - No unsafe (safe and sound)\n - No required std (executor requires two allocations at startup, if needed can\n   use a bump allocator with small capacity)\n - No macros (fast compile times)\n - No dependencies[^1] (bloat-free)\n - No cost (true zero-cost abstractions)\n - No pain (API super easy to learn \u0026 use)\n - No platform-specific API differences (code works everywhere).\n\n### Supported Platforms\nPasts targets all platforms that can run Rust.  The executor works\non at least the following platforms (may work on others):\n - All platforms that support threading (includes all tier 1 and some tier 2, 3)\n - Web Assembly In Browser (Tier 2)\n - No standard devices (Tiers 2 and 3)\n\n## License\nCopyright © 2019-2023 The Pasts Contributors.\n\nLicensed under any of\n - Apache License, Version 2.0, ([LICENSE_APACHE_2_0.txt][7]\n   or [https://www.apache.org/licenses/LICENSE-2.0][8])\n - Boost Software License, Version 1.0, ([LICENSE_BOOST_1_0.txt][11]\n   or [https://www.boost.org/LICENSE_1_0.txt][12])\n - MIT License, ([LICENSE_MIT.txt][9] or [https://mit-license.org/][10])\n\nat your option.\n\n### Contribution\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\nlicensed as described above, without any additional terms or conditions.\n\n## Help\nIf you want help using or contributing to this library, feel free to send me an\nemail at [aldaronlau@gmail.com][13].\n\n## Related Projects\nSince pasts is not an all-in-one async runtime solution, here's a list of crates\nthat are designed to work well with pasts:\n\n - [Async Main] - Proc macro crate to remove boilerplate for the main function\n - [Whisk] - No-std compatible MPMC (multi-producer/multiple-consumer)\n   asynchronous channel\n - [Smelling Salts] - Library for asynchronous device waking using OS APIs\n - [Lookit] - Library for asynchronously connecting to devices using OS APIs\n - [Event Iterator] - Library for lending asynchronous iteration\n\n[^1]: Some features require a platform integration dependency, for instance:\n      - **`web`** pulls in [`wasm-bindgen-futures`][14]\n\n[0]: https://docs.rs/pasts\n[1]: https://crates.io/crates/pasts\n[2]: https://github.com/ardaku/pasts/actions?query=workflow%3Atests\n[3]: https://github.com/ardaku/pasts/blob/stable/CHANGELOG.md\n[4]: https://github.com/ardaku/pasts\n[5]: https://docs.rs/pasts#getting-started\n[6]: https://aldaronlau.com/\n[7]: https://github.com/ardaku/pasts/blob/stable/LICENSE_APACHE_2_0.txt\n[8]: https://www.apache.org/licenses/LICENSE-2.0\n[9]: https://github.com/ardaku/pasts/blob/stable/LICENSE_MIT.txt\n[10]: https://mit-license.org/\n[11]: https://github.com/ardaku/pasts/blob/stable/LICENSE_BOOST_1_0.txt\n[12]: https://www.boost.org/LICENSE_1_0.txt\n[13]: mailto:aldaronlau@gmail.com\n[14]: https://docs.rs/crate/wasm-bindgen-futures/latest\n[15]: https://docs.rs/crate/pin-utils/latest\n\n[Async Main]: https://docs.rs/crate/async_main\n[Lookit]: https://docs.rs/crate/lookit\n[Smelling Salts]: https://docs.rs/crate/smelling_salts\n[Whisk]: https://docs.rs/crate/whisk\n[Event Iterator]: https://docs.rs/crate/event_iterator\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardaku%2Fpasts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fardaku%2Fpasts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fardaku%2Fpasts/lists"}