写点什么

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

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

关注

评论

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

边开飞机边换引擎?我们造了个新功能保障业务流量无损迁移

阿里巴巴云原生

容器 运维 k8s 中间件 弹性计算

Leveldb解读之三:Write

Jowin

leveldb

资讯|WebRTC M90 更新

网易云信

WebRTC

排查dubbo接口重复注销问题,我发现了一个巧妙的设计

捉虫大师

dubbo

如何通过openLooKeng更高效访问HBase?

LooK

Java 大数据 Bigdata MySQL 高可用

最新、最全、最详细的 Git 学习笔记总结(2021最新版)

民工哥

后端 Git Submodule linux运维 代码管理

微信小程序登录流程详解

frank-say

字节架构师分享:如何让代码在级别上提升系统性能

Java架构师迁哥

你的企业会讲故事吗?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

What CANN Can?一辆小车背后的智能故事

脑极体

HDFS NameNode中的FSImage与edits详解

五分钟学大数据

hdfs

牛哇!阿里用480页笔记直接搞定了微服务44个架构设计模式

Java架构师迁哥

大数据基本导论

五分钟学大数据

大数据

HDFS文件限额配置

五分钟学大数据

hadoop

聪明人的训练(二十八)

Changing Lin

4月日更

死亡直播

箭上有毒

生活随想 4月日更

赋能制造产业智能化转型 百度大脑开放日福州解密

百度大脑

百度大脑 开放日 智能化

百度智能云成中国跳水队独家AI合作伙伴圆梦东京!

百度大脑

百度智能云

智能小车系列-串口设置

波叽波叽啵😮一口盐汽水喷死你

串口 树莓派串口 ttyAMA0

ELK 教程 – 高效发现、分析和可视化你的数据

码语者

elastic DevOps ELK Elastic Stack ELK Stack

如何把 Caffeine Cache 用得如丝般顺滑?

vivo互联网技术

Java 缓存 服务器 Caffeine

IT 专业高校大学生就业方向状况调查问卷

架构精进之路

调查报告 4月日更 InfoQ 写作平台 1 周年

HDFS的Java API

五分钟学大数据

hdfs

云原生新边界——阿里云边缘计算云原生落地实践

阿里巴巴云原生

云计算 容器 运维 云原生 边缘计算

架构实战营模块2作业指导

华仔

架构实战营 #架构实战营

《趣学音视频》这段“朋友圈模版视频”的扛鼎之作是如何诞生的

ucsheep

Python 音视频 ffmpeg Pillow

Spring Cloud Stream 体系及原理介绍

阿里巴巴云原生

Java 负载均衡 微服务 云原生 中间件

云信技术系列课 | RTC 系统音频弱网对抗技术发展与实践

网易云信

WebRTC 音频

新一代云网采控之采集架构篇

鲸品堂

架构 部署 场景 云网络 应用

Alibaba内部培训Spring源码全集分享:脑图+视频+文档

Java架构师迁哥

嵌入式硬件开发最新技术

cdhqyj

嵌入式 单片机

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