<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HHVM</title>
    <description>The landing page for HHVM and the blog of Hack/HHVM</description>
    <link>http://hhvm.com//</link>
    <atom:link href="http://hhvm.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 23 Jan 2026 16:27:39 +0000</pubDate>
    <lastBuildDate>Fri, 23 Jan 2026 16:27:39 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        
        <title>Project Update and OSS Support Changes</title>
        <description>&lt;p&gt;Hi everyone 👋&lt;/p&gt;

&lt;p&gt;It’s been a while since our last update here, and a lot has changed in the last year. The Hack and HHVM teams have been busy working on a wide array of improvements to both the language and the runtime, this year we’ve already landed over 2.5k commits. A lot has changed for us in the last year - our teams have been asked to take on a lot of new scope and projects, and we continue to have a very small number of open source users picking up our HHVM+Hack builds. As a result, we feel we need to reevaluate some of our open source strategy. First let’s talk about some of the major changes to the project:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;We’ve made the decision to drop support for GCC. Meta has begun using Clang for all internal builds, and with Meta’s reduced investment, we can’t afford to maintain a separate CI for GCC.&lt;/li&gt;
  &lt;li&gt;Additionally, we will no longer be creating official releases of HHVM and Hack. As we’ve increased the cadence and automation around our internal releases, maintaining old versions of HHVM has become a full-time job that we lack the bandwidth for.&lt;/li&gt;
  &lt;li&gt;Finally, while we plan to keep CI for our CMake build system on GitHub, we will no longer be supporting these builds ourselves. We’re asking that the community take a more active role in fixing and maintaining this system. For years, our CMake builds have required very little attention but the increasing coupling of Hack and HHVM and the introduction of more Rust code has made this far more time-consuming.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We remain committed to sharing the work we’re doing and engaging with the open-source community, but the reality is, we can’t afford to validate and release the variety of HHVM and Hack combinations like we used to.&lt;/p&gt;

&lt;p&gt;Our team has been working hard on a number of internal projects focused on improving the performance of our developer tools, enhancing the Hack language, improving the reliability of the runtime, and completing some major infrastructure changes, and we look forward to sharing those wins with this community.&lt;/p&gt;

&lt;p&gt;This year has brought many new features to the Hack language, so far we’ve completed work on true types, equality refinement, with refinement, and type constant support for enum classes. Each of these features deserves its own more detailed breakdown, but we will summarize them here. With true types, Hack can now differentiate between three classes of type information: trusted, best effort, and dynamic. A type is said to be trusted when we’re sure that the static inference from the type checker is correct; best effort when that inference may be incorrect in the presence of dynamic code, and dynamic when a meaningful type cannot be inferred.  Equality refinements allow Hack to narrow inferred types using the result of === and !== comparisons, resulting in more fluent code with fewer duplicative checks to satisfy the type checker. The new with refinement feature behaves similarly to a where clause, but can correctly handle abstract type constants and require less boilerplate.&lt;/p&gt;

&lt;p&gt;Improving the performance and usability of our developer tooling has been a major focus of our teams. This year we’ve made major improvements to the performance of HHVM’s autoloader resulting in 50-60% faster autoloading on sandboxes.  The REPL incorporated with HHVM’s debugger has been improved to support automatic lambda captures of variables defined in the REPL, and await syntax used in top-level expressions in the REPL. We also plan to complete the deprecation of the old HPHPD debugger in favor of our LSP bindings from the vsdebug extension.&lt;/p&gt;

&lt;p&gt;On the HHVM team, we’ve completed work on a pair of major infrastructure changes, FactsDB and Declaration Directed Bytecode (DDB). FactsDB is a replacement for user-specified autoload maps created using autoload_set_paths. It computes an autoload map for a repository within HHVM, allowing us to reuse the map for various optimizations and new features, including DDB. It also provides an API for introspection over the codebase that can answer subtype queries not generally possible with reflection. With autoloading now occurring natively we also plan to begin removing support for explicit require and include statements. Building on Facts, DDB is a new feature that allows HHVM’s bytecode compiler to access information about top-level declarations stored in FactsDB while compiling source files. We plan to leverage this new functionality to enable new classes of language features that either have not previously been possible or have been prohibitively complicated to implement.&lt;/p&gt;

