10 次重大更新

新功能 0.11.0 2024 年 8 月 23 日
0.9.1 2024 年 2 月 23 日
0.3.0 2023 年 12 月 1 日
0.2.0 2023 年 11 月 24 日

#350 in 模拟器

Download history 24060/week @ 2024-05-04 28855/week @ 2024-05-11 23581/week @ 2024-05-18 34594/week @ 2024-05-25 29063/week @ 2024-06-01 22703/week @ 2024-06-08 25588/week @ 2024-06-15 32616/week @ 2024-06-22 26598/week @ 2024-06-29 27314/week @ 2024-07-06 37100/week @ 2024-07-13 36648/week @ 2024-07-20 31522/week @ 2024-07-27 34638/week @ 2024-08-03 47113/week @ 2024-08-10 26656/week @ 2024-08-17

每月 145,783 次下载
475 个crate(5 个直接使用) 中使用

MIT/Apache

7KB

PolkaVM

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

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

请在此处查看当前的基准测试结果.

设计目标

(注意:以下并非全部都目前为真!)

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

非目标

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

许可协议

许可协议为以下之一

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,都将如上所述双许可,不附加任何额外条款或条件。

依赖

~0.6–1MB
~24K SLoC