微信号:infoqchina

介绍:有内容的技术社区媒体

Facebook发布HHVM 3.0,支持Hack语言

2014-04-19 15:03 臧秀涛

在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(https://github.com/facebook/hhvm)上获取。该项目目前大约有270万行代码,主要是C++,还包括一些C和PHP代码。如果对HHVM的实现机制感兴趣,可以阅读@吴多益撰写的文章《HHVM 是如何提升 PHP 性能的?》(http://wuduoyi.com/note/hhvm/)以及相关讨论(http://hllvm.group.iteye.com/group/topic/39357)。


如果想安装并尝试HHVM,可以阅读这篇文章(https://www.digitalocean.com/community/articles/how-to-install-hhvm-hiphop-virtual-machine-on-an-ubuntu-13-10-vps)。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Fresco图片加载框架使用经验小结 C++快速实现xml文件的xml节点读写 2015年Hadoop为代表的大数据趋势 您见识过实时数据库吗? 给初学者的 6 个 Android 加密工具