&lt;p&gt;We have resumed our work to support the ARM architecture in our compiler backend and runtime. HHVM is once again being tested in an ARM environment and we have been actively making fixes and improvements to enhance the performance of workloads running on ARM.&lt;/p&gt;

&lt;p&gt;Lastly, we have continued to invest in the tooling we use to further our work on the Hack and HHVM projects. We have been implementing debugging tools for use with lldb similar to those we have made available for gdb as part of our move to Clang. We have begun work to pair down the enormous number of configuration options currently available in HHVM, which we find are often under tested.&lt;/p&gt;

</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Paul Bissonette</dc:creator>
        
        <pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2023/10/27/oss-update.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2023/10/27/oss-update.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>Integer Overflow leading to OOB write in HHVM</title>
        <description>&lt;p&gt;We’ve identified an issue where large multibyte uploads can overflow a
32-bit integer and cause out-of-bounds array access.&lt;/p&gt;

&lt;p&gt;This is similar to a PHP had security issue in the past:
https://github.com/php/php-src/commit/3c8582ca4b8e84e5647220b647914876d2c3b124&lt;/p&gt;

&lt;p&gt;Patches have been applied on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HHVM-4.153&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HHVM-4.168&lt;/code&gt; and
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HHVM-172&lt;/code&gt; branches (releases 4.172.2, 4.168.3 and 4.153.5
respectively), as well as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;master&lt;/code&gt; branch. Packages are not
currently available, so users will need to build their own packages.&lt;/p&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wilfred Hughes</dc:creator>
        
        <pubDate>Tue, 25 Jul 2023 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2023/07/25/security-update.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2023/07/25/security-update.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>CVE-2023-0567: Invalid password hashes accepted by crypt()</title>
        <description>&lt;p&gt;We’ve just released patch releases for HHVM: 4.172.2, 4.168.3 and
4.153.5. These resolve the security issue CVE-2023-0567.&lt;/p&gt;

&lt;p&gt;The function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;crypt()&lt;/code&gt; would accept invalid password hashes. This is
also an issue in PHP, which fixed this in 8.0.28.&lt;/p&gt;

&lt;p&gt;https://bugs.php.net/bug.php?id=81744
https://github.com/php/php-src/security/advisories/GHSA-7fj2-8x79-rjf4&lt;/p&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wilfred Hughes</dc:creator>
        
        <pubDate>Tue, 07 Mar 2023 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2023/03/07/security-update.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2023/03/07/security-update.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>CVE-2022-36937: TLS 1.0 connections</title>
        <description>&lt;p&gt;We’ve just released patch releases for HHVM: 4.172.1, 4.168.2 and
4.153.4. These resolve the security issue CVE-2022-36937.&lt;/p&gt;

&lt;p&gt;The functions &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stream_sock_server&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stream_socket_client&lt;/code&gt; (part of
the stream extension) accept URLs. When a URL starts with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tls://&lt;/code&gt;
these would previously allow TLS 1.0 connections.&lt;/p&gt;

&lt;p&gt;TLS 1.0 is deprecated and considered insecure. As of these new
releases, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stream_sock_server&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stream_socket_client&lt;/code&gt; only permit
newer TLS connections.&lt;/p&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wilfred Hughes</dc:creator>
        
        <pubDate>Fri, 20 Jan 2023 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2023/01/20/security-update.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2023/01/20/security-update.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>Standby for Release</title>
        <description>&lt;p&gt;We are skipping the 4.173 release this week, and are revisiting our release
process. We expect to share an update in the coming weeks.&lt;/p&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Michael O'Farrell</dc:creator>
        
        <pubDate>Mon, 14 Nov 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/11/14/standby-for-release.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/11/14/standby-for-release.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>HHVM 4.172</title>
        <description>&lt;p&gt;HHVM 4.172 is released! 4.169 - 4.171 remain supported, as do the 4.168 
and 4.153 LTS releases.&lt;/p&gt;

