在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:364316
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

图解:为什么非公平锁的性能更高?

王磊

Java 8月日更

【LeetCode】反转字符串 IIJava题解

Albert

算法 LeetCode 8月日更

【微积分的力量】芝诺悖论

LeifChen

8月日更 微积分 芝诺悖论

数据传输过程的序列化,你了解吗

卢卡多多

序列化 8月日更

是时候封装限制 UITextField、UITextView 的最大字符长度了

fuyoufang

swift iOS 知识体系 8月日更

SpringBoot 自动装配源码解析

Rubble

8月日更

sql task2 基础查询与排序

橙橙橙橙汁丶

vue入门:element组件与动画使用

小鲍侃java

8月日更

DCS_FunTester分布式压测框架更新(三)

FunTester

分布式 性能测试 测试框架 测试开发 FunTester

Vue进阶(四十七):面试必备:2021 Vue经典面试题总结(含答案)

No Silver Bullet

面试 Vue 8月日更

ASCII对照表

入门小站

工具

架构训练营模块四作业

高铎

架构实战营

BPM敏捷Activiti开发平台,工作流引擎springboot整合activiti

金陵老街

Java MySQL Vue springboot Activiti

面试侃集合 | LinkedBlockingQueue篇

码农参上

队列 Queue 8月日更

快手处罚恶意炒作、审丑卖惨类账号,不良自媒体违背公序良俗

石头IT视角

【设计模式】模板方法模式

Andy阿辉

C# 后端 设计模式 8月日更

Linux之alias命令

入门小站

Linux

【Flutter 专题】62 图解基本 Button 按钮小结 (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

埋土灰

箭上有毒

8月日更

Springboot+quartz源码探索

4ye

Java 后端 springboot quartz 8月日更

架构训练营模块二作业

高铎

架构实战营

LeetCode题解:2. 两数相加,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构训练营模块三作业

高铎

再谈安全架构《一》

I

读书笔记 方法论 安全架构 企业安全 安全建设

微博评论高性能高可用架构设计

tjudream

高可用架构 微博评论 高性能计算架构 多级负载均衡 多级缓存

手撸二叉树之二叉树的层平均值

HelloWorld杰少

数据结构与算法 8月日更

数字化为企业带来哪些价值?

boshi

数字化转型

Python代码阅读(第14篇):列表求并集

Felix

Python 编程 Code Programing 阅读代码

Vue进阶(四十八):Vue.js 2.0 移动端拍照压缩图片预览及上传

No Silver Bullet

Vue 8月日更

想知道你未来宝宝长什么样吗?

华为云开发者联盟

modelarts 图像 图像生成 父母照片 照片

方法调用:一看就懂,一问就懵?

阿Q说代码

8月日更 虚方法 非虚方法 静态分派 动态分派

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