Fact-checked by Grok 2 weeks ago

HHVM

HHVM (HipHop Virtual Machine) is an open-source virtual machine and just-in-time (JIT) compiler designed for executing programs written in the Hack programming language. Although originally developed for PHP, compatibility with PHP was discontinued in 2019. Developed and maintained by Meta (formerly Facebook), HHVM translates source code into bytecode and then into optimized machine code at runtime to deliver high performance for large-scale web applications. Originally conceived to address performance bottlenecks in at , HHVM evolved from the earlier static compiler (HPHPc), which converted to C++ and was first deployed in production in 2010. In early 2013, replaced HPHPc with HHVM to provide greater flexibility and efficiency through dynamic compilation, enabling faster execution without requiring ahead-of-time compilation. This shift marked a significant milestone, as HHVM not only supported but also introduced , a of with static and other modern features, optimized specifically for HHVM's runtime. In December 2019, with the release of HHVM 4.0, official support for was discontinued, shifting focus entirely to . Key features of HHVM include its profile-guided optimizations, which use runtime profiling to inform compilation decisions, resulting in substantial speedups—such as a 15% reduction in CPU usage from enhancements between 2014 and 2015. It integrates seamlessly with web servers like , via , or Meta's Proxygen, and supports advanced configurations for production environments. As of 2025, HHVM remains actively maintained, powering Meta's internal services and receiving optimizations for emerging workloads like generative AI, where it handles high-throughput request processing efficiently. While adoption has waned in some external communities due to PHP 7 and 8 advancements, HHVM continues to serve as a high-performance for Hack-based applications at scale.

Introduction

Overview

HHVM (HipHop Virtual Machine) is an open-source just-in-time (JIT) compiler and virtual machine designed for executing programs written in the Hack programming language efficiently. Developed by Meta (formerly Facebook), its primary goal is to enhance the performance of web applications at scale by addressing the demands of high-traffic PHP workloads on platforms like social media. Originating from Meta's earlier project for optimization, HHVM employs compilation to translate code into native machine instructions at . This approach delivers faster execution compared to standard interpreters, with reported reductions in page load times exceeding 3x in development settings. HHVM's integration with further provides benefits like , enabling static typing in dynamic code for improved reliability and developer productivity without sacrificing compatibility. As of 2025, HHVM primarily focuses on Hack execution, following the discontinuation of PHP support after version 3.30 in 2018 to prioritize advancements in the Hack language.

History

The development of HHVM traces its origins to 2007, when Facebook engineers identified significant performance bottlenecks in PHP while scaling the facebook.com platform to handle growing traffic volumes. To address these issues, the company initiated the project (HPHPc), a source-to-source transpiler that converted PHP code into optimized C++ for compilation into native binaries, enabling up to a 6x improvement in throughput for Facebook's workloads. HPHPc was internally deployed by mid-2009 and publicly open-sourced in February 2010 under a BSD-like license. HHVM emerged as a just-in-time (JIT) compilation-based successor to HPHPc, with development beginning around 2010 to provide faster execution and better compatibility with unmodified PHP code. By late 2012, HHVM had achieved performance parity with HPHPc on facebook.com's codebase, and it entered full production use in early , surpassing HPHPc by approximately 15% in efficiency by December of that year. This transition marked a pivotal shift toward dynamic , reducing the need for static ahead-of-time processing while maintaining high performance for web-scale applications. In March 2014, alongside the release of HHVM 3.0, Facebook introduced the Hack programming language, which extended PHP syntax with static typing, generics, and other features to enhance developer productivity and code safety within the HHVM runtime. Hack was designed for seamless interoperability with existing PHP code, allowing gradual adoption at Facebook, where nearly the entire codebase was migrated over the following year. HHVM itself was relicensed under the PHP License at this time, broadening its open-source distribution. A major pivot occurred in September 2018, when announced that HHVM version 3.30—released in December 2018—would be the final release series supporting PHP compatibility, with support ending in November 2019 due to diverging evolution between PHP standards and . HHVM 4.0, released in February 2019, prioritized by removing several PHP-specific behaviors and focusing on language-specific optimizations. The ongoing 4.x series continued with releases such as 4.57 in October 2023, emphasizing enhancements like improved type checking and efficiency, with active as of 2025 under 's , including optimizations for workloads like generative . The project remains hosted on , licensed under the PHP and Zend licenses, and receives contributions from Meta engineers and the broader community.

Technical Architecture

Bytecode Generation

