14 个版本 (重大更新)

新功能 0.11.0 2024 年 8 月 23 日
0.9.2 2024 年 3 月 4 日
0.3.0 2023 年 12 月 1 日
0.2.0 2023 年 11 月 24 日

#81 in 模拟器

Download history 20470/week @ 2024-05-03 25190/week @ 2024-05-10 21518/week @ 2024-05-17 33141/week @ 2024-05-24 26655/week @ 2024-05-31 21931/week @ 2024-06-07 22631/week @ 2024-06-14 28651/week @ 2024-06-21 21405/week @ 2024-06-28 23791/week @ 2024-07-05 29874/week @ 2024-07-12 32927/week @ 2024-07-19 30950/week @ 2024-07-26 29146/week @ 2024-08-02 43452/week @ 2024-08-09 29529/week @ 2024-08-16

每月下载量 138,013 次
用于 40 个crate (直接使用 4 个)

MIT/Apache

740KB
17K SLoC

PolkaVM

PolkaVM 是一个通用的基于 RISC-V 的用户级虚拟机。

该项目尚未完成,是一个非常重的开发中项目!请不要在生产环境中使用它!

查看当前基准测试结果.

设计目标

(注意:以下并非全部都为当前真实情况!)

  • 默认安全且沙箱化。虚拟机中运行的代码应在独立进程中运行,并且不应能够访问主机系统,即使在虚拟机内部存在具有完全远程代码执行权限的攻击者的情况下。
  • 执行速度快。虚拟机中运行的代码的运行性能应与最先进的 WebAssembly 虚拟机相竞争,至少在同一数量级。
  • 编译速度快,保证单遍 O(n) 编译。将新代码加载到虚拟机中应几乎瞬间完成。
  • 内存占用低。虚拟机的每个并发实例的基线内存开销不应超过 128KB。
  • 二进制文件小。为该虚拟机编译的程序应占用尽可能少的空间。
  • 不浪费虚拟地址空间。虚拟机不应为沙箱化目的预先分配数 GB 的虚拟地址空间。
  • 完全确定性。给定相同的输入和相同的代码,执行应始终返回完全相同的输出。
  • 支持高性能异步气体计量。气体计量应便宜、确定且相当准确。
  • 简单。应有可能让单个程序员在一周内编写完全兼容该虚拟机的解释器。
  • 版本化操作语义。任何对语义的更改,如果对客户端程序可见,都将进行版本化,并且将明确选择。
  • 标准化。应有完整的规范来描述虚拟机的客户端可观察操作语义。
  • 跨平台。在不支持的操作系统和平台上,虚拟机将以解释模式运行。
  • 外部依赖最少。虚拟机应基本自包含,编译速度快,且对供应链攻击具有抵抗力。
  • 内置调试和性能分析工具。

非目标

  • 系统级模拟。此虚拟机永远无法运行正常操作系统。
  • 完全支持amd64(也称为x86_64)和aarch64(也称为arm64)以外的架构。其他任何内容都将以解释模式运行。
  • 完全支持Linux、macOS和Windows以外的操作系统。在其他任何操作系统上,虚拟机将以解释模式运行。
  • 支持浮点运算、SIMD和其他更专业的RISC-V扩展。如果需要,这些功能可以作为可选功能在未来添加,但目前没有计划。
  • 支持完整的32寄存器RISC-V指令集架构(ISA)。此虚拟机目前仅针对RV32EM。

许可证

根据您的选择,许可如下

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,将根据上述内容双许可,没有任何额外的条款或条件。

依赖关系

约5.5MB
约105K SLoC