&lt;h1 id=&quot;highlights&quot;&gt;Highlights&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Fixed a bug preventing classes using a trait with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;require class &amp;lt;that class&amp;gt;&lt;/code&gt;
from being mocked.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/fa23fd50c869719a1ce4aa2b75c248dc0686d814&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Regular expression functions now have a new error type, for when regular
expressions jitted by PCRE run out of scratch space: PREG_JIT_STACKLIMIT_ERROR
These would previously be reported as generic internal errors, which made
debugging tricky.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/cef180f6b21c945e9113e5316ca06589c827bc10&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Two compiler options have been renamed - when compiling a repo the compiler
will no longer accept &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--module&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--cmodule&lt;/code&gt; options as of this release.
Please use their new names &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--dir&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--cdir&lt;/code&gt; instead (new names added in
release 4.169). This change is intended to avoid confusion wht the ‘modules’
experimental feature.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/7859f697fb9bb539967bc5dfa9d22bce093c1a0a&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;The typechecker now disallows overriding an async method with a non-async one.
This was previously allowed as long as the types in the signature were
compatible, but this made it easy to accidentally write subtle bugs by leaving
off the async keyword on the overriding method.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/415b6f84cf03aff4f31c2e963bd6576d70317ae5&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;When using the ‘modules’ experimental feature, note that the default value of
the Eval.EnforceModules runtime option is changing from 1 (warn) to 2 (throw
exceptions).
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/886a89f73db31d7904c1692f659bdf4f5aa4900e&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;When using the like_type_hints experimental feature, note that this release
changes how these types (the union of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dynamic&lt;/code&gt; and another type; e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~int&lt;/code&gt;
for the union of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dynamic&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;int&lt;/code&gt;) are enforced in argument and return type
positions. Previously they were enfoced the same as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dynamic&lt;/code&gt; type (i.e.
any value would be accepted) but after this release they are enforced as the
other type in the union would be (e.g. for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~int&lt;/code&gt; only integer values will
now be accepted).
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/ad1dbd1230d6f9168e464083575366a8915e00ce&quot;&gt;commit&lt;/a&gt;)
See also
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/bb5e5d61558dfd11e979572eb513c80adb2fa515&quot;&gt;commit&lt;/a&gt;)
for related changes adding new ways to write aspirational, un-enforced types
via helpers in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HH\FIXME&lt;/code&gt; namespace.&lt;/li&gt;
&lt;/ul&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexey Toptygin</dc:creator>
        
        <pubDate>Wed, 02 Nov 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/11/02/hhvm-4.172.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/11/02/hhvm-4.172.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>HHVM 4.153.3, 4.167.1, 4.168.1, 4.169.1, 4.170.1 and 4.171.0</title>
        <description>&lt;p&gt;HHVM 4.153.3, 4.167.1, 4.168.1, 4.169.1, 4.170.1 and 4.171.0 are released!
4.167.1 is the last release in 4.167 branch, while 4.168 - 4.170 remain
supported, as does the 4.153 LTS release.&lt;/p&gt;

&lt;p&gt;Note that HHVM 4.153.2 is also released accidentally, but it does not include
any meaningful change since 4.153.1.&lt;/p&gt;

&lt;p&gt;These releases fixes an issue introduced in 4.153.0
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/291397f88cbe9154e2b228248a2534fbc31ea3f1&quot;&gt;commit&lt;/a&gt;).
When combining with &lt;a href=&quot;https://github.com/facebook/hhvm/commit/280e6899b442796a197b5b236d3ddd50d0b62b5f&quot;&gt;another
commit&lt;/a&gt;
introduced in 4.168.0, it leads to a segmentation fault when building a bytecode
repository for repo-authoritative mode in gcc built HHVM. Earlier releases are
not affected.&lt;/p&gt;

