【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

点对点传输效率对比测试——镭速传输

镭速

TypeScript 函数 详解

程序员海军

Vue3 Typescript 三周年连更

linux如何设置一个环境变量,在shell退出之后也不会失效

linux大本营

Linux Shell export

Logrotate正则匹配文件名

linux大本营

正则表达式 Linux

敏捷宣言和原则

老王同学

读书笔记

CouldNOTfindGMP(missing:GMP_LIBRARYGMP_INCLUDE_DIR)CallStack(mostrecentcallfirst)

linux大本营

Linux GNU cmake

ShareSDK QQ平台注册

MobTech袤博科技

【Python实战】Python采集电影评论

BROKEN

三周年连更

终于有人把动态规划、冒泡排序、二叉树、链表、栈全部讲清楚了

收到请回复

程序员 java

nvmf协议

linux大本营

网络协议 nvme RDMA技术

PerformingTestCOMPILER_KNOWS_STDLIB-Failed

linux大本营

cmake C++

开心档之C++ 类 & 对象

雪奈椰子

已知非空线性链表由list指出,链结点的构造为(data,next)。写-算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点

linux大本营

链表 C语言 数据结构与算法

如何执行mysql文件

linux大本营

MySQL 数据库

qemu怎么用

linux大本营

qemu

c语言如何用宏来实现字符串到函数的映射?

linux大本营

C语言 映射函数

汽车制造数字化转型如何做?有哪些可行性案例?

优秀

数字化转型 汽车制造

【Python实战】Python采集最低战力信息

BROKEN

三周年连更

智能感知编码优化与落地实践

Baidu AICLOUD

视频编解码

constchar*类型的实参与char*类型的形参不兼容

linux大本营

指针 const C++

使用Plist编辑器——简单入门指南

雪奈椰子

logrotate怎么使用

linux大本营

Linux 日志管理

seq命令

linux大本营

Shell 脚本

构建数据中台——数据只有被使用起来,才能创造价值

引迈信息

数据库 数据中台 低代码 JNPF 数字化、操作系统、中台

一个能在Linux下使用C++编写的访问RabbitMQ接收发送数据的可编译代码

linux大本营

RabbitMQ 消息队列 C++

再写一个版本,要求使用类进行封装,提供完善的接口,并对函数进行完善注释

linux大本营

RabbitMQ AMQP C++

写一个epoll的服务端程序

linux大本营

事件驱动 epoll C++ I/O 多路复用

linux如何计算一个shell程序运行的时间

linux大本营

Shell Linux系统

对标阿里P8级Java面试题及答案整理(2023速成版,7天就能吃透)

收到请回复

斩获四奖|海泰方圆荣登网信自主创新尖锋榜

电子信息发烧客

详细讲解spdk里的examples/nvmf/nvmf/nvmf.c文件

linux大本营

nvme 文件存储

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