{"id":15973394,"url":"https://github.com/futuresdr/futuresdr","last_synced_at":"2025-05-16T11:06:12.242Z","repository":{"id":37608919,"uuid":"400460545","full_name":"FutureSDR/FutureSDR","owner":"FutureSDR","description":"An Async SDR Runtime for Heterogeneous Architectures","archived":false,"fork":false,"pushed_at":"2025-04-28T18:52:15.000Z","size":28057,"stargazers_count":369,"open_issues_count":5,"forks_count":61,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-05-16T11:05:53.909Z","etag":null,"topics":["dsp","message-passing","radio","research","runtime","rust","sdr","stream-processing","wireless"],"latest_commit_sha":null,"homepage":"https://www.futuresdr.org","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/FutureSDR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2021-08-27T09:41:37.000Z","updated_at":"2025-05-14T14:43:30.000Z","dependencies_parsed_at":"2023-02-19T16:00:20.695Z","dependency_job_id":"3c4f8395-b9e1-4456-b7c7-519b1ab1562c","html_url":"https://github.com/FutureSDR/FutureSDR","commit_stats":{"total_commits":1044,"total_committers":20,"mean_commits":52.2,"dds":"0.15421455938697315","last_synced_commit":"96e3055be25a1c4eca90910e1740f20401f7a509"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FutureSDR%2FFutureSDR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FutureSDR%2FFutureSDR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FutureSDR%2FFutureSDR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FutureSDR%2FFutureSDR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FutureSDR","download_url":"https://codeload.github.com/FutureSDR/FutureSDR/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518383,"owners_count":22084374,"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":["dsp","message-passing","radio","research","runtime","rust","sdr","stream-processing","wireless"],"created_at":"2024-10-07T21:04:46.361Z","updated_at":"2025-05-16T11:06:07.216Z","avatar_url":"https://github.com/FutureSDR.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FutureSDR\n\nAn experimental asynchronous SDR runtime for heterogeneous architectures that\nis:\n\n* **Extensible**: custom buffers (supporting accelerators like GPUs and FPGAs)\n  and custom schedulers (optimized for your application).\n\n* **Asynchronous**: solving long-standing issues around IO, blocking, and\n  timers.\n\n* **Portable**: Linux, Windows, Mac, WASM, Android, and prime support for\n  embedded platforms through a REST API and web-based GUIs.\n\n* **Fast**: SDR go brrr!\n\n[![Crates.io][crates-badge]][crates-url]\n[![Apache 2.0 licensed][apache-badge]][apache-url]\n[![Build Status][actions-badge]][actions-url]\n\n[crates-badge]: https://img.shields.io/crates/v/futuresdr.svg\n[crates-url]: https://crates.io/crates/futuresdr\n[apache-badge]: https://img.shields.io/badge/license-Apache%202-blue\n[apache-url]: https://github.com/futuresdr/futuresdr/blob/main/LICENSE\n[actions-badge]: https://github.com/futuresdr/futuresdr/workflows/CI/badge.svg\n[actions-url]: https://github.com/futuresdr/futuresdr/actions?query=workflow%3ACI+branch%3Amain\n\n[Website](https://www.futuresdr.org) |\n[Guides](https://www.futuresdr.org/learn) |\n[API Docs](https://docs.rs/futuresdr/latest/futuresdr) |\n[Chat](https://discord.com/invite/vCz29eDbGP/)\n\n## Overview\n\nFutureSDR supports *Blocks* with synchronous or asynchronous implementations for\nstream-based or message-based data processing. Blocks can be combined to a\n*Flowgraph* and launched on a *Runtime* that is driven by a *Scheduler*.\n\n* Single and multi-threaded schedulers, including examples for\n  application-specific implementations.\n* Portable GPU acceleration using the Vulkan API (supports Linux, Windows,\n  Android, ...).\n* User space DMA driver for Xilinx Zynq to interface FPGAs.\n\n## Development\n\nSince FutureSDR is in an early state of development, it is likely that SDR\napplications will require changes to the runtime. We, therefore, do not\nrecommend to add it as a dependency in a separate project but to clone the\nrepository and implement the application as binary, example, or sub-crate.\n\n## Example\n\nAn example flowgraph that forwards 123 zeros into a sink:\n\n``` rust\nuse futuresdr::anyhow::Result;\nuse futuresdr::blocks::Head;\nuse futuresdr::blocks::NullSink;\nuse futuresdr::blocks::NullSource;\nuse futuresdr::macros::connect;\nuse futuresdr::runtime::Flowgraph;\nuse futuresdr::runtime::Runtime;\n\nfn main() -\u003e Result\u003c()\u003e {\n    let mut fg = Flowgraph::new();\n\n    let src = NullSource::\u003cu8\u003e::new();\n    let head = Head::\u003cu8\u003e::new(123);\n    let snk = NullSink::\u003cu8\u003e::new();\n\n    connect!(fg, src \u003e head \u003e snk);\n\n    Runtime::new().run(fg)?;\n\n    Ok(())\n}\n```\n\n## Credits\n\n* The LoRa example is based on a Rust port of [gr-lora-sdr](https://github.com/tapparelj/gr-lora_sdr).\n* The M17 example is based on the C implementation of [SP5WWP](https://github.com/M17-Project/M17_Implementations).\n* The Rattlegram example is based on the [Rattelgram](https://github.com/aicodix/rattlegram) app.\n* The Remez Exchange algorithm in FutureDSP is a Rust port of the [implementation of Jake Janovetz](https://github.com/janovetz/remez-exchange).\n* The WLAN example is based on a Rust port of [gr-ieee802-11](https://github.com/bastibl/gr-ieee802-11).\n* The ZigBee example is based on a Rust port of [gr-ieee802-15-4](https://github.com/bastibl/gr-ieee802-15-4).\n\n## Contributing\n\nContributions are very welcome. Please see the (work-in-progress) [contributing\nguide][contr] for more information. If you develop larger features or work on\nmajor changes with the main intention to submit them upstream, it would be\ngreat, if you could announce them in advance.\n\n[contr]: https://github.com/futuresdr/futuresdr/blob/main/CONTRIBUTING.md\n\n## Conduct\n\nThe FutureSDR project adheres to the [Rust Code of Conduct][coc]. It describes\nthe _minimum_ behavior expected from all contributors.\n\n[coc]: https://www.rust-lang.org/policies/code-of-conduct\n\n## License\n\nThis project is licensed under the [Apache 2.0 license][lic].\n\nThe main motivation for this license is that\n* it better fits the Rust ecosystem\n* it eases adoption; one can use (parts of) the code with close to no strings\n  attached\n* using Open Source and not contributing back (for the time being) seems better\n  than not using Open Source at all\n\n[lic]: https://github.com/futuresdr/futuresdr/blob/main/LICENSE\n\n## Contributions\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in FutureSDR, shall be licensed as Apache 2.0, without any\nadditional terms or conditions.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturesdr%2Ffuturesdr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuturesdr%2Ffuturesdr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuturesdr%2Ffuturesdr/lists"}