Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/koute/polkavm
A fast and secure RISC-V based virtual machine
https://github.com/koute/polkavm
Last synced: 21 days ago
JSON representation
A fast and secure RISC-V based virtual machine
- Host: GitHub
- URL: https://github.com/koute/polkavm
- Owner: koute
- License: apache-2.0
- Created: 2023-08-30T14:47:15.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-09-18T10:04:50.000Z (about 2 months ago)
- Last Synced: 2024-09-18T13:22:45.356Z (about 2 months ago)
- Language: Rust
- Size: 41.6 MB
- Stars: 237
- Watchers: 15
- Forks: 47
- Open Issues: 53
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
## PolkaVM
PolkaVM is a general purpose user-level RISC-V based virtual machine.
**This project is still unfinished and is a very heavy work-in-progress! Do not use it in production!**
[See current benchmark results here](./BENCHMARKS.md).
## Design goals
(**Note: not all of these are currently true!**)
- Secure and sandboxed by default. The code running in the VM should run in a separate process, and should not be able to access the host system, even in the presence of an attacker with full remote code execution privileges inside of the VM.
- Fast to execute. The runtime performance of the code running in the VM should be competitive with state-of-art WebAssembly VMs, at least within the same order of magnitude.
- Fast to compile, with guaranteed single-pass O(n) compilation. Loading new code into the VM should be near instanteneous.
- Low memory footprint. Each concurrent instance of the VM should have a baseline memory overhead of no more than 128KB.
- Small binaries. Programs compiled for this VM should take up as little space as possible.
- No wasted virtual address space. The VM should not preallocate gigabytes of virtual address space for sandboxing purposes.
- Fully deterministic. Given the same inputs and the same code the execution should always return exactly the same output.
- Support for high performance asynchronous gas metering. Gas metering should be cheap, deterministic, and reasonably accurate.
- Simple. It should be possible for a single programmer to write an interpreter fully compatible with this VM in less than a week.
- Versioned operational semantics. Any future changes to the semantics that are observable by a guest program will be versioned, and will be explicitly opt-in.
- Standardized. There should be a spec fully describing the guest-observable operational semantics of this VM.
- Cross-platform. On unsupported OSes and platforms the VM will run in an interpreted mode.
- Minimum external dependencies. The VM should be mostly self-contained, fast to compile, and resistant to supply-chain attacks.
- Built-in tooling for debugging and performance profiling.## Non-goals
- System level emulation. This VM will never be able to run a normal operating system.
- Full support for architectures other than amd64 (also known as x86_64) and aarch64 (also known as arm64). Anything else will run in an interpreted mode.
- Full support for operating systems other than Linux, macOS and Windows. On any other OS the VM will run in an interpreted mode.
- Floating point support, SIMD, and other more niche RISC-V extensions. These could be added as an opt-in feature in the future if necessary, but this is not currently planned.
- Support for full 32-register RISC-V ISA. This VM currently only targets the RV32EM.## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or )
* MIT license ([LICENSE-MIT](LICENSE-MIT) or )at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.