jasperweyne / unwasm
将 WebAssembly 转换为 PHP 并运行
Requires
- php: >=7.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.1
- phpstan/phpstan: ^1.5
- phpunit/phpunit: ^9.5
- symfony/finder: ^5.4
This package is auto-updated.
Last update: 2024-09-11 22:48:28 UTC
README
你想要在 C++ 中编码,却完全得不到性能提升吗?你想要用 Rust 编写下一个 WordPress 插件吗?或者你想要在共享 PHP 主机提供商上运行其他编程语言?欢迎来到 UnWasm!
UnWasm 是一个 PHP 库,它允许你在服务器上运行 WebAssembly,无需任何 PHP 扩展!UnWasm 将 WebAssembly 转换为原生 PHP,这允许 PHP 和 WebAssembly 代码之间轻松互操作。
由于代码转换为 PHP,性能永远不会超过原生 PHP 的性能。如果这对你的应用程序是必要的,我们建议你查看 wasmer-php,这是一个 PHP 扩展。UnWasm 是给那些希望在 Wasmer 不可用的平台上运行代码的人,例如在共享主机平台上。
UnWasm 仍然非常实验性和不稳定。请不要在生产环境中使用它!
支持
UnWasm 目前处于开发中。请查看以下目前支持的语言特性。当完全支持 WebAssembly 1.1 的二进制形式时,UnWasm 将达到 1.0.0 版本。
注意:运行时函数由 PHP 管理,因此隐式支持。
已知问题
- PHP 整数以平台相关的位长度进行编码。这意味着如果你在运行 32 位 PHP 安装,UnWasm 目前将不支持 64 位整数。
- 整数在 PHP 中始终以有符号形式编码。当使用大无符号整数时,这可能会导致当前出现意外的行为。
- PHP 中的整数不会按预期溢出。相反,它们被转换为浮点数。因此,UnWasm 不支持整数溢出。
- 当 PHP 中发生堆栈溢出时,这不能被优雅地捕获为异常。因此,库允许以内存安全的方式运行 WebAssembly,通过创建一个子 PHP 进程并在其中运行 WebAssembly。然而,这会在主机和子进程之间的通信中产生性能成本。
许可证
UnWasm 根据 Apache 许可证版本 2.0 许可。请参阅 LICENSE 文件以获取更多信息。
贡献
贡献非常受欢迎!请确保你的代码遵循 PSR-12 代码风格,请在提交拉取请求之前查看这些内容。你可以通过运行 composer fix (部分)自动化此过程。
本项目根据 Apache 许可证版本 2.0 许可。因此,除非明确声明,否则你的贡献应受 Apache 许可证版本 2.0 许可。有关更多信息,请参阅 LICENSE。