10个重大版本更新
新增 0.11.0 | 2024年8月23日 |
---|---|
0.9.0 | 2024年2月23日 |
0.3.0 | 2023年12月1日 |
0.2.0 | 2023年11月25日 |
#66 in 模拟器
每月125次下载
1.5MB
32K SLoC
PolkaVM
PolkaVM是一个基于RISC-V的通用目的用户级虚拟机。
该项目尚未完成,仍在非常重的开发过程中!请勿在生产环境中使用!
设计目标
(注意:以下并非所有目标都已实现!)
- 默认安全且隔离。虚拟机中运行的代码应在单独的进程中运行,并且不应该能够访问宿主机系统,即使存在具有完全远程代码执行权限的攻击者也不例外。
- 执行速度快。虚拟机中运行的代码的运行时性能应与最先进的WebAssembly VMs相当,至少在同一个数量级。
- 编译速度快,具有保证的单遍O(n)编译。将新代码加载到虚拟机中应该是瞬间的。
- 内存占用低。虚拟机的每个并发实例的基准内存占用不应超过128KB。
- 二进制文件小。为该虚拟机编译的程序应尽可能占用较小的空间。
- 不浪费虚拟地址空间。虚拟机不应为了沙箱目的预先分配数GB的虚拟地址空间。
- 完全确定。给定相同的输入和相同的代码,执行应该总是返回完全相同的输出。
- 支持高性能异步gas计量。gas计量应该是便宜、确定性和合理准确的。
- 简单。应该有可能让一个程序员在一周内写出与该虚拟机完全兼容的解释器。
- 版本化操作语义。任何对语义的更改,如果被客户端程序观察到,都将进行版本控制,并将明确选择。
- 标准化。应该有一个完全描述该虚拟机客户端可观察操作语义的规范。
- 跨平台。在不支持的操作系统和平台上,虚拟机将在解释模式下运行。
- 最小外部依赖。虚拟机应基本自包含,编译速度快,且能够抵御供应链攻击。
- 内置调试和性能分析工具。
非目标
- 系统级仿真。这个虚拟机永远无法运行常规操作系统。
- 完全支持除amd64(也称为x86_64)和aarch64(也称为arm64)之外的架构。其他任何架构都将运行在解释模式下。
- 完全支持除Linux、macOS和Windows之外的操作系统。在其他任何操作系统上,虚拟机都将运行在解释模式下。
- 支持浮点数、SIMD和其他更专业的RISC-V扩展。如果需要,这些可以作为可选功能在未来添加,但目前没有计划。
- 支持完整的32寄存器RISC-V指令集架构。这个虚拟机目前只针对RV32EM。
许可
以下任一许可
- Apache License,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交以包含在作品中的任何贡献,都将如上双重许可,不附加任何额外条款或条件。
依赖项
约21MB
约437K SLoC