{"id":19927537,"url":"https://github.com/vexide/v5wasm","last_synced_at":"2026-02-14T01:03:41.779Z","repository":{"id":233759371,"uuid":"786259204","full_name":"vexide/v5wasm","owner":"vexide","description":"Execute vexide programs in a WebAssembly sandbox.","archived":false,"fork":false,"pushed_at":"2024-11-05T22:22:57.000Z","size":1409,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-02T16:51:24.137Z","etag":null,"topics":["rust","simulator","vex-robotics","vex-v5","webassembly"],"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/vexide.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,"zenodo":null}},"created_at":"2024-04-13T22:41:47.000Z","updated_at":"2024-09-02T01:56:10.000Z","dependencies_parsed_at":"2024-04-26T05:25:28.873Z","dependency_job_id":"48619dfe-3a12-4bd0-ac91-e2995ffc5ab5","html_url":"https://github.com/vexide/v5wasm","commit_stats":null,"previous_names":["vexide/vex-sdk-sim","vexide/v5wasm"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vexide/v5wasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fv5wasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fv5wasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fv5wasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fv5wasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vexide","download_url":"https://codeload.github.com/vexide/v5wasm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vexide%2Fv5wasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29427641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T22:20:51.549Z","status":"ssl_error","status_checked_at":"2026-02-13T22:20:49.838Z","response_time":78,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["rust","simulator","vex-robotics","vex-v5","webassembly"],"created_at":"2024-11-12T22:33:54.170Z","updated_at":"2026-02-14T01:03:41.747Z","avatar_url":"https://github.com/vexide.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!IMPORTANT]  \n\u003e This project is no longer officially supported. If possible, we advise you to use the\n\u003e [QEMU-based simulator](https://github.com/vexide/vex-v5-qemu) instead.\n\n# V5Wasm\n\n\u003e Execute vexide programs using a WebAssembly sandbox.\n\nV5Wasm is a code executor for VEX V5 programs compiled to WebAssembly.\nBy emulating the V5's jump table, it can run programs intended for the robot brain with minimal modifications.\nV5Wasm is not a GUI or application; instead, it's a simulator engine that could power one.\n\nIf you'd like any help getting this working, don't hesitate to ask on the Vexide Discord server linked on [our website](https://vexide.dev/)!\n\n## Building\n\nPrerequisites:\n\n- A recent version of Rust\n- CMake, so that Cargo can build SDL2\n\nApart from that, you should be able to run `cargo install --git \"https://github.com/vexide/v5wasm.git\"` to install the engine.\n\nYou might also be able to get builds from the \"Releases\" tab on Github, but they could be out of date or missing.\n\n## Getting Started\n\nV5Wasm expects a single argument `\u003cPROGRAM\u003e` which is the path to the `.wasm` program that you would like to run. In Rust projects,\nthis file is located at `./target/wasm32-unknown-unknown/debug/{crate-name}.wasm`.\n\nExample usage:\n\n```sh\ncargo pros build -s\nv5wasm ./target/wasm32-unknown-unknown/debug/vexide-template.wasm\n```\n\nAfter starting, V5Wasm will attempt to initiate a [Vexide Simulator Protocol](https://internals.vexide.dev//simulators/protocol) session over its standard output and standard input streams.\n\n### Building the WASM file\n\nV5Wasm doesn't work with every `.wasm` file, so you'll have to follow these instructions to make one that's compatible.\n\nTo make a vexide project compatible with the engine, ensure the following code snippet is somewhere in `.cargo/config.toml`:\n\n```toml\n[target.wasm32-unknown-unknown]\nrustflags = [\"-Clink-arg=--export-memory\", \"-Clink-arg=--import-table\"]\n```\n\nThen, compile the project with `cargo pros build -s` or `cargo build --target wasm32-unknown-unknown`.\n\n### Interacting with the simulator\n\nYou can use a debugger (such as LLDB or CodeLLDB in VS Code) to set breakpoints inside *simulated robot code*, as long as you built your program with debug symbols.\nCheck out `.vscode/launch.json` and `.vscode/tasks.json` for an example of what that might look like. Those files currently expect there to be a `../vexide` repo, and they compile the `basic` example. If you have a symlink from `../vexide/target/..../basic.wasm` to `program.wasm`, it should work correctly.\n\nWhat's working:\n\n- ALL of the serial SDK! (100%)\n- The display SDK (98%)\n- The controller SDK (90%)\n- The competition SDK (50%)\n- Some of the system and tasks SDK (25%-ish)\n\nAn incomplete list of what's missing:\n\n- Every Device API (yeah...)\n- Stdin\n- Touch support for the display\n\n## Understanding error messages\n\nIf the simulator crashes with \"No such file or directory\", your program is probably missing.\n\nIf you get a \"wasm trap: uninitialized element\" error, it's possible an SDK call isn't implemented yet. For example, this error means `vexBatteryCurrentGet` isn't implemented:\n\n```\nError: error while executing at wasm backtrace:\n    0: 0x69340 - vex_sdk::battery::vexBatteryCurrentGet::hc5f5e7af7e7aca72\n                    at /vex-sdk-0.12.3/src/lib.rs:79:21\n    1: 0x9452 - basic::main::{{closure}}::hfcc5ba2ee817eb06\n                    at /basic.rs:14:9\n\n        (...more backtrace...)\n\n   10: 0x17b47 - vexide_startup::program_entry::hbc8e02734bc7e165\n                    at /vexide-startup/src/lib.rs:117:9\n   11: 0xa17d - _entry\n                    at /basic.rs:8:1\n\nCaused by:\n    wasm trap: uninitialized element\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvexide%2Fv5wasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvexide%2Fv5wasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvexide%2Fv5wasm/lists"}