{"id":13587115,"url":"https://github.com/FutureSDR/FutureSDR","last_synced_at":"2025-04-07T19:31:07.732Z","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":"2024-03-24T23:29:32.000Z","size":26343,"stargazers_count":262,"open_issues_count":5,"forks_count":46,"subscribers_count":19,"default_branch":"main","last_synced_at":"2024-04-25T19:42:59.712Z","etag":null,"topics":["dsp","message-passing","radio","research","runtime","rust","sdr","stream-processing","wireless"],"latest_commit_sha":null,"homepage":"","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":"2024-07-17T06:29:44.509Z","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":223290390,"owners_count":17120906,"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-08-01T15:06:01.869Z","updated_at":"2024-11-06T05:31:15.434Z","avatar_url":"https://github.com/FutureSDR.png","language":"Rust","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## 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\nUsing this license is in contrast to the large majority of Open Source SDR\napplications and frameworks, which are mostly AGLP, LGPL, or GPL. In a nutshell,\nthis means that there is *no* money to be made from relicensing the project for\ncommercial use, since this is already allowed by Apache 2.0. Furthermore,\ncompanies can use (parts of) the project and integrate (adapted) versions in\ncommercial products without releasing the source or contributing back to the\nproject.\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","funding_links":[],"categories":["Rust"],"sub_categories":[],"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"}