HHVM initiates the execution process by translating written in into HipHop Bytecode (HHBC), a platform-independent optimized for the virtual machine's interpreter and just-in-time compiler. Note that full PHP compatibility was discontinued after HHVM 3.30 (2019), with subsequent versions focusing on , though the architecture historically handled code. This serves as a bridge between the high-level source and lower-level , enabling efficient handling of Hack's statically typed constructs (with optional dynamic typing). The generation begins with parsing the source code using a lexer generated by Flex and a parser built with , which tokenize the input and construct an (AST) capturing the program's structure. From the AST, the lowers the representation into HHBC instructions through a series of transformations, incorporating semantic analysis to resolve scopes, names, and expressions. The type checker, integrated into this , leverages Hack's static typing system to perform on local variables, parameters, and return values based on contextual usage, such as inferring an int type for a variable assigned a numeric literal. This mechanism enables precise production without requiring runtime checks in optimized paths. A key feature enhancing performance is Repo mode, which allows pre-compilation of the entire into a bytecode repository—a self-contained store of HHBC units generated offline using the hhvm tool with options like --input-dir to specify source paths. In this mode, known as RepoAuthoritative, HHVM loads the pre-optimized repository at startup instead of parsing and emitting on demand, significantly reducing initialization time and enabling whole-program optimizations like constant propagation and via the HHBBC optimizer. This contrasts with the standard Zend Engine's approach, where opcodes are generated per-request by the Zend parser and executed interpretively without such ahead-of-time repository mechanisms or integrated type-driven optimizations. HHBC supports dynamic language features through dedicated instructions, ensuring compatibility with Hack's semantics while facilitating optimization. For instance, late binding in static contexts is handled by the LateBoundCls opcode, which resolves class names at runtime based on the calling context. Closures are represented using CreateCl, which captures the enclosing scope's variables into a callable object, while generators employ Yield for producing values and Await for suspending execution in asynchronous flows. To illustrate, consider a simple Hack function concatenating strings and adding integers:
hack
function greet([string](/page/String) $name, [int](/page/INT) $age): [string](/page/String) {
    return "Hello, " . $name . "! Age: " . ($age + 1);
}
This translates to HHBC instructions including String "Hello, ", StringConcat to append $name, another StringConcat with "! Age: ", followed by IntAdd for the $age + 1 expression, and a RetC to return the result—demonstrating how operations map to concise, typed-aware bytecodes for efficient dispatch.

Just-In-Time Compilation

HHVM employs a mechanism to convert HipHop Bytecode (HHBC) into native at , enhancing execution speed for programs (with historical support for up to version 3.30). Initially, HHVM interprets HHBC through a bytecode interpreter to execute less frequently accessed code paths. For hot code regions—identified via runtime profiling—HHVM triggers compilation, translating them into optimized or using its compiler infrastructure, which incorporates components for certain translation phases (though parts are being rewritten to ). Central to HHVM's JIT is its tracelet-based compilation approach, which divides the into small, linear sequences called tracelets, typically spanning a few basic blocks with consistent input types. These tracelets serve as units for region-based optimization, where adjacent tracelets are merged into larger regions to enable aggressive transformations such as function inlining, , and . This method balances compilation speed with optimization depth, allowing HHVM to generate efficient without excessive upfront analysis. Type specialization further refines the output by leveraging type collected during . HHVM profiles the observed types for and expressions, then generates specialized paths assuming the most common types, such as integers or strings, thereby eliminating type checks and branching overhead. For instance, if a is predominantly an integer in a hot loop, the JIT produces integer-specific arithmetic instructions, improving both speed and memory usage. This -driven specialization exploits the static types in codebases. HHVM integrates its with the to minimize pauses and ensure efficient execution. It primarily relies on for objects and arrays to match semantics, including support for destructors and arrays. To handle reference cycles, HHVM employs a tracing garbage collector using a mark-and-sweep on suspected cyclic structures, which scans from like the and globals to identify unreachable objects. This approach is optimized for compatibility by avoiding frequent full-heap scans; instead, it uses targeted and defers collections to low-pressure periods, reducing interference with ongoing compilations. Memory allocation employs zoned strategies, partitioning the heap into regions for different object types to accelerate allocation and improve locality during JIT-generated execution. Advanced JIT techniques in HHVM include whole-program analysis in repo-authoritative mode and profile-guided optimizations derived from execution traces. In repo mode, HHVM precompiles the entire application into a repository, enabling static whole-program inference for optimizations like constant propagation and interface resolution across modules, which are infeasible at . Profile-guided optimizations build on traces to inform decisions such as inlining heuristics and layout, often yielding 10-15% reductions in CPU usage for large-scale deployments by prioritizing high-impact code paths (as observed in enhancements between 2014 and 2015). These features allow HHVM to adapt compilations based on workload-specific profiles without requiring full recompilation.

Language Support

Hack Integration

Hack is a programming language developed by Meta (formerly Facebook) as a dialect of PHP, introducing gradual static typing, asynchronous programming with async/await syntax, shapes for structured data records, and enums for defining sets of named constants. Released on March 20, 2014, Hack was designed specifically to leverage HHVM's performance capabilities while maintaining compatibility with existing PHP codebases. Hack achieves seamless interoperability with PHP by compiling both languages to the same intermediate representation, known as Hack Bytecode (HHBC), which allows developers to mix Hack and PHP code within the same project without runtime distinctions. This shared bytecode enables gradual adoption, where PHP files can be incrementally converted to Hack for type annotations and other enhancements. The Hack type system provides sound, gradual static type checking through the Hack Toolchain's type checker (hh_server), which performs incremental analysis on code changes in under 200 milliseconds. HackC, introduced as HHVM's default front-end compiler in version 3.26, emits HHBC from Hack source and supports advanced type features including union types (e.g., int|float as num), generics for reusable parameterized types, and nullable annotations (?T) to handle null-safety explicitly. HHVM offers built-in support for Hack's extensions through the HH\Capabilities\Rx , which enables observable-based patterns for handling asynchronous data streams, as seen in libraries like RxHack. Additionally, async functions in Hack are optimized by HHVM's just-in-time (JIT) compiler, which translates them into efficient machine code for without multithreading. Since HHVM 4.0, development has emphasized the Hack Toolchain for enhanced developer experience, including integration with IDEs such as the now-retired editor, which provided real-time type checking, autocompletion, and for Hack code running on HHVM. As of 2025, Hack continues to be actively developed and used internally at for high-scale applications, including optimizations for generative AI workloads.

PHP Execution

HHVM historically offered compatibility with versions 5.4 through 7.0 (with some limitations) up to release 3.30 in December 2018, enabling execution of mostly unmodified code from those eras. This release provided partial support for select 7 features, but starting with version 4.0 in February 2019, official compatibility efforts ceased entirely, shifting focus exclusively to . In its PHP execution model, source code is first parsed into HHBC, an intermediate bytecode format designed for both PHP and Hack, before being processed by HHVM's just-in-time (JIT) compiler. The JIT leverages aggressive type inference during runtime to generate optimized machine code, aiming to replicate the dynamic behaviors of the Zend Engine while enabling performance gains through specialization. Key behavioral differences from Zend include HHVM invoking custom error handlers even for fatal errors—unlike Zend, which terminates without calling them—and variations in areas like memory reporting via functions such as memory_get_usage. Additionally, HHVM lacks support for PHP 8 and later features, such as attributes or match expressions, due to the discontinuation of PHP maintenance before those releases. Migrating PHP applications to HHVM often requires adjustments for subtle incompatibilities, particularly in less common language constructs or extensions. For instance, differences in string handling—such as enhanced eval support—and serialization behaviors in libraries like Memcached can necessitate code tweaks or configuration changes to ensure consistency. These variances stem from HHVM's performance-oriented design, which prioritizes efficiency over exact replication in edge cases, potentially making it less forgiving in dynamic scenarios compared to . As of 2025, HHVM's PHP execution capabilities serve primarily legacy applications that have not yet transitioned, though early versions achieved performance parity with the in standard benchmarks. For new development, migration to is recommended to leverage HHVM's full optimizations, while existing codebases are advised to shift to the standard PHP runtime for ongoing support.

Performance Characteristics

Optimization Mechanisms

HHVM employs runtime to collect type information and call-site , which informs just-in-time () specializations and inlining decisions for improved efficiency. This (PGO) approach uses to gather feedback during execution, enabling the to generate type-specialized paths that reduce branching and enhance ; for instance, disabling PGO results in a measurable slowdown. The collected profiles also guide region formation in the , prioritizing hot paths based on observed execution frequencies. Caching strategies in HHVM focus on minimizing startup times and supporting scalable deployments. is precompiled into a (repo) in authoritative mode, where the entire is translated ahead of time into a single unit stored on disk, eliminating and enabling fast restarts without recompilation from . This mode allows aggressive whole-program optimizations and persists across restarts, as the repo survives process termination. For multi-process environments, HHVM leverages mechanisms, such as for static content caching, to distribute immutable data efficiently across worker processes without redundant disk I/O. Memory management in HHVM primarily relies on for immediate deallocation, augmented by a tracing garbage collector for to handle circular references that reference counting alone cannot resolve. Optimizations include elimination (RCE), which uses to remove redundant increment and decrement operations on object references, applied during compilation to reduce overhead. For arrays, semantics enable efficient cloning by sharing underlying data structures until modification, avoiding unnecessary full copies while maintaining immutability guarantees in . Concurrency support in HHVM includes built-in asynchronous programming for , allowing non-blocking I/O operations through async/await constructs that integrate with an event-driven model without multithreading. The compiler supports concurrent compilation, enabling background threads to optimize code regions while the main thread executes, ensuring thread-safety in translation units. Historically, HHVM integrated with event loops like for its built-in server to handle concurrent requests efficiently before shifting to external proxies. Additional optimizations encompass dead code elimination within compilation units, such as sinking or removing unnecessary reference count instructions based on profile data, which directly lowers runtime costs in tracelet or region-based execution. Vector call optimization specializes function dispatches by analyzing argument types at call sites, generating direct calls to monomorphic or polymorphic targets to bypass dynamic dispatch overhead.

Benchmark Comparisons

HHVM's early benchmarks in 2013 showed significant throughput improvements over the PHP 5 interpreter, achieving 6-9 times higher performance on Facebook's production workloads due to its approach. By the end of 2012, HHVM had reached performance parity with the preceding HPHPc compiler and in 2013 surpassed it by approximately 15% in efficiency for running facebook.com. In more recent evaluations up to 2023, HHVM has demonstrated continued advantages, particularly for code. A 2015 comparative study on common PHP applications found HHVM 55.5% faster than 7 on workloads, 18.7% faster on , and 10.2% faster on 7, with gains attributed to optimized execution. Internal benchmarks from 2023 reported that HHVM optimizations reduced request latency by 35% and average CPU usage by 30% in high-scale web services handling production traffic across 1,000 servers, showcasing lower tail latencies in concurrent scenarios compared to unoptimized setups. For -specific code, HHVM can deliver up to 2-10 times the throughput of standard with OPcache in CPU-intensive tasks, though real-world gains vary by application. These performance edges are most pronounced in applications, where compilation accelerates execution, but show for I/O-heavy workloads dominated by network or disk operations. In TechEmpower framework benchmarks from earlier rounds (circa 2014), HHVM implementations led in plaintext response and serialization tests among runtimes, handling higher requests per second under load. However, benchmarks involving older modes are largely obsolete following HHVM 4.0's removal of support in 2019, with current optimizations yielding superior results primarily for codebases. As of May 2025, reported that HHVM optimizations for generative inference traffic, including dedicated tenant configurations and cache seeding, achieved a 30% reduction in request latency on specialized hosts.

Adoption and Deployment

Installation Methods

HHVM can be installed using prebuilt binary packages, which are the recommended method for most users seeking stability on supported platforms. Official prebuilt packages are available for various Ubuntu and Debian distributions via the APT package manager. To install on modern Ubuntu versions, use updated key management to avoid deprecation issues: first, install dependencies with apt-get install software-properties-common apt-transport-https ca-certificates gnupg, create the keyring directory if needed mkdir -p /etc/apt/keyrings, download and dearmor the key wget -qO- https://dl.hhvm.com/conf/hhvm.gpg.key | gpg --dearmor -o /etc/apt/keyrings/hhvm.gpg, then create /etc/apt/sources.list.d/hhvm.list with content deb [signed-by=/etc/apt/keyrings/hhvm.gpg] https://dl.hhvm.com/ubuntu $(lsb_release -cs) main, update the package list with apt-get update, and install with apt-get install hhvm. Similar steps apply to Debian, replacing the repository URL with https://dl.hhvm.com/debian. For Red Hat Enterprise Linux (RHEL) and derivatives like CentOS, prebuilt binaries are not officially provided; users should compile from source or use containerized options. For containerized setups, while HHVM documentation references Docker images on Docker Hub, these official images (e.g., hhvm/hhvm:latest) have not been updated recently and may provide outdated versions; users should verify availability or build custom images from source for current HHVM versions. To run a legacy container interactively, use docker run --tty --interactive hhvm/hhvm:latest /bin/[bash](/page/Bash) -l, but for production, base custom images on recent builds with a Dockerfile that installs the latest HHVM. Websites can be served by configuring Proxygen or within the container. Compiling HHVM from source allows access to the latest features or , particularly on unsupported distributions like RHEL. Clone the repository from with git clone https://github.com/facebook/hhvm.git and initialize submodules using git submodule update --init --recursive. Install build dependencies on /Ubuntu-based systems by adding the HHVM repository and running apt-get build-dep hhvm-nightly. Create a build directory with mkdir build && cd build, configure using (e.g., cmake ..), and build with make -j $(nproc). Install with sudo make install. Key dependencies include for utilities, for networking, and a bundled compiler; ensure no conflicting OCaml installations are present. Basic configuration of HHVM occurs via INI files or command-line flags, supporting both command-line interface (CLI) and server modes. For CLI mode, execute scripts directly with hhvm script.php, optionally specifying a config file via -c config.ini or overriding settings with -d option=value. In server mode, start HHVM with hhvm -m server -p 8080 to listen on port 8080. Configuration files define settings like server ports (hhvm.server.port = 8080), logging (hhvm.log.file = /var/log/hhvm/error.log), and repository paths for code scanning (hhvm.repo.central.path = /path/to/repo). These can be passed at runtime or set in a global INI file. Post-installation, HHVM integrates with web servers such as Nginx via FastCGI for production serving, and mode selection between PHP and Hack is handled through configuration flags like hhvm.force_hh = 1 for Hack enforcement. Version management emphasizes (LTS) releases for production stability, with LTS versions released approximately every six months and supported for about one year. Users can check the official release schedule on or the documentation for the most current options and obtain specific versions by adjusting repository URLs during package (e.g., appending version details). To verify , run hhvm --version to display the installed and build details. Test functionality by creating a simple script, such as test.php containing <?php echo "HHVM is working\n"; ?>, and executing it with hhvm test.php, which should output the message if setup is correct. For , use a .hh file with similar syntax and run via hhvm file.hh.

Production Use Cases

HHVM integrates with web servers through , enabling deployment behind or for handling dynamic content efficiently. This setup allows HHVM to process requests via a persistent connection, reducing overhead in traditional server architectures. For high-throughput environments like those at , HHVM includes Proxygen, an embedded HTTP server optimized for low-latency request serving without an intermediary proxy. Proxygen supports advanced features such as and connection multiplexing, making it suitable for large-scale web services. In production scaling, HHVM operates in server mode, which supports multi-process configurations to handle concurrent requests across worker processes. At Meta, this mode is augmented with warm-up scripts and techniques like Jump-Start, which pre-optimizes JIT compilation profiles to minimize initial latency during deployments for sites like facebook.com. For cloud environments, HHVM can be containerized using images and orchestrated in clusters, facilitating horizontal scaling and automated rollouts in distributed systems, though custom builds may be necessary for recent versions. Several companies have adopted HHVM for PHP and Hack applications in production. The Wikimedia Foundation partially integrated HHVM in 2014, achieving a reduction in median page-saving time from 7.5 seconds to 2.5 seconds for Wikipedia editors, though support was discontinued by 2019 in favor of PHP 7. Box completed its migration to HHVM in 2015, halving overall CPU utilization on application servers and yielding up to 15% improvements in speed and efficiency. Etsy also experimented with HHVM for performance testing in 2015, noting its potential for PHP workloads. As of 2025, HHVM continues to power Meta's internal services, including optimizations for generative AI workloads. Operational monitoring in HHVM deployments relies on built-in tools and external integrations for metrics collection. The --stats option, combined with configuration flags like Stats.OutputFreq, enables output of performance data such as request throughput and usage during . Repo Authoritative mode further supports operations by precompiling codebases into a single repository, allowing shared preloading across nodes to reduce startup times and enable aggressive optimizations in distributed setups. At , HHVM's deployment in 2013 marked a significant , replacing the prior HPHPc and reducing average response times from 1.2 seconds to 200 milliseconds through JIT advancements, enabling efficient scaling of facebook.com. Post-2019, shifted new services toward , leveraging HHVM's for safer, higher-performance code while maintaining interoperability with legacy components across internal teams.

Development and Maintenance

Open-Source Ecosystem

HHVM is maintained by as an open-source project, with its source code hosted on , where community members submit pull requests to contribute improvements and fixes. The project is dual-licensed under the License and the Zend License, allowing broad compatibility and reuse while ensuring contributions align with these terms. Contributions to HHVM typically involve code written in C++ for the core , for components like the Hack parser (rewritten from starting in ), and Hack or for runtime and test code. Developers are encouraged to add tests using the HackTest framework, a library for Hack that provides a runner and base class for assertions, often paired with libraries like fbexpect. Common focus areas include enhancements to the just-in-time () for better performance and extensions to the Hack language for improved and features. The open-source ecosystem includes the Hack Toolchain, a set of tools for Hack development that incorporates hh_client as the primary to the hh_server type checker for real-time static analysis. IDE support is available through integrations like the VS Code extension for Hack, which offers , go-to-definition navigation, error reporting, and HHVM debugging capabilities. Community engagement centers on the official HHVM for release announcements, technical deep dives, and updates, alongside discussion groups on for general and developer-specific queries. Past events such as the 2014 Hack Developer Day have fostered direct interaction, though ongoing participation is largely online via issues and Facebook groups such as HHVM General and HHVM Dev. The project remains active, with thousands of commits annually reflecting sustained development. A notable challenge in the ecosystem has been the decline in PHP-related contributions following the end of PHP 7 support in late 2019, as HHVM pivoted to prioritize the language and its growing for enhanced productivity and safety.

Recent Updates

In 2021, HHVM introduced the Jump-Start technique, a that shares just-in-time () compilation data from a small fleet of servers to the broader production environment, reducing warm-up overhead by 54.9% and improving steady-state performance by 5.4%. This approach leverages HHVM's phased rollout process to seed JIT caches, enabling faster startup times and more efficient resource utilization across large-scale deployments. By 2022, HHVM released version 4.168 as its latest (LTS) edition, providing approximately 48 weeks of maintenance with enhancements focused on stability and compatibility for applications. Following the October announcement of operational shifts, including the cessation of official binary releases in favor of community-maintained builds via CI, the project has emphasized ongoing maintenance through thousands of annual commits, including bug fixes and performance tweaks from community and internal contributions. In , this included over 2,500 commits for improvements such as 50-60% faster autoloading through the new FactsDB system and enhanced REPL support for lambda captures and await . As of November 2025, no major public announcements have occurred since the May 2025 GenAI optimizations, with sustained via . Security patches remained a priority, with updates issued in for all supported versions (including 4.128 LTS and later 4.x branches) to address vulnerabilities, urging users to promptly. Migration resources from 7 emphasized a full transition to , noting HHVM's deprecation of compatibility since 2019, with guides recommending codebase conversion to leverage 's and HHVM's optimizations. In 2025, implemented targeted HHVM optimizations for generative AI (GenAI) workloads, creating a dedicated for traffic that achieved 30% lower through specialized configurations like expanded thread pools (up to 1,000 threads per host) and extended request timeouts beyond the standard 30 seconds. These tweaks incorporated Jump-Start for AI-specific seeding, request warm-up via dummy executions to prime non-code caches, and shadow traffic to sustain JIT coverage during updates, addressing memory-intensive tasks without broader mode support. Looking ahead, HHVM's development prioritizes deeper integration in core components for enhanced safety and reliability, alongside resumed work on ARM64 support to better accommodate cloud-native applications on modern hardware. language advancements, such as true types, equality refinement, and type constants for enums, further solidify its focus on scalable, type-safe execution.

References

  1. [1]
    HHVM Documentation
    - **What is HHVM**: HHVM (HipHop Virtual Machine) is a virtual machine designed to execute programs written in Hack and PHP.
  2. [2]
  3. [3]
    Redesigning the HHVM JIT compiler for better performance
    Sep 22, 2016 · HHVM is an open source project, and it's used to run not only Facebook but also a number of sites across the web, including Wikipedia, Baidu, ...<|control11|><|separator|>
  4. [4]
    Meta's Full-stack HHVM optimizations for GenAI
    POSTED ON MAY 20, 2025 TO Data ... This is a consequence of the HHVM (HipHop Virtual Machine) runtime—each request has a corresponding worker thread, ...
  5. [5]
    The HipHop Virtual Machine - Engineering at Meta - Facebook
    Dec 9, 2011 · A new PHP execution engine based on the HipHop language runtime that we call the HipHop Virtual Machine (hhvm).
  6. [6]
    Speeding up PHP-based development with HipHop VM
    Nov 29, 2012 · The goals of the HHVM project are two-fold: build a production-ready virtual machine that delivers superior performance, and unify our production and ...
  7. [7]
    Hack: a new programming language for HHVM - Engineering at Meta
    Mar 20, 2014 · Today we're releasing Hack, a programming language we developed for HHVM that interoperates seamlessly with PHP. Hack reconciles the fast ...
  8. [8]
    Ending PHP Support, and The Future Of Hack
    ### Summary of HHVM Definition, Purpose, Benefits, and Status Regarding PHP Support Discontinuation
  9. [9]
    HipHop for PHP: Move Fast - Meta for Developers
    HipHop allows us to write the logic that does the final page assembly in PHP and iterate it quickly while relying on custom back-end services in C++, Erlang, ...Missing: announcement | Show results with:announcement
  10. [10]
    Faster and Cheaper: The Evolution of the hhvm JIT
    ### Performance Milestones for HHVM vs HPHPc (2012-2013)
  11. [11]
    Ending PHP Support, and The Future Of Hack - HHVM
    Sep 12, 2018 · HHVM v3.30 will be the last release with PHP support, ending on 2019-11-19. Projects should migrate to Hack or PHP7.Missing: discontinued | Show results with:discontinued
  12. [12]
    HHVM 4.0.0
    Feb 11, 2019 · HHVM 4.0 is released! This release adds support for .hack files, non-experimental support for HSL regular expressions, and removes several PHP behaviors.
  13. [13]
    Installation: Release Schedule - HHVM and Hack Documentation
    ² HHVM 4.102 was promoted to lts status instead of HHVM 4.104. Its expected support duration has been extended by 2 weeks (to a total of 50) to compensate for ...
  14. [14]
    (PDF) The HipHop virtual machine - ResearchGate
    Aug 7, 2025 · The HipHop Virtual Machine (HHVM) is a JIT compiler and runtime for PHP. While PHP values are dynamically typed, real programs often have latent types.
  15. [15]
    The Journey of a Thousand Bytecodes
    ### Summary of HHVM Parsing PHP/Hack to HHBC Bytecode
  16. [16]
    Types: Type Inferencing - HHVM and Hack Documentation
    While certain kinds of variables must have their type declared explicitly, others can have their type inferred by having the implementation look at the context.Missing: PHP | Show results with:PHP
  17. [17]
    Advanced Usage: Repo Authoritative
    To use repo authoritative mode, you need to build a repo, and then deploy that repo (i.e., configure HHVM to use it). You can either do that via an ...Missing: pre- | Show results with:pre-
  18. [18]
    [PDF] A Comparative Study of PHP Dialects - Department of Computing
    Jun 16, 2015 · HHBC is a bytecode format created specifically for HHVM, in a form that is ap- propriate for consumption by interpreters and just-in-time ...<|control11|><|separator|>
  19. [19]
    HHVM JIT: a profile-guided, region-based compiler for PHP and Hack
    This paper describes the design of the second generation of the HHVM JIT and how it addresses the challenges to efficiently execute PHP and Hack programs.
  20. [20]
    The hiphop virtual machine | ACM SIGPLAN Notices
    The HipHop Virtual Machine (HHVM) is a JIT compiler and runtime for PHP. While PHP values are dynamically typed, real programs often have latent types.
  21. [21]
    On Garbage Collection
    ### Summary of HHVM's Garbage Collection Mechanism
  22. [22]
    [PDF] Improving Memory Management for HHVM - Steve Blackburn
    Oct 24, 2014 · Two major PHP implementations, PHP5 and HHVM, both use naive reference counting for memory management, an algorithm which is known to be slow ...
  23. [23]
    Built In Types: Enum - HHVM and Hack Documentation
    An enum creates a set of named, constant, immutable values. In Hack, enums are limited to int, string, or other enum values. Access using full name, like ...Missing: union | Show results with:union
  24. [24]
    HHVM and Hack Documentation
    Full reference docs for all functions, classes, interfaces, and traits in the Hack language. Standard Library API Reference
  25. [25]
    HHVM 3.26 - Introducing HackC
    ### Summary of HackC from HHVM 3.26 Release Blog
  26. [26]
    Built In Types: Introduction - HHVM and Hack Documentation
    This section covers the different built-in types available in Hack. Primitive Types Hack has the following primitive types: bool, int, float, string, and null.Union Types · The Super Type · Hack Arrays
  27. [27]
    HH\Capabilities\Rx - HHVM and Hack Documentation
    HH\Capabilities\Rx. The core capability present in every reactive context. Each weaker level of reactive context has additional privileges, ...
  28. [28]
    Asynchronous Operations: Introduction
    DocumentationhackLearnAsynchronous OperationsIntroduction. Asynchronous ... Async is not multithreading---HHVM still executes a program's code in one ...Missing: safe JIT libevent
  29. [29]
    HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and ...
    This paper describes the design of the second generation of the HHVM JIT and how it ad- dresses the challenges to efficiently execute PHP and Hack programs.
  30. [30]
    Hack | Nuclide
    Hack is a programming language for HHVM. Currently, HHVM is not supported on Windows, so this integration has limited viability on that platform.Missing: post- 4.0
  31. [31]
  32. [32]
    Facebook Releases HHVM 4.0 With PHP No Longer Supported
    Feb 11, 2019 · HHVM 4.0 doesn't drop support for executing PHP scripts entirely, which will likely happen in their next release when dropping the PHP tag.
  33. [33]
    Empty response body on fatal errors #4818 - facebook/hhvm - GitHub
    Feb 10, 2015 · As a heads-up, whereas the Zend runtime won't call the error handler on fatals, HHVM will, with an error code of 16777217. So you'll handle full ...Missing: differences | Show results with:differences
  34. [34]
    Under the hood: Box's HHVM migration - Engineering at Meta
    Jul 14, 2015 · In the rest of this post, I will detail how we use PHP, how HHVM works, the challenges we faced migrating to HHVM, and the remarkable performance wins it ...
  35. [35]
    Facebook Releases HHVM 3.30 As The Final Version Officially ...
    HHVM 3.30 is the final release supporting PHP5/PHP7 code, at least officially. HHVM will now deviate more moving forward and focus exclusively upon their Hack ...
  36. [36]
  37. [37]
    Configuration: INI Settings - HHVM and Hack Documentation
    Here is the raw list of all possible ini settings that can go in your /etc/hhvm/php.ini , /etc/hhvm/server.ini or any custom .ini file.
  38. [38]
    On Garbage Collection | HHVM
    When this is done, any values on the heap that aren't in the reachable set are assumed to be garbage and are freed. PHP's language semantics ...Missing: mechanism | Show results with:mechanism
  39. [39]
    Improving Arrays in Hack - HHVM
    Oct 30, 2015 · When an array is passed to or returned from a function, the programmer has the guarantee that it will not be modified unless explicitly passed ...Missing: dispatches | Show results with:dispatches
  40. [40]
  41. [41]
    HHVM 3.0.0
    Mar 28, 2014 · ... Facebook's engineering team has shipped HipHop (HHVM) 3.0 today. ... Facebook released a new version of their PHP virtual machine called HHVM.
  42. [42]
    How the Cinder JIT's function inliner helps us optimize Instagram
    May 2, 2022 · It iterates over all the VectorCalls and collects the calls for which the target is known. In this case, v4 is known to be a particular function ...
  43. [43]
    How Three Guys Rebuilt the Foundation of Facebook - WIRED
    Jun 10, 2013 · HHVM uses what's called just-in-time compilation, which means Facebook's PHP code is converted to machine language as it executes on the server ...Missing: announcement | Show results with:announcement
  44. [44]
    Faster and Cheaper: The Evolution of the hhvm JIT
    Dec 11, 2013 · When the hhvm project was started almost 4 years ago, it had a two-part mandate: First, create a PHP JIT that could serve facebook.com at ...
  45. [45]
    Lockdown Results and HHVM Performance
    Jun 9, 2015 · We demonstrated that HHVM is 55.5% faster than PHP 7 on a MediaWiki workload, 18.7% faster on a Wordpress workload, and 10.2% faster on a Drupal 7 workload.
  46. [46]
    [PDF] HHVM Performance Optimization for Large Scale Web Services
    Apr 15, 2023 · This paper discusses challenges and techniques in optimizing HHVM performance for Meta's web service. We begin by evaluating the effectiveness ...
  47. [47]
    Include Hack - HHVM - PHP++; Paul Tarjan, Sara Golemon - YouTube
    Sep 4, 2014 · Did you know that one of the biggest PHP sites on the internet isn't running PHP? Did you know that HHVM clocks in at anywhere between 2x ...Missing: vector call optimization function dispatches<|control11|><|separator|>
  48. [48]
  49. [49]
    Installation: Linux - HHVM and Hack Documentation
    Obtaining The Latest Stable Version · Obtaining A Specific Release · Choosing A Version · Other Packages · GPG Key Installation: Alternative Method · Mirrors · Hack.
  50. [50]
    Installation: Docker - HHVM and Hack Documentation
    We publish Docker images to Docker Hub. These can be used to install HHVM in a containerized environment. If you are new to Docker follow their getting started ...
  51. [51]
    Installation: Building From Source - HHVM and Hack Documentation
    We only support building with the bundled OCaml; you may need to uninstall (or brew unlink on Mac) other ocamlc and ocamlbuild binaries before building HHVM.Installing Build... · Debian Or Ubuntu · Building HhvmMissing: methods | Show results with:methods
  52. [52]
    Configuration: Introduction - HHVM and Hack Documentation
    HHVM configuration uses INI files with key/value settings, and can be set via a .ini file or the command line using the -d flag.
  53. [53]
    Basic Usage: Introduction - HHVM and Hack Documentation
    After installing, you are ready to start using HHVM. For a majority of cases, you will run HHVM in one of two different ways.<|control11|><|separator|>
  54. [54]
    Advanced Usage: FastCGI - HHVM and Hack Documentation
    HHVM has built-in support for two server types: Proxygen and FastCGI. FastCGI provides a high performance interface between your codebase and web server ...
  55. [55]
    Basic Usage: Proxygen - HHVM and Hack Documentation
    HHVM has built-in support for two server types: Proxygen and FastCGI. Proxygen is a full web server built directly into HHVM, and is recommended since it is ...Missing: integrations | Show results with:integrations
  56. [56]
    Basic Usage: Server - HHVM and Hack Documentation
    To start an HHVM server, use `hhvm -m server -p 8080`. The default port is 80, and the root is the launch directory. HHVM uses proxygen.Missing: RepoAuthoring fast restarts<|control11|><|separator|>
  57. [57]
    HHVM Jump-Start: Boosting Both Warmup and Steady-State ...
    Furthermore, when a server crashes, it automatically restarts and the chances of hitting a bug again are small. Effectively, the rate of failed servers.
  58. [58]
    hhvm/hhvm-proxygen - Docker Image - Docker Hub
    HHVM is installed and running as a web server (via Proxygen). it listens on port 80; both the default document and 404 document are index.php ...Missing: FastCGI | Show results with:FastCGI
  59. [59]
    How we made editing Wikipedia twice as fast - Wikimedia Diff
    Dec 29, 2014 · HipHop Virtual Machine, or HHVM, reduces the median page-saving time for editors from about 7.5 seconds to 2.5 seconds, and the mean page-saving time from ...
  60. [60]
    HHVM adoption news - Engineering at Meta
    Apr 17, 2015 · Etsy announced its own adoption of HHVM last week, and Wikipedia worked with our teams to adopt earlier this year. Here's a little bit about how ...
  61. [61]
    Experimenting with HHVM at Etsy
    Apr 6, 2015 · HipHop Virtual Machine (HHVM) is an open-source virtual machine designed for executing programs written in PHP.
  62. [62]
    HHVM Monitoring | Netdata
    Learn everything about monitoring & troubleshooting HHVM, what metrics are important to monitor and why, and how to monitor HHVM with Netdata.
  63. [63]
    HHVM Performance Optimization for Large Scale Web Services
    This paper discusses challenges and techniques in optimizing HHVM performance for Meta's web service. We begin by evaluating the effectiveness of semantic ...
  64. [64]
    Meta's Hack (HHVM) language appears to be no longer maintained
    Sep 10, 2024 · They stopped shipping PHP support with PHP 7. Consider applying for YC's Winter 2026 batch! Applications are open till ...Missing: discontinued | Show results with:discontinued
  65. [65]
  66. [66]
    hhvm/hacktest: A unit testing framework for Hack - GitHub
    Jun 1, 2024 · A unit testing framework for Hack. Contribute to hhvm/hacktest development by creating an account on GitHub ... See CONTRIBUTING.md. License. The ...
  67. [67]
    None
    ### Summary of HHVM Contributing Guidelines
  68. [68]
    Getting Started: Tools - HHVM and Hack Documentation
    We primarily recommend using Visual Studio Code with the VSCode-Hack extension; this provides IDE features such as syntax highlighting, go-to-definition, and ...
  69. [69]
    Hack - Visual Studio Marketplace
    The Hack extension adds rich Hack language & HHVM support to Visual Studio Code, including type checking, autocomplete, and debugging.
  70. [70]
    Blog
    No readable text found in the HTML.<|control11|><|separator|>
  71. [71]
    Hack Developer Day Recap - Engineering at Meta
    Apr 10, 2014 · A few weeks ago, Facebook introduced and open-sourced Hack, a gradually-typed programming language for HHVM that interoperates seamlessly ...
  72. [72]
    Boosting the performance of virtual machines with Jump-Start
    Mar 3, 2021 · The Jump-Start technique has significantly improved HHVM's warm-up and steady-state performance. These improvements have enabled the continuous ...
  73. [73]
  74. [74]
    Project Update and OSS Support Changes
    ### Summary of HHVM Project Updates
  75. [75]