写点什么

Facebook 发布 HHVM 3.0,支持 Hack 语言

  • 2014-04-18
  • 本文字数:968 字

    阅读完需:约 3 分钟

Hack 编程语言发布之后,Facebook 又发布了 HHVM (HipHop Virtual Machine)的 3.0 版本,提供了对这门新语言的支持。Facebook 的工程师 Paul Tarjan 在 HHVM 博客上宣布了这一消息。

博客中提到,与上一个主要版本 2.0 相比,该版本基本上变成了一个全新的项目。原来的执行方式是先将 PHP 程序编译为 C++ 代码,然后再编译为机器代码。现在的执行方式变为了虚拟机,它先将 PHP 和 Hack 程序编译为中间字节码,然后通过 just-in-time (JIT)编译器将字节码动态翻译为 x64 机器代码。从这方面看,HHVM 与其他语言的虚拟机类似,比如 CLR 之于 C#,或 JVM 之于 Java。动态编译可以应用很多在静态编译时无法应用的编译优化技术,从而有可能提供更好的性能,同时保留了 PHP 和 Hack 开发的灵活性。

据 Facebook介绍,与 PHP 5.2 引擎 +APC 相比,HHVM 可以处理的 Web 请求吞吐量增加了 9 倍,而内存消耗减少了 5 倍。

下面我们来看一下该版本的主要特性:

  1. 去掉了原来的 Web 服务器。如果出现异常信息:Uncaught exception: no factory for server type “libevent”,请将 libevent 切换为 fastcgi。如果在 HHVM 之前安装了 nginx 或 apache,它会自动进行配置。
  2. 配置文件正在从.hdf 向.ini 迁移。默认的一个配置文件是 /etc/hhvm/php.ini。因为现在的版本还不能支持所有老选项,所以现在仍然可以使用 config.hdf。不过可能会在下个版本中去掉。
  3. 支持 Hack。Hack 的一个主要特性是类型系统的即时反馈。这是通过一组独立于 HHVM 的工具 hh_server 和 hh_client 实现的。这些工具已经包含在 HHVM 二进制包中,但是需要显式地设置和启动。
  4. 开发者最希望加入的扩展—— mysqli ,已经加入进来。该扩展在 3.0.0 版本中存在 bug,目前已在 3.0.1 版本中修复。
  5. 报错消息与 PHP5 兼容,不再使用 HipHop 前缀。

HHVM 的代码已经基于 PHP 许可证开源,可以从 Github 上获取。该项目目前大约有 270 万行代码,主要是 C++,还包括一些 C 和 PHP 代码。如果对 HHVM 的实现机制感兴趣,可以阅读 @吴多益撰写的文章《HHVM 是如何提升 PHP 性能的?》以及相关讨论

如果想安装并尝试HHVM,可以阅读这篇文章。


感谢孙镜涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-04-18 01:364282
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.1 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

巧用 readonly与 const

喵叔

7月日更

linux c解决多个第三方so动态库包含不同版本openssl造成的符号冲突

奔着腾讯去

openssl so动态库 动态链接库

后疫情时代,共享育儿也能变成一门好生意?!

脑极体

C++17 中的条件变量

hedzr

c++ 算法 并发编程 元编程 policy

hbase运维故障案例分析

GrowingIO技术专栏

大数据 运维 HBase

gitlab忘记root用户的密码

阿呆

gitlab #GitLab

没想到专科的我,仅凭阿里这份JDK源码笔记居然拿到了年薪30W的offer

Java架构师迁哥

23w字!Github一夜爆火被各大厂要求直接下架的Java面试题库也太强了

Java架构师迁哥

网络协议:TCP可靠传输原理

赖猫

c++ TCP 后端 网络协议

结构化流-Structured Streaming(八-中)

Databri_AI

spark 结构化思维 Kafk

和12岁小同志搞创客开发:如何使用继电器?

不脱发的程序猿

DIY 嵌入式 创客开发 继电器

登陆框有多危险,可能你还不知道。。。

网络安全学海

黑客 网络安全 信息安全 渗透测试· 漏洞分析

鉴释课堂丨编译器技术入门知识一网打尽

鉴释

编译器 编译器原理

VSCode 断点调试 electron-vue 主进程

admin

Vue 调试 Electron

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

Java 编程 程序员 架构师

上架一夜遭全网封杀!阿里大牛熬夜半年手码的Java面试指南太强了

白亦杨

阿那亚:靠客户反馈驱动企业成长

石云升

商业价值 服务 7月日更

并发问题的源头

Java旅程

Java 并发编程

ZooKeeper 分布式锁 Curator 源码 03:可重入锁并发加锁

程序员小航

Java zookeeper 源码 分布式锁 zookeeper分布式锁

性能测试误差对比研究(三)

FunTester

性能测试 接口测试 测试框架 误差分析

敏捷教练的困境与出路:一个管理者的视角

蔡建斌

管理 技术管理 敏捷教练 引航计划 内容合集

String、StringBuiler和StringBuffer面试那些事

Java旅程

Java 并发

maven是什么

卢卡多多

7月日更

网络传输协议kcp原理解析

赖猫

TCP 网络协议

没有电和网络的时候如何支付一瓶水?

escray

学习 极客时间 朱赟的技术管理课 7月日更

iOS15上线图片翻译功能,能取代专业翻译软件吗?

脑极体

BoCloud博云:ESB老旧力不能支,微服务独立自治强势替代

BoCloud博云

微服务

性能测试误差对比研究(四)

FunTester

性能测试 接口测试 测试框架 测试开发 误差分析

postgresql主从搭建

阿呆

postgresql

阿里培训笔记惨遭泄露,Spring+SpringBoot+SpringCloud

Java架构师迁哥

一个很多人不知道的SpringBoot小技能!!

冰河

Java 分布式 微服务 springboot 服务化

Facebook发布HHVM 3.0,支持Hack语言_语言 & 开发_臧秀涛_InfoQ精选文章