BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook发布HHVM 3.0,支持Hack语言

| 作者 臧秀涛 关注 4 他的粉丝 发布于 2014年4月19日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

bucuo by 张章 鸥翔鱼游

还真的不错的 支持支持!

不错 by 张章 鸥翔鱼游

微博平台用 Hprose 的话,用户调用就方便多了。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT