写点什么

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

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

关注

评论

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

一个前端工程师与死神的较量

陈辰

大前端 压力 医院 生活质量 工程师

分布式系统选主怎么玩

奈学教育

分布式系统

BPM产业数字观察:中国市场趋向成熟,蛰伏的BPM即将醒来

人称T客

金蝶2019财报在此——比头条更精彩

人称T客

SaaS生态比拼,谁会是这场PK中的主角?

人称T客

教你快速升职加薪(毒鸡汤,慎服……)

Geek_6rptuk

团队管理 企业文化 个人成长 团队建设

一文搞懂Spring依赖注入

麦洛

首厚智能:嵌入 SpreadJS 表格组件,搭建实验室信息管理系统(LIMS)

葡萄城技术团队

SpreadJS 实验室管理系统 Lims

极客时间学习心得:用分类和聚焦全面夯实技术认知

Anfernee Hu

学习

汇总一下Intellij IDEA常用的牛逼插件

公众号:V5codings

Java开发架构篇:DDD模型领域层决策规则树服务设计

小傅哥

领域驱动设计 DDD 小傅哥 重构

游戏夜读 | 写游戏用什么语言?

game1night

3亿办公族合力,第三代SaaS抵达战场

人称T客

为什么要云原生?

Aaron_涛

架构 云原生

用Serverlss部署一个基于深度学习的古诗词生成API

刘宇

自然语言处理 学习 Serverless

kube-prometheus抓取jvm监控指标

天飞

Java JVM Prometheus kubernete

《3个月9门课,谈下我的极客时间学习活动的心得》

王伟鹏

kotlin 200行代码开发一个简化版Guice

陈吉米

Java kotlin guice ioc mynlp

Java 25周年:MovedByJava之观点

X.F

Java 架构 编程语言

市场调研分析师走向末法时代

人称T客

python实现·十大排序算法之冒泡排序(Bubble Sort)

南风以南

Python 排序算法 冒泡排序

Linux 常用命令

Jayli

Linux

往日之歌

彭宏豪95

一个产品最不重要的东西

Neco.W

产品 外包 产品经理

Spring Security 如何将用户数据存入数据库?

江南一点雨

Java spring Spring Cloud Spring Boot spring security

程序员的修行之路-人生是一场修行

牧马人

程序员

用友2019财报:你们看到的是数字,我却看到了office

人称T客

程序员的修行之路-培养工作兴趣

牧马人

程序员

5天掌握以太坊 dApp 开发

陈东泽 EuryChen

比特币 区块链 智能合约 以太坊 dapp

Spring Security+Spring Data Jpa 强强联手,安全管理只有更简单!

江南一点雨

Java spring Spring Boot spring security

忙于数字化转型,你避坑了吗?

人称T客

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