{"id":15728653,"url":"https://github.com/vexide/vexide","last_synced_at":"2025-04-04T18:02:44.652Z","repository":{"id":229964417,"uuid":"778099510","full_name":"vexide/vexide","owner":"vexide","description":"Open-source Rust runtime for VEX robots.","archived":false,"fork":false,"pushed_at":"2025-03-28T01:07:39.000Z","size":10999,"stargazers_count":44,"open_issues_count":5,"forks_count":11,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T17:01:59.770Z","etag":null,"topics":["embedded","embedded-rust","rust","vex","vex-robotics","vex-v5"],"latest_commit_sha":null,"homepage":"https://vexide.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"pros-rs/pros-rs","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vexide.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-03-27T04:26:45.000Z","updated_at":"2025-03-26T15:12:30.000Z","dependencies_parsed_at":"2024-04-01T16:04:30.101Z","dependency_job_id":"36cde593-9b21-411a-8f28-f078ac44d3af","html_url":"https://github.com/vexide/vexide","commit_stats":{"total_commits":1485,"total_committers":16,"mean_commits":92.8125,"dds":0.5892255892255892,"last_synced_commit":"b7501dc8626fbdd8570c45c30ad8fcac5bd0a309"},"previous_names":["pros-rs/vex-rs","pros-rs/vexide","vexide/vexide"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fvexide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fvexide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fvexide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fvexide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vexide","download_url":"https://codeload.github.com/vexide/vexide/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226211,"owners_count":20904465,"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":["embedded","embedded-rust","rust","vex","vex-robotics","vex-v5"],"created_at":"2024-10-03T23:05:14.066Z","updated_at":"2025-04-04T18:02:44.601Z","avatar_url":"https://github.com/vexide.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vexide\n\nOpen-source Rust runtime for VEX V5 robots. vexide provides a `no_std` Rust runtime, async executor, device API, and more for the VEX V5 Brain!\n\nvexide is the successor to [pros-rs](https://github.com/vexide/pros-rs) which is a set of unmaintained APIs using bindings over [PROS](https://github.com/purduesigbots/pros).\n\n\u003e [!WARNING]\n\u003e vexide is still considered experimental, but can be used today. Check out our [docs](https://vexide.dev/docs) on how to get started.\n\n## Getting Started\n\nvexide is published on [crates.io](https://crates.io/crates/vexide) and can be used like a normal embedded Rust crate.\n\nIf you're just getting started, we recommend going through our [docs](https://vexide.dev/docs/), which provide step-by-step instructions for setting up a development environment with [vexide-template](https://github.com/vexide/vexide-template). You can also use our [examples](./examples/) as a reference for your own projects.\n\n## Project Structure\n\nThe vexide runtime is a fairly standard rust monorepo split into 7 subcrates:\n\n- [`vexide-core`](https://crates.io/crates/vexide_core) provides lowlevel core functionality for programs, such as allocators, synchronization primitives, serial printing, I/O and timers.\n- [`vexide-devices`](https://crates.io/crates/vexide_devices) contains all device-related bindings for things like motors and sensors.\n- [`vexide-async`](https://crates.io/crates/vexide_async) implements our cooperative async runtime as well as several important async futures.\n- [`vexide-startup`](https://crates.io/crates/vexide_startup) contains bare-metal startup code required to get freestanding user programs running on the Brain.\n- [`vexide-panic`](https://crates.io/crates/vexide_panic) contains our [panic handler](https://doc.rust-lang.org/nomicon/panic-handler.html).\n- [`vexide-macro`](https://crates.io/crates/vexide_macro) contains the source code for the `#[vexide::main]` proc-macro.\n\nThese subcrates are exported from a single [`vexide`](https://github.com/vexide/vexide/blob/main/packages/vexide/src/lib.rs) crate intended to be used as a complete package.\n\n## Building\n\nvexide relies on some features that are only available in Rust’s nightly release channel, so you’ll need to switch to using nightly. We also depend on the `rust-src` component due to our embedded target requiring a build of `core`.\n\n```sh\nrustup override set nightly\nrustup component add rust-src\n```\n\nThis project is compiled like any other Rust project with one caveat - we have our own dedicated wrapper over `cargo` called `cargo-v5`, which passes some additional arguments to `cargo` to correctly build for the platform.\n\nYou can install that tool with the following command:\n\n```sh\ncargo install cargo-v5\n```\n\nFrom there, the project can be built like any other Rust library through `cargo-v5`:\n\n```sh\ncargo v5 build --release\n```\n\nExamples can similarly be built this way:\n\n```sh\ncargo v5 build --example basic --release\n```\n\n\u003e [!NOTE]\n\u003e If you don't want to use `cargo-v5` to build your project, you can effectively do the same thing that it's doing by running `cargo build --target ./armv7a-vex-v5.json -Zbuild-std=core,alloc,compiler_builtins`\n\n## Testing Your Changes\n\nWhen making changes to vexide, it's a good idea to test them. The easiest way to do this is by running one of our examples. `cargo-v5` can be used to upload an example by running a command like this:\n\n```sh\ncargo v5 upload --example basic --release\n```\n\nDepending on what you have changed, the basic example may not be the best example to test. We have many examples covering different parts of vexide, so choose the one that applies to your changes. If there isn't one, feel free to add it!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvexide%2Fvexide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvexide%2Fvexide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvexide%2Fvexide/lists"}