&lt;h1 id=&quot;highlights&quot;&gt;Highlights&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;HHVM 4.171.0 includes the fix for repo mode, which is also back-ported to all
supported HHVM versions
(&lt;a href=&quot;https://github.com/facebook/hhvm/issues/9236&quot;&gt;issue&lt;/a&gt;,
&lt;a href=&quot;https://github.com/facebook/hhvm/commit/1174b9f2e5935ff468b236aba9df0f3d3ff12d5a&quot;&gt;commit&lt;/a&gt;).
The fix makes it possible to migrate the command line flag for building a
bytecode repository to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--inputs&lt;/code&gt; from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--ffile&lt;/code&gt;, which was dropped in &lt;a href=&quot;https://hhvm.com/blog/2022/08/24/hhvm-4.167.html&quot;&gt;HHVM
4.167&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;The following features are now considered preview features with an ongoing
release, i.e. allowed by the runtime, but not the typechecker:
    &lt;ul&gt;
      &lt;li&gt;Diamond traits
(&lt;a href=&quot;https://github.com/hhvm/user-documentation/pull/1297&quot;&gt;docs&lt;/a&gt;,
&lt;a href=&quot;https://github.com/facebook/hhvm/commit/dcfea5ce9ad2658605668cbccbb8e2865a497627&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
      &lt;li&gt;Modules
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/cb398e7bb06eeb36e5d54f7fca867cbe30530104&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReflectionClass::getModule()&lt;/code&gt; (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/90534fe0eac73122f8867796bbaff45312a4cac8&quot;&gt;commit&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ReflectionModule::getDocComment()&lt;/code&gt; (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/ef6a56308366ec41e768b35e712c5fc646215123&quot;&gt;commit&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;Added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HH\classname_from_string_unsafe&lt;/code&gt; to convert a string into a lazy class (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/bc7260465933d884cb126dbd2bb5e31609465c37&quot;&gt;commit&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HH\embed_type_decl&lt;/code&gt; now supports repo mode (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/1368add9e126642cbb4bf55fb46cab7bf0005e3d&quot;&gt;commit&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;The thrift extension now requires &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clearTerseFields&lt;/code&gt; functions in generated
code
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/81b528e7371e8e8da3b61cda2a39844a8129c1c3&quot;&gt;commit&lt;/a&gt;).
Regenerating Hack files from the thrift definition with the &lt;a href=&quot;https://github.com/facebook/fbthrift/releases/tag/v2022.10.17.00&quot;&gt;latest thrift
compiler&lt;/a&gt;
would provide the required &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;clearTerseFields&lt;/code&gt; functions.&lt;/li&gt;
  &lt;li&gt;The following &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hh_server&lt;/code&gt; flags are renamed:
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--enable-global-write-check-functions&lt;/code&gt; is renamed to
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--enable-global-access-check-functions&lt;/code&gt; (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/6730973faed03c5b4e3c48c494704ccaaf722425&quot;&gt;commit&lt;/a&gt;);&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--enable-global-write-check&lt;/code&gt; is
renamed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--enable-global-access-check-files&lt;/code&gt; (&lt;a href=&quot;https://github.com/facebook/hhvm/commit/a55be3b322c9b78d3a87e5e9a28ef21905ca1ad4&quot;&gt;commit&lt;/a&gt;).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bo Yang</dc:creator>
        
        <pubDate>Fri, 21 Oct 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/10/21/hhvm-4.171.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/10/21/hhvm-4.171.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>HHVM 4.170</title>
        <description>&lt;p&gt;HHVM 4.170 is released! 4.167 - 4.169 remain supported, as does the 4.168
and 4.153 LTS releases.&lt;/p&gt;

&lt;h1 id=&quot;highlights&quot;&gt;Highlights&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;The typechecker now rejects calls to type_structure with an invalid type
as the first argument (e.g. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;type_structure(MyCoolType::class, &apos;TUhOh&apos;)&lt;/code&gt;
when &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;type MyCoolType = shape(...)&lt;/code&gt; Previously this was not flagged by
the typechecker but would fatal at runtime.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/7481994678&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;The lint for using UNSAFE_CAST with too broad an input type now suggests
an autofix.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/87903e572b&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;The Eval.EmitClassPointers runtime option has been removed. The previous
default behavior (option value 2; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Foo::class&lt;/code&gt; expressions emit ‘lazy’
class pointers) is now the only supported behavior.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/c8b8dac260&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Removed support for referring to config values using a wildcard (e.g.
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;foo*bar = value&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*foobar* = value&lt;/code&gt; in HDF configs. Adding values to
a vector-typed config node such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MyVectorConfig.* = value&lt;/code&gt; remains
supported.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/e50e42ef06&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Remove support for hdf.loadpaths to specify paths to search when
including other HDF configs.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/b9e5ce4c3e&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;a-note-regarding-this-release&quot;&gt;A Note Regarding This Release&lt;/h1&gt;

&lt;p&gt;We are still working on a fix for https://github.com/facebook/hhvm/issues/9236
(inability to compile a repo in gcc builds of hhvm since release 4.168). If
you rely on this functionality consider skipping this release or using nix
packages built with clang. We will release updated versions of all supported
releases once the fix is available.&lt;/p&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexey Toptygin</dc:creator>
        
        <pubDate>Fri, 07 Oct 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/10/07/hhvm-4.170.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/10/07/hhvm-4.170.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>HHVM 4.169</title>
        <description>&lt;p&gt;HHVM 4.169 is released! 4.166 - 4.168 remain supported, as does the 4.153 LTS
releases.&lt;/p&gt;

&lt;h1 id=&quot;highlights&quot;&gt;Highlights&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hackfmt&lt;/code&gt; now only allows up to 1 consecutive blank lines (previously 2).&lt;/li&gt;
  &lt;li&gt;The compiler options &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--module&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--cmodule&lt;/code&gt; are being renamed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--dir&lt;/code&gt;
and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--cdir&lt;/code&gt; to avoid confusion with the experimental ‘modules’ feature.
(This item was retroactively added to this announcement on 2022.11.02).&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;breaking-changes&quot;&gt;Breaking Changes&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$callback&lt;/code&gt; passed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fb_setprofile&lt;/code&gt; now receives all parameters,
including non-default and default parameters. Previously only non-default
parameters are passed to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$callback&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bo Yang</dc:creator>
        
        <pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/09/20/hhvm-4.169.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/09/20/hhvm-4.169.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        
        <title>HHVM 4.168</title>
        <description>&lt;p&gt;HHVM 4.168 (LTS) is released! This release has long term support, so:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;this release will be supported for approximately 48 weeks&lt;/li&gt;
  &lt;li&gt;the next LTS will be released in approximately 24 weeks&lt;/li&gt;
  &lt;li&gt;HHVM 4.153 (LTS) and HHVM 4.165–167 remain supported&lt;/li&gt;
  &lt;li&gt;support has ended for 4.128 (LTS) and 4.164&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;status-of-ubuntu-2204-support&quot;&gt;Status of Ubuntu 22.04 support&lt;/h1&gt;

&lt;p&gt;We had intended for this release to have Ubuntu 22.04 support, but we are
releasing without that support for now. Due to library version compatibility
issues, we need more time to get this support working, and we did not want 
to delay the release for other platforms. We intend to make a 4.168.1 
release with 22.04 support as soon as we get builds working on 22.04.&lt;/p&gt;

&lt;p&gt;Note that our experimental universal packages (also available for version
4.168) are not affected by this issue and should be usable on any version of
Ubuntu.&lt;/p&gt;

&lt;h1 id=&quot;highlights&quot;&gt;Highlights&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Fix a typechecker bug where enums that recursively include themselves were 
not being correctly rejected.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/6c95bdbe3b&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Fix a bug where a lint could spuriously report a variable was shadowed when
that variable was not actually shadowed due to the potentially shadowing write
happening in the body of a lambda.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/21afafcb3f&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Ignore case and don’t consider the class name when looking for ‘did you
mean’ suggestions for invalid enum class labels.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/3a3a5a5bb5&quot;&gt;commit1&lt;/a&gt;)
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/bebe707323&quot;&gt;commit2&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Improve printing of unresolved types in typechecker errors; e.g.
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Expected Awaitable&amp;lt;[unresolved]&amp;gt; But got int&lt;/code&gt; becomes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Expected
Awaitable&amp;lt;_&amp;gt; But got int&lt;/code&gt;
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/afac86e51e&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Improve error message when accessing a shape with a value that’s not a
literal or class constant.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/c2b2433f90&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Improve error message from linter that points out when all return 
statements in a function return the same value.
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/d606fb0198&quot;&gt;commit&lt;/a&gt;) Also make 
this linter stop firing on functions that could plausibly be returning 
unix exit codes. 
(&lt;a href=&quot;https://github.com/facebook/hhvm/commit/b10078ba6c&quot;&gt;commit&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
        
          <dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexey Toptygin</dc:creator>
        
        <pubDate>Fri, 09 Sep 2022 00:00:00 +0000</pubDate>
        <link>http://hhvm.com/blog/2022/09/09/hhvm-4.168.html</link>
        <guid isPermaLink="true">http://hhvm.com/blog/2022/09/09/hhvm-4.168.html</guid>
        
        
        <category>blog</category>
        
      </item>
    
  </channel>
</rss>
