{"id":25975631,"url":"https://github.com/asterinas/vostd","last_synced_at":"2026-05-31T07:02:01.676Z","repository":{"id":274031760,"uuid":"919971581","full_name":"asterinas/vostd","owner":"asterinas","description":"A community preview of ongoing formal verification efforts for Asterinas","archived":false,"fork":false,"pushed_at":"2026-05-26T03:12:00.000Z","size":22140,"stargazers_count":49,"open_issues_count":14,"forks_count":12,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-26T05:11:37.681Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://asterinas.github.io/vostd/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asterinas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MPL","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,"notice":null,"maintainers":null,"copyright":"COPYRIGHT","agents":null,"dco":null,"cla":null}},"created_at":"2025-01-21T10:40:59.000Z","updated_at":"2026-05-26T03:12:04.000Z","dependencies_parsed_at":"2025-12-06T18:05:26.565Z","dependency_job_id":"d41779a7-66b3-417b-938c-83f5cd68942a","html_url":"https://github.com/asterinas/vostd","commit_stats":null,"previous_names":["asterinas/asterinas-fv-preview","asterinas/vostd"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/asterinas/vostd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asterinas%2Fvostd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asterinas%2Fvostd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asterinas%2Fvostd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asterinas%2Fvostd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asterinas","download_url":"https://codeload.github.com/asterinas/vostd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asterinas%2Fvostd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33722156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-05T03:01:14.976Z","updated_at":"2026-05-31T07:02:01.670Z","avatar_url":"https://github.com/asterinas.png","language":"Rust","funding_links":[],"categories":["Projects"],"sub_categories":["Verification"],"readme":"# Formal Verification of Asterinas OSTD with Verus\n\n[![docs](https://img.shields.io/badge/docs-vostd-blue)](https://asterinas.github.io/vostd/)\n[![verify](https://img.shields.io/github/actions/workflow/status/asterinas/vostd/ci.yml?branch=main\u0026label=verify)](https://github.com/asterinas/vostd/actions/workflows/ci.yml)\n[![verify (verus-lang/verus)](https://img.shields.io/github/actions/workflow/status/asterinas/vostd/ci-upstream-verus.yml?branch=main\u0026label=verify%20(verus-lang%2Fverus))](https://github.com/asterinas/vostd/actions/workflows/ci-upstream-verus.yml)\n\nThe `vostd` project provides a formally-verified version of [OSTD](https://asterinas.github.io/book/ostd/index.html), the (unofficial) standard library for OS development in safe Rust. OSTD encapsulates low-level hardware interactions—which requires using `unsafe` Rust—into a small yet powerful set of high-level, safe abstractions. These abstractions enable the creation of complex, general-purpose OSes like [Asterinas](https://github.com/asterinas/asterinas) entirely in safe Rust.\n\nBy design, OSTD guarantees *soundness*: no undefined behavior is possible, regardless of how its API is used in safe Rust. The goal of the `vostd` project is to bolster confidence in this soundness through formal verification, leveraging the [Verus](https://github.com/verus-lang/verus) verification tool.\n\nThis work is ongoing. Our current focus is on verifying OSTD’s *memory management subsystem*, a core component that is directly related to kernel memory safety. As we continue, we aim to extend formal verification to additional parts of OSTD to further ensure its reliability and correctness.\n\n## Project Structure\n\nImplementation code from the OSTD [mainline](https://github.com/asterinas/asterinas), together with its accompanying proofs, resides in the `ostd` directory, while specifications are located under `specs`.\n\nThis repository currently contains verification code for `ostd/src/mm` and `ostd/src/sync`. It is independent of the concurrency proofs presented in our [SOSP paper](https://dl.acm.org/doi/10.1145/3731569.3764836) — *“CortenMM: Efficient Memory Management with Strong Correctness Guarantees.”*  For the SOSP artifact, please refer to the [func-correct](https://github.com/asterinas/vostd/tree/func-correct) branch for verification code, and to [this repo](https://github.com/TELOS-syslab/CortenMM-Artifact) for the complete artifact.\n\nA merge of these efforts is planned, but has not yet begun.\n\n## Building the Proof Development\n\n#### Install Rust\n\nIf you have not installed Rust yet, follow the [official instructions](https://www.rust-lang.org/tools/install).\n\n#### Clone Submodule\n\n`vostd` relies on our [custom build tool](https://github.com/asterinas/rust-deductive-verifier). Please run:\n\n```\ngit submodule update --init --recursive\n```\n\n#### Build Verus\n\nThe recommended way to build Verus is by running the following command:\n\n```\nmake verus\n```\n\nor\n\n```\ncargo dv bootstrap\n```\n\nVerus should be automatically cloned and built in the `tools` directory. If download fails, please clone the repo manually into `tools/verus` , then run `cargo dv bootstrap` again.\n\n\u003e [!NOTE]\n\u003e\n\u003e We use [our own fork](https://github.com/asterinas/verus) of Verus, which we continuously synchronize with the upstream repository. You may choose to install the [upstream Verus source](https://github.com/verus-lang/verus) via `cargo dv bootstrap --upstream-verus`, however, we cannot guarantee that it will always verify successfully with our project. That said, our CI continuously tests against upstream, and we typically resolve any breaking changes within about a week.\n\u003e\n\u003e If you have already installed Verus, you can either set `VERUS_PATH` to the directory containing the Verus binary and `VERUS_Z3_PATH` to the Z3 binary, or simply add them to your `PATH`. Please also note that our project relies on the experimental `new-mut-ref` feature by default, so a newer version of Verus is required.\n\n\n#### Build Verification Targets\n\nTo verify the entire project, simply run:\n\n```\nmake\n```\n\nor\n\n```\ncargo dv verify --targets ostd\n```\n\nThe `ostd` crate relies on a verified library: `vstd_extra`. To compile and verify the library independently, run:\n\n```\ncargo dv compile --targets vstd_extra\n```\n\n#### Clean Build Artifacts\n\n`dv` automatically skips recompilation and reverification for libraries that have not changed since the last build. To remove the build artifact of a particular library and force a fresh build, run:\n\n```\ncargo dv clean --targets vstd_extra\n```\n\nTo clean all artifacts at once, run:\n\n```\nmake clean\n```\n\nor\n\n```\ncargo dv clean\n```\n\n\n\n#### Documentation\n\nWe provide comprehensive API-level documentation that describes the verified APIs along with their auxiliary lemmas. To generate the documentation, run:\n\n```\nmake doc\n```\n\nor\n\n```\ncargo dv doc --target ostd\n```\n\nThe generated documentation can be found at `doc/index.html`. An online version is also available [here](https://asterinas.github.io/vostd/).\n\n#### IDE Support\n\nFor VSCode users, the [`verus-analyzer`](https://marketplace.visualstudio.com/items?itemName=verus-lang.verus-analyzer) extension is available in the Marketplace.\n\nFor Emacs users, please refer to the [`verus-mode`](https://github.com/verus-lang/verus-mode.el).\n\n## Contributing to VOSTD\n\nWe welcome your contributions!\n\n#### Common Conventions\n\n- We add an `axiom_` prefix to the name of each `axiom fn` and a `lemma_` prefix to each `proof fn`.\n- We prefer associated functions to isolated lemmas.\n\n#### Tips\n\n- During your development process, please frequently run `make verus update` or `cargo dv bootstrap --upgrade` to stay up-to-date with the [latest supported version](https://github.com/asterinas/verus) of Verus.\n-  Format checking is not enforced, but we still recommend formatting your code with `cargo dv fmt --paths path_to_your_file` before submission.\n- If you are contributing to Verus, we recommend submitting pull requests to [the upstream repo](https://github.com/verus-lang/verus) rather than our fork, since we aim to minimize differences between them.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasterinas%2Fvostd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasterinas%2Fvostd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasterinas%2Fvostd/lists"}