{"id":22901063,"url":"https://github.com/mpdn/rye","last_synced_at":"2025-07-08T03:41:51.737Z","repository":{"id":67595292,"uuid":"304097283","full_name":"mpdn/rye","owner":"mpdn","description":"A tiny experiment into building safe fibers in Rust","archived":false,"fork":false,"pushed_at":"2020-10-16T19:15:46.000Z","size":5,"stargazers_count":26,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-08T01:44:49.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mpdn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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":"2020-10-14T18:08:27.000Z","updated_at":"2025-02-13T12:03:17.000Z","dependencies_parsed_at":"2023-02-26T19:31:26.471Z","dependency_job_id":null,"html_url":"https://github.com/mpdn/rye","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpdn%2Frye","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpdn%2Frye/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpdn%2Frye/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpdn%2Frye/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpdn","download_url":"https://codeload.github.com/mpdn/rye/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252983758,"owners_count":21835759,"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":[],"created_at":"2024-12-14T01:31:31.491Z","updated_at":"2025-05-08T01:44:54.731Z","avatar_url":"https://github.com/mpdn.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rye\n\nRye is a minimal, x86-64-only experiment into adding fibers to Rust.\n\nRye exposes an API that allows spawning, scheduling, and deallocating fibers. This API, while\nlargely safe, rests on a lot of unsafe assumptions not necessarily guaranteed by the rust\ncompiler. This is just an experiment and you should not use it for anything critical.\n\nRye has no central place where fibers are registered. Instead, when a fiber is yielded to it\nreceives a handle to the yielding fiber.\n\n## Example\n\n```rust\nuse rye::{Fiber, AllocStack};\n\n// Create the fiber\nlet (stack, fiber) = Fiber::spawn(AllocStack::new(4096), |main| {\n    println!(\"Hello from fiber!\");\n    main.yield_to();\n});\n\n// Yield to the fiber and return. This prints:\n//  Hello from main!\n//  Hello from fiber!\n//  Back to main!\nprintln!(\"Hello from main!\");\nlet fiber = fiber.yield_to();\nprintln!(\"Back to main!\");\n\n// Reclaim stack to deallocate fiber\nstack.reclaim(fiber);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpdn%2Frye","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpdn%2Frye","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpdn%2Frye/lists"}