Introduce Type "Phases" By Utilizing GADTs
[hiphop-php.git] / NEWS
blob68ee025ac1993f9d755671babbe3270c5b10d360
1 "Harris" 23-Apr-2015
2  - Fix preloadRepo
3  - [asio] Two round enterContext()
4  - Handle emptiness correctly in arrElemReturn
5  - Turn off RecordSubprocessTimes by default
6  - Ability to attach metadata to a stack frame
7  - [h2tp] support parameter unpacking calls
8  - fix memory leak while parse ini file
9  - Stop the health monitor when the pagelet server stops
10  - Avoid some overhead dealing with NewCol
11  - [hhvm] Session: Preserve user save handler on session_destroy
12  - Fix mapping the shared area of RDS in Cygwin.
13  - Make ThreadManager initialization explicit, rather than load-time
14  - Fix fread on an SSL socket potentially waiting for data from socket when
15    OpenSSL already has data
17 "Gadd" 9-Apr-2015
18  - Add catch traces to PHP-level calls
19  - Run class initializers before ObjectData constructor
20  - Avoid crash when invoking error handler from RetC
21  - Call-time pass-by-reference is removed
22  - Add xdebug_var_dump
23  - Heap Tracer
24  - [ini] Bind more options of collection types
25  - [hack] Support static checks on double-quoted strings
26  - Scan all of RDS
27  - Partial HNI conversion of fb.idl.json
28  - [hack] Allow class constants to be treated as static strings
29  - [hh][typeconst] Add basic reflection support for type constants
30  - [hphpd] Re-enable disabled breakpoints if trying to set them again
31  - Support static property as foreach target
32  - [ini] Make getting settings that are containers act correctly
33  - Don't truncate regions to one bytecode in region-tracelet
34  - SmartPtr cleanup
35  - Don't attempt a Live translation after failing an Optimize translation
36  - Disable ext_string hasExactlyOneRef opts
37  - Add a dump-repo command
38  - More efficient functions for reading/writing via afdt sockets
39  - [hack] Make socket/logs world-writable
40  - [hh][typeconst] Forbid constants from implementing abstract type constants
41  - Fix an issue with inlining and unreachable code
42  - OBC HNI Conversion
43  - FBML HNI conversion
44  - [asio] Kill BlockableWaitHandle
45  - Merge collection types into header kind
46  - Disable LocalCopyProp and EliminateDeadCode in hphpc's preOptimize
47  - New refcount optimizations
48  - Make the new refcount opts pass the default (remove calls to the old one)
49  - Add a checkCfg pass that ensures each SSATmp is defined only once
50  - Restructure mark loop, fix a couple bugs
51  - Disable guard relaxation in wholecfg mode
52  - StringBuffer HNI conversion
53  - Using Linux perf mechanism to implement clock_gettime()
54  - Add perf based code relocation step
55  - Track sub process times in LightProcess
56  - Enqueue ambiguous pointers after filtering
57  - Allocate vxls spill space on demand
58  - [hhvm] Add hh_client extension and \HH\Client\typecheck()
59  - Implement bindcall in LLVM backend
60  - Remove zf2
61  - [hhvm] Improve behavior of hack lambdas for uninit vars
62  - Track the main hardware counters for light processes
63  - Use health monitor for pagelets
65 "Fry" 27-Mar-2015
66  - Fix Reflection: Variadic parameters not marked as optional
67  - Fix unnecessary dns lookups on startup of hhvm in non-server mode.
68  - Memset with AVX2 support
69  - Perform strict comparison for set() options array
70  - Re-executing a PDOStatement with MySQL doesn't work correctly
71  - Fix #4916 by using is_a() to check if the classname provided is valid
72  - Set the memory limit default to 16GiB
73  - Extend ZEND_GET_MODULE to present getModuleBuildInfo.
74  - Added NULL check on module->functions in ZendExtension::moduleInit().
75  - Fix reading Thrift's accelerated map when using compact protocol
76  - Support null-safe property lookups
77  - `unpack` should return an empty array for empty input
78  - ReflectionClass: resolve default prop values from updated cache
79  - Raise a cmake error if MySQL socket path can't be identified
80  - Fix infinite loop in hphpd's client->server connection logic
81  - [ini] Remove NoInfiniteLoopDetection
82  - Update HHVM to use jemalloc-dev
83  - Don't let odbc hang indefinitely
84  - Add support for nullable XHP attribute types
86 "Earle" 12-Mar-2015
87  - Fix some issues with the perf counters
88  - Conditionally enable pthread_mutex_timedlock emulation
89  - [hack] Run all declaration checks for builtin hhi files
90  - Improve the new refcount optimizer
91  - Improve return types of multiple HHIR opcodes
92  - [hack] Check for unimplemented abstract functions in decl mode
93  - Fix free of uninitialized ptr in GD
94  - Fix segfault in unserialization when referencing invalid array element
95  - Apply libmagic security updates
96  - Fix incorrect use of ArrayIdx on a map with constant int-like string keys
97  - Fix some bugs with reserved name (self, parent) restrictions
98  - Convert MySQLi to NPH
99  - [hack] Allow config whitelisting of <<UserAttributes>>
100  - [hack] Improve hackificator
101  - Avoid forming tracelets that can't have IR fully emitted
102  - Add patch and instructions for building custom version of LLVM
103  - Optimize ord()
104  - Clean up jit::Type methods and improve its behavior
105  - Make "Vary:" header more precise
106  - Match PHP's `use strict;` easter egg and add one of our own
107  - Add PowerPC64 arch-specific code
108  - Add support for noreturn return typehint
109  - Allow Bottom in the IR
110  - Support hot/cold splitting in LLVM-generated code.
111  - [hack] Add hh_client --list-modes
112  - [hack] Add various lint checks and improve lint logic
113  - Make __Deprecated('...') user attribute result in runtime warning
114  - [hack] Avoid timing out when list of errors is very long
115  - Improve interface method compat checks for Type Constants
116  - [hack] Add HHI for SQLFormatter
117  - [hack] Add HHI for mcrouter extension
118  - Support for visiting non-BlockableWaitHandles in debug_backtrace()
119  - Fix Switch-related bug in instrSuccOffsets
120  - Introduce simplifier tool
121  - Convert extensions to use SmartPtr
122  - Fix memory effects for a bunch of HHIR opcodes
124 "Ditko" 26-Feb-2015
125  - Make printf use HH\FormatString instead of FormatString (we're planning to
126    un-reserve \FormatString in a future version).
127  - Release the async mysql extension
128  - Release an async MCRouter extension
129  - FastCGI largely re-written; should fix several rare crashes
130  - Make sure that C++ method signatures match the HNI
131  - Make the typechecker be as strict about XHP classes as other classes. This
132    can be reverted by putting 'unsafe_xhp=true' in your .hhconfig
133  - The ZRANGEBYSCORE and ZREVRANGEBYSCORE need to take in start/end scores as strings
134  - [asio] Move cycle detection from BlockableWaitHandle to WaitableWaitHandle
135  - Add a StackTraceTimeout option to set the timeout for the backtrace handler.
136  - Define FOLLY_HAVE_PTHREAD_SPINLOCK (for ppc port)
137  - [hh_format] Change scoring function to match developers expectations better
138  - update libmagic CVE-2014-0236
139  - Fixes #4764 by adding a Redis::unwatch() method
140  - Disable external entity loading to SOAP WSDL files CVE-2013-1643 CVE-2013-1824
141  - [hhvm] MySQLi: Move mysqli class to NPH
142  - [hh] typechecker: use __Deprecated for DynamicYield
143  - zend initialization settings now work better
144  - optimize ord('static string')
145  - Reuse spill slots in vasm XLS
146  - Fix ImmMap::values() and ImmMap::keys() to return ImmVector
147  - Fix rare race between setting timeout and initializing thread locals
148  - Fix exception leak in tc_unwind_personality
149  - [hack] Fix load script time offset
150  - [hack] Restore hhi touch
151  - Create an IntervalTimer extension
152  - [hhvm] Pass eom flag to Transport::sendImpl
153  - [hack] Fix tmp dir creation
154  - [hh][typeconst] Fix Parser Bug for Type Constant
155  - Fix a bad bug in alias-analysis.cpp
156  - remove obsolete libevent patch
157  - Matched PHP's clowniness in long2ip()
158  - Modified StringData::shrink() to check against the capacity
159  - Backport PHP bug #54002 - crash in exif_read_data
160  - Fix hhvm number formatter fa_IR tests
161  - Better numa scheduling
162  - Reduce code size in crc hash functions
163  - Fix DebuggerDump serialization of keyless collections
164  - Fix persistent redis connection using unix socket.
165  - Fix segfault in mysql_escape_string without connection
166  - Remove logic for perfectvirtuals from compiler
167  - Implemented `hhvm-gdb` command and distribute gdb scripts
168  - Add missing static method ImmVector::fromItems()
169  - Don't cleanup RPC state in destructor if there's nothing to cleanup
170  - Fix object comparison bug in HHVM
171  - Fix Pair::{skip,skipWhile,take,takeWhile}() to return ImmVector
172  - explicitly null-terminate buffer for gethostname()
173  - Remove varray/miarray/msarray and ArrayTracer
174  - Make CryptoLocalKeychainLoader static data managed by folly::Singleton
175  - [hack] Allow Enum<arraykey>
176  - [hhvm][fastcgi] Fix use-after-free after FastCGI protocol errors
178 "Colbert" 12-Feb-2015
179  - Reduce size needed for reusable stubs
180  - Replaced uses of StringData::bufferSlice() with mutableData()
181  - [hhvm][ini] Provide mechanism to support collections of complex data structures
182  - [hhvm][ini] Support mysqli ini settings
183  - [hhvm/gdb] Enable hashing of strings w/o m_hash
184  - Fix Memcache::connect with unix socket
185  - fix bug #4727 with timezone_name_from_abbr()
186  - [hack] Deprecate is_integer, is_long, and other is_* aliases
187  - [hh] typechecker: check "inheritance" for class consts
188  - [hhvm] Move DOM extension to NPH
189  - [hh] typechecker: run (some) checks on abstract constants
190  - [hack] Deprecate join, split, and create_function.
191  - [hack][typeconst] Rework Type Consts to not use type defs
192  - [hhvm] MySQLi: Support isset() for result fields
193  - Fix memory leaks in CacheClient for getNextFinishedRequestID API
194  - Make access log %h behave more like Apache
195  - [hack] Recognize __Deprecated attribute on functions and methods
196  - [hhvm] get_resource_type of closed files is "Unknown"
197  - Implemented directives: variables_order&request_order
198  - Show meaningful closure names in backtraces
199  - [hh] typechecker: don't allow async blocks as lambda expressions
200  - Add HH\get_headers_secure
201  - [hhvm/gdb] Finish documenting GDB support
202  - [hhvm/gdb] Fix parts of `hhx' that got out of sync
203  - [hack][typeconst] Finalize Type Const syntax
204  - [hhvm/gdb] Add pretty-printer support for object properties
205  - [hhvm/gdb] Refactor lookup_func into component accessors
206  - [hhvm/gdb] Support {Fixed,Indexed}StringMap in `idx'
207  - [hhvm/gdb] Fix some bugs in `idx'
208  - [hhvm/gdb] Add rawtype() and rawptr() helpers
209  - [hh] add __Deprecated attribute wired to ReflectionFunction::isDeprecated
210  - [hh] hh_format: support abstract const syntax [2/2]
211  - [hh] h2tp: "support" abstract consts
212  - [hh] hh_format: support abstract const syntax
213  - [hh] typechecker: parse abstract const declarations
214  - [hh] typechecker: only look for __callStatic for static methods
215  - [hh] typechecker: fix references to `parent::constant`
216  - [hack] Allow subtypes in arithmetic modulo op
217  - Be more lenient in accepting extra ',' in icu date pattern gen.
218  - Accept image/png as a legal mimetype from ext_imagick.
220 "Ballmer" 29-Jan-2015
221  - Miscellaneous fixes for clang dev build
222  - Make gd-jpeg compatible with jpeg-9
223  - [hh] typechecker: parse array-string-keys within interpolated strings
224  - [hh] T_FINALLY is a standard token
225  - [hack] Add option to format PHP and decl files
226  - [hhvm][easy] Care a little less about paths in filter_input_array.php
227  - Add HH\Asio\curl_exec() as an awaitable \curl_exec()
228  - Implement IntlChar class
229  - Add imagesetinterpolation to gd extension
230  - Add per-branch cli option support to benchy
231  - [hhvm] Restore -g to cmake debug builds
232  - Fix ReflectionClass method ordering
233  - Allow slightly malformed serialized strings, because PHP
234  - Use parameter coercing rather than explicit cast with chr()
235  - [hhvm] MySQLi: Set fetched fields prior calling a constructor
236  - Move Editor plugins to wiki
237  - Remove $ENV config from FindMySQL.cmake
238  - Fix bugs in floor and ceil behavior
239  - "Fix" tvCanBeCoercedToNumber() for malformed numeric strings
240  - Add missing file constants; use HNI for some existing ones too
241  - Fix SmartPtr move constructor on Variant.
242  - Trim values in Accept-Encoding: header filed
243  - Add "Vary: Accept-Encoding" to reposnse header when compression is enabled
244  - Fix memory leaks in MySQL common and MySQLi
245  - [hack] Various fixes for hh_format
246  - [hack] Allow array-get syntax for KeyedContainer
247  - [hack] Remove _tags file for Ocaml 3.12 compatibility
248  - Fix docs for DecodeCufIter
249  - Install hphp/runtime/version.h during make install
250  - Fix leak on bitwise string operations
251  - Improve test run to checking $_SERVER/$_ENV
252  - Cloning exceptions should raise a fatal error
253  - Disallow destructor/clone method be static
254  - [hhvm] Add version binary
255  - Update exception classes, fixes #4442
256  - Add a system profiler and hook some actions of interest to New Relic
257  - [hphp] Added NumberFormatter locale/rounding tests
258  - Add llvm/vasm bytecode counters
259  - [hack] Add support for immediately-executed async lambdas
260  - [hack] Add --no-load option, make load script path relative
261  - [hack] Have hh_server invoke the load script
262  - Add TYPO3 Unit tests to the OSS framework parity check
263  - Array multi sort
264  - Fix some stability issues in the server tests
265  - Remove Redis::SERIALIZER_IGBINARY constant
266  - Produce easier to handle HHVM version identifiers
267  - Fix bizarre memory corruption on exit
268  - Add Hack typing for array_values
269  - remove vim editor-plugin
270  - [hhvm] Fix mysqli segfault
271  - [hack] Improve position info in member-not-found error
272  - Update third party hash for small libmbfl change
273  - [hh] typechecker: canonicalize function names
274  - Capture full line ending for single-line comments
275  - Add a bunch of async helper functions
276  - [hack] Add --strict/--loose option to AT converter
277  - Autocomplete - don't suggest methods that aren't visible when class isn't fully known
278  - [hack] Fix return-in-finally check.
279  - [hack] Fix OSS tests
280  - [hack] Avoid relinking all of hh when format_hack changes
281  - [hh] updated various hhi files
282  - [hh] typechecker: parse "true", "false", "null", "array" more correctly
283  - [hh] hack build: don't generate newv calls in buildEgo
284  - [xenon] Fix attribution of CPU time spent in the asio scheduler
285  - Add StructArrays
286  - Don't let GD create images that would exceed the request memory limit
287  - [hack] Set up proper test scaffold for hh_format
288  - [hack] Allow "$c[] = .." when $c is declared as a collection w/o type params
289  - [hack] Fix race in declaration of BuiltinEnum
291 "Austin" 15-Jan-2015
292  - [asio] Introduce ConditionWaitHandle
293  - [hack] `hh_server --version` should not require a root
294  - [hack] Log exceptions thrown in the master process.
295  - [hack] Enable unused var warnings under typing/
296  - [hh] typechecker: unbound name errors in partial/decl mode
297  - [hack] Disallow trailing comma in used trait list
298  - [hack] Have coverage / coloring use a hook
299  - [hack] Create lock file if it doesn't exist
300  - Fix std::terminate when debugger is not attached during unwind
301  - [hack] Make `trait ... extends ...` into a parse error
302  - [hack] Make multiple inheritance a parse error
303  - [hh] typechecker: support Enum in xhp attribute declarations
304  - [hack] Raise type errors on undefined static polymorphism lookups.
305  - Fix realpath lookup
306  - [hack] Let any user write to the saved state dir.
307  - [hack] Don't have an optional param that's an option type
308  - RequestInitDocument   404  friendly reminder
309  - Implement Phar::running()
310  - Make Redis utility methods public
311  - Contiguous Heap Prototype
312  - [hh_format] Don't add trailing commas in used trait lists
313  - [hh_format] Don't add trailing commas in template parameter lists
314  - [hh_format] Fix bug with hh_format --diff duplicating some lines.
315  - [hh_format] Don't destroy whitespace in files with "**/" in comments
316  - fix for iconv_mime_decode_headers function skipping headers
317  - Add CPU option for JIT (EvalJitCPU). Defaults to 'native'.
318  - Limit glob flags to only ones supported by php
319  - make recursion limit for unserialize
320  - Allow trailing commas in short-lamba expressions
321  - Fix some leaks in new_socket_connect
322  - fixed decoding utf8 strings so they correctly return '?' on invalid sequences
323  - Actually get the realpath first thing when searching for a file.
324  - Faster UnitCache
325  - Simple speedup for is_dir
326  - [hh] typechecker: demand consistent casing for primitive typehints
327  - Support timestamp begins and ends for getTransitions()
328  - Add global value numbering pass
329  - Support \u escape sequences in double-quoted strings
330  - ResourceLimit.SerializationSizeLimit can be overwriten from the vhost config
331  - Check Eval.JitAMaxUsage when deciding whether to start profiling a function
332  - Allow hex in mb_encode_numericentity
333  - [hhvm] Work around leak in boost flat_set
334  - Add stream_await() for async stream "blocking"
335  - [typechecker] Add support for reading XHP attributes via "->:"
336  - Modify rpoSortCfg to reduce memory usage in refcount-opts
337  - Fix #4380, making get code and get message final
338  - Add PHP_INT_MIN
339  - Disable PGO for pseudo-mains
340  - Mock date/time functions in Isolation.php
341  - Fix error_get_last() not cleared when error handle function entered
342  - [hhvm] RFC: Native Property Handlers
343  - [hack] Define proper constants for CURLOPT and friends
344  - Make newlines in http headers a fatal error.
345  - Add Hack typing to array_keys
346  - Use a custom implementation of strtoll for unserialize
347  - [hack] control whether unseen <?php code is assumed via .hhconfig
349 Z* 18-Dec-2014
350  - Converted objprof extension to use heap parsing
352 "Yelawolf" 4-Dec-2014
353  - Fix comparison of overflowing strings
354  - Fix potential memory corruption during ArrayData::set
355  - Introduce util to restart current process
356  - Share variable environment in eval'd assert
357  - [Find] Only escape spaces in paths for find
358  - Don't ignore Eval.JitAHotSize
359  - Fix checkCfg's defined-tmp checks to be aware of edge-defined tmps
360  - Fix bugs relating to edges in IRInstruction::become
361  - Fix insertPhis calls to IRUnit::replace()
362  - Use sha1sum for the repo-schema
363  - [hh] typechecker: add constants to hh_client --show
364  - [hack] Dump typedef info in `hh_client --show`
365  - Make BigNode parsable, extend HeapIter to visit BigNodes.
366  - Allow static invocation of DOMDocument::load* methods
367  - Allow "array" with type args to be used in XHP attribute declarations
368  - HTMLEncode strings in wddx_serialize_value()
369  - [hack] Make dependency on lz4 optional for OSS build.
370  - [hack] Have hh_server take the list of files to recheck as relative paths
371  - [hack] Docblock parser for AT
372  - Add version number to imagick extension
373  - Support Authorization header in apache_request_headers()
374  - [hack][build] Add needs_rerun hook for XController build step
375  - Fix call to fetchObject without class name
376  - Add possibility to create a DateTime object with timezone
377  - DateTimeImmutable::createFromFormat returns false on failure
378  - [hh] typechecker add PREG_* constants to hhi
379  - Raise warning when put_contents on non-regular file with exclusive lock.
380  - Use uncounted strings to cache non-static regexes
381  - Use specializeExact whenever we know AttrNoOverride from whole program analysis
382  - Fix some not-type-safe LdRef code generated in a situation with SetOpL
383  - Split inner ref type checks into a separate instruction from LdRef
384  - Add support for stream wrapper in include_path.
385  - cmake option to enable avx2 instruction support
386  - Add missing default to PharData::decompress()
387  - [hack] Add lz4 compression when saving server state.
388  - Fix leak in tvCoerce*
389  - Trie Search - optimizations for JS
390  - Don't throw an exception on unknown IP address for OSS
391  - [hh] parity: match php 5.6 in treatment of array_fill with num = 0
392  - Make ob_start function signature PHP 5.6 compatible
393  - Fix issues with private properties and apc
394  - Implement remaining straightforward vasm ops in llvm backend
395  - [hack] Type strlen's return value.
396  - [hack] add additional iterator interfaces
397  - Improve segaddr fixing for 32-bit destructors
398  - Fix parent::__cOnStRuCt and similar with PHP4 constructors
399  - Make stats.json on the admin server return valid json
400  - [hack] Simplify coverage JSON output, and add non-JSON output option.
401  - Remove kernel version assertions
402  - [hack] Fix bad escaping of directory names
403  - [hack] Add some hhi constants for pcntl.
404  - Fix problems in getCurrentPropertyOffset relating to m_ni.inputs
405  - Fix CSE to be aware of where SSATmps are known to be defined
406  - Add an analysis module for functions that query information about the IR
407  - Don't JIT functions that use $php_errormsg or $http_response_code
408  - Fix default SOAP HTTP client
409  - [hack] Member access is `->` followed by lvar, not word
410  - Fix comparison between doubles and hex numeric strings
411  - Implement a bunch more vasm instructions in llvm backend
412  - Enable ASAN for smart allocator
413  - Record the start time for every request
414  - Fix parsing of binary literals denoted with a capital '0B'
415  - Fix Symfony's it's not safe to rely on system timezone setting errors
416  - Allow non-static expressions in function parameter defaults
417  - Fix a bug in Index::lookup_constraint
418  - [hack] Add logging to server_options_cmd.
419  - Fix optional 'errorcode' parameter is not set up properly
420  - Fix PHP primitive default parameter type check
421  - Weaken assert in FileUtil::canonicalize
422  - [hack] Error when using "shape" as a type
423  - Fix getOldestStartTime
424  - Add zlib.output_compression ini option
425  - Add missing argument to DOMXPath::{query,execute}()
426  - htmlentities() should output valid ISO-8859-1 characeters to appropriate entities
427  - Remove bad assert from BaseVector::data()
428  - Cleanup sock and pid files on graceful exit from FastCGI
429  - [hack] Add script for determining server startup options
430  - [hack] Record init time in log output.
431  - Fix some bugs in intersecting specialized types
432  - [hack] Fix duplicate unbound name errors
433  - Update OCaml to 4.02.1
434  - [hhvm] Add per kind ArrayFunc counters for ArrayTracer
435  - Fix use-after-free in the access logs
436  - Wait for clean shutdown on SIGHUP
437  - [hhi] add at() to MysqlRow in hhi file
438  - [memoize] Go back to individual cache props for statics
439  - Break regions after FCall & friends when using LLVM
440  - Remove support for magic quotes (also removed in PHP 5.4)
441  - qlzcompress is not available everywhere, and there's no support for it in OSS
442  - Change the Profiler constructor to not necessarily force CPU affinity.
443  - Add getTypeText to ReflectionParameter
444  - Remove trailing junk from IP addresses for sockets
445  - Preserve index of sockets passed into/out-of socket_select()
446  - Fix lchown when no user found
447  - [hh] typechecker: split function bodies into named and unnamed
448  - [hack] fix error with capturing locals for a foreach using a ref
449  - guess root from supplied filename, where that makes sense
450  - Show a nice error when an invalid argument is passed to hphp -t
451  - Expose Imagick::getImageMimeType to userland
452  - SplFixedArray::FromArray() throws InvalidArgumentException not Exception
453  - Make default_socket_timeout match PHP 5.x
454  - VerifyRetTypeC optimizations for repo-mode
455  - Turn off refcount opts by default when HHIRBytecodeControlFlow is on
456  - Make profiled packed array gets not rejoin the main line
457  - Side exit on surprise flags for backward jumps
458  - Print edges with colors in IR dot graphs; make dotBodies usable
459  - Fix region-method support for loops
460  - Correct the return type of BaseG; fix some missing renames of Mem -> Memb
461  - Adopt PHP7's looser handling of return values in user session handler
462  - Honor the Redis timeout
463  - Fix mysqli_options. Stop asserting.
464  - Fix some bugs in hhbbc support for http_response_code, php_errormsg
465  - Introduce immediately executed async lambdas
466  - Allow nested namespaces with sane behavior
467  - Updated win32-cygwin patch Fixes Issue #4062
468  - [hh] typechecker: ReflectionClass hhi fixup
469  - [hack] Add hh_server --version
470  - Fix a few memory management issues in DOMDocument
471  - Prevent m_nextKI from going negative in MixedArray
472  - [hh] typechecker: declaration location in extend_final error
473  - [hack] Enable .hhconfig to control hh_server flags
474  - Respect status codes from `Status:` header in addition to `HTTP/` header
475  - Fix number_format() to deal with very large precisions/very large numbers
476  - Fix closure use var reflection for referenced vars
477  - Support self parameter typehint
478  - [h2tp] modify build to support h2tp
479  - [hh] hh_format: understand async lambdas
480  - [hack] added support for abstract class constants
482 "Xzibit" 20-Nov-2014
483  - Fix readline request locals
484  - Don't leak HashContexts
485  - Fix a race freeing an APCHandle
486  - Don't clean up memory in AdminRequestHandler::abortRequest
487  - Fix setup/teardown for requests handled by WarmupRequestHandler
488  - Extend IR type system for more information about pointers
489  - Use proxygen as a git submodule
490  - Version of memcpy-x64 optimized for the tail end of 7,6,5,4 bytes in an N byte copy
491  - Eliminate default cases in DataType switches
492  - Match PHP5 backquote processing
493  - Add overflow info to is_numeric_string
494  - Add support for pre-built branches to benchy
495  - Allow calling closures inline
496  - Allow systemlib function declarations to use reserved words for function names
497  - Add HH\{int,float,bool} typehints to PHP
498  - Deep initialization for constant properties
499  - Enforce void return on native class constructors/destructors
500  - Replace NEWOBJ with newobj<T> and newres<T> functions
501  - Change default FCGI socket permissions
502  - Support openssl replacements which don't export RANG_egd()
503  - Fix use-after-free in TimeZone
504  - Support GCC/LLVM stack-smashing protection
505  - Make sure Type::Bottom is a subtype of everything
506  - Fix hphpd crash when printing systemlib classes
507  - Convert file extension to HNI
508  - Convert DOMDocument extension to HNI
509  - Convert POSIX extension to HNI
510  - Convert array_multisort to HNI
511  - Add fribidi extension for HHVM
512  - Mechanism for enabling request-local heap profiling
513  - Make prediction opts deal with arbitrary load/check instructions
514  - Add JSON output support to benchy
515  - HHIR pass to do dead store elimination on frame locals
516  - Adjust single parameter warnings for min()/max()
517  - Make AlwaysLogUnhandledExceptions=off and CallUserHandlerOnFatals=EnableHipHopSyntax
518  - Always use RuntimeOption::SourceRoot to resolve repo-auth lookups
519  - Refactor debugger tests
520  - Fix parser to allow "type" and "newtype" to be used as typevars
521  - Convert system/idl/function to HNI
522  - Remove type annotations for array_sum and array_product
523  - Don't populate the litstr-to-id map in RepoAuthoritative mode
524  - Move m_lineTable to a side table
525  - Only try to autoload classes with valid names
526  - Proper PDO connection errors
527  - Move hfsort linker script tool to OSS
528  - Move slow 'quick' tests to 'slow'
529  - Add option to make inconv actually match the docs
530  - Convert socket extension to HNI
531  - Convert stream extension to HNI
532  - Fix UserFile::access behavior to match PHP5
533  - Fix for wrong PATH_INFO and PATH_TRANSLATED (maybe)
534  - Move generated .h and .cpp to unique dir
535  - Fix for phat:// stream wrapper with no stub
536  - JSON encode closures as empty objects for PHP compat
537  - Disable parameter typehints for builtins to match PHP5
538  - Convert PDO extension to HNI
539  - Fix assert related to async return typehints
540  - Allow collections in array_sum() and array_product()
541  - Use the time in default xdebug output file
542  - Allow vxls to allocate vmsp during traces
543  - Only initialize sweepables on new threads
544  - Load Offset->line number mappings on demand
545  - Fix SOAP memory leak
546  - Add OSS support for benchy
548 "Will.i.am" 13-Nov-2014
549  - Add benchy.py for benchmarking HHVM
550  - Tune and enable PGO for all functions
551  - Generate HHIR opcode table by extracting lines from ir.specification
552  - Convert a few more extensions to HNI
553  - Limit the maximum number of bytecode instructions in a region
554  - Improvements to <<__Memoize>>
556 "Vanilla Ice" 27-Oct-2014
557  - Fix logging
558  - An async method's return annotation (if there is one) must be "Awaitable"
559  - Fix a bug in how __Memoize sets up FPI regions
560  - Fix issues with shutdown/postsend functions
561  - Fix is_callable for interface and abstract methods
562  - Added support for ReflectionFunction::getClosureThis()
563  - Add option to run perf to hhvm_wrapper
564  - Use a global cache for timezone info
565  - Implement readline_info()
566  - Fix NumberFormatter::format for string values
567  - Corrected socket connect for IPv6 hosts
568  - [hack] Fix parsing of postfix operators.
569  - Region selector improvements
570  - Disallow <<__Memoize>> on interfaces
571  - Convert APC to HNI
572  - Align recoverable fatal error's message with PHP
573  - [hack] Make hhi for some builtin constants.
574  - HHBBC improvements (enums, etc.)
575  - Properly shutdown debugger threads on exit
576  - [hack] support for 'abstract final' classes
577  - Convert string to HNI
578  - Fix SOAP extension type encoding
579  - make test runner not puke when run with xargs
580  - [hack] reflection support for first-class enums
581  - Make `yield;` a valid statement
583 "Ultramagnetic" 9-Oct-2014
584  - Optimize strtr
585  - Closure::bind support
586  - Cleanup/shrink various runtime data structures
587  - Various jit performance optimizations
588  - Fix various debugger crashes
589  - Better handling of memory limits
590  - Hack: System user attributes will be prefixed with __, notably <<Override>> renamed to <<__Override>>
591  - Hack: Support for 'abstract final' non-instantiable non-inheritable "utility" classes
593 "T-Pain" 25-Sep-2014
594  - Use vasm virtual registers in x64 backend, transition fully to vasm-xls
595  - 'arraykey' scalar typehint that accepts both ints and strings
596  - Add OSS benchmarking suite
597  - Fix PDO::bindColumn
598  - [resumable] Set resumed flag before suspending VarEnv
599  - Objprof for HHVM (Approx. instance counter)
600  - Make RUSAGE_THREAD available to getrusage PHP function
601  - clean up /tmp/test-run- files
602  - VASM register-coalescing via hinting
603  - Be more conservative about HNI types when there are InterceptableFunctions
604  - Add runtime support for null-safe method call operator "?->"
605  - Add sanity test system to OSS benchmarker
606  - Fix double deallocation of object in zend conversion of object to string
607  - [hhvm|memoize] Makes <<__Memoize>> work with arbitrary args
608  - Use raw troff encoding for official HHVM man page
609  - Add --php options to HHVM man page
610  - Fix GMP tests/crashes
611  - Implement posix_errno
612  - Xdebug remote debugging compatibility and bug fixes
613  - Add options parameter to DOMDocument::load/loadHTML()
614  - Add support for GNU tar symlinks to PharData
615  - Add max_file_uploads support
616  - Improve process error checking in perf runner
617  - posix_getgrgid()['members'] should be empty array if no users found
618  - Convert from jemalloc's obsolete *allocm() to *allocx()
619  - Use EqX instead of Eq for Obj/Num comparisons.
620  - make class closure consist with PHP
621  - Fix guard relaxation to work with bytecode control flow
622  - Allow vm-stack flushing in rpc threads
623  - stop killing LightProcesses while writing out stacktrace.log
624  - Get hhvm compiling with clang-3.5
625  - Update .hhi files for ConstSet, Set, and ImmSet
626  - Force the linker to keep symbols in lowmem on MacOSX
627  - Make guard relaxation work with unreachable code
628  - Add minimal hdf support to test runner
629  - Analyze/optimize pseudomains in hhbbc
630  - [hhvm|memoize] Fix segfault on certain memoized functions
631  - Support mappy ini configuration
632  - Xdebug cleanup and trivial features
633  - Abort the server if a request gets stuck
634  - Added support for Closure::bind()
636 "Snoop Dogg" 11-Sep-2014
637  - VASM phase 1: emit vasm instructions, with existing register allocation
638  - More xdebug support
639  - [hack] Implement async lambdas.
640  - add process memory and code segment size to admin memory page
641  - Overhauled xdebug remote debugging testing
642  - Add a mechanism for building and testing a zend extension as a DSO.
643  - Support fast object allocation path when Eval.EnableObjDestruct call is on
644  - Static string table memory usage
645  - Implement parallel repo preloading.
646  - Add mcrypt constants to hhi
647  - Move var_dump() to HNI, kill off variable.idl.json
648  - JIT: Use std, boost, and folly instead of smart containers.
649  - Hack: Support for variance (+/-) annotations on type-parameters
650  - Implement APCIterator
651  - Convert v?s?printf() to HNI using Variadics
652  - Enable variadics for HNI functions/methods
653  - Smooth a wrinkle in HHVM's safesort impl
654  - Make Set implement KeyedIterable and support bracket syntax for reading
655  - Covariance fixes
657 "RBX" 28-Aug-2014
658  - Make MemExceeded flag sticky
659  - Check for OOM during json decoding
660  - Check surprise flags when unserializing arrays and objects
661  - Limit curl timeout to remaining request timeout
662  - Add variant of openssl_pkcs7_verify that ignores cert expiration
663  - Numerous changes to support xdebug
664  - Remove use of non-threadsafe strtok()
665  - Numerous changes to normalize INI setting names
666  - update to new sqlite
667  - <<__Memoize>> support
668  - Hack: Print backtrace when worker dies
669  - Parser support for "varray(..)"
670  - Introduce kVPackedKind for vector-like arrays
671  - Move mailparse to HNI
672  - VASM start phase 1; emit vasm for some instructions
673  - Fix in headers defines for cygwin
674  - [hack] Parser: Fix decl mode's confusion of type hints and xhp.
675  - Create a unified stack for Xenon
676  - Move debugger from IDL to HNI
677  - Fix mcrypt_create_iv(..., MCRYPT_RAND) to auto-seed RNG
678  - Fix information leak in hash_equals() implementation
679  - don't statically link libgcc/libstdc++ by default on OSX
680  - Adds ssdeep module to HHVM
681  - added new raise_error family functions that skip the top frame of the backtrace.
682  - Add initial support for -d outside of --php mode
683  - Fix covariance for Const{Vector,Map,Set}, add tests
684  - GMP cleanup/fixes
685  - Implement SplDoublyLinkedList::add
686  - Link against LLVM library if present.
687  - Disallow multiple 'default:' blocks in a single switch
688  - Introduce async function lambdas
689  - Document the PHP profilers
690  - Fix sample profiler output; make it more efficient
691  - Properly shut down fastcgi worker threads when connection is closed
692  - Delete SimpleProfiler
693  - Create HHVM man page
694  - Improved PHP compatibility in the reflection API.
696 "Queen Latifah" 14-Aug-2014
697  - Implement RecursiveCallbackFilterIterator
698  - cmake installations should no longer put files in hphp and now put them in hhvm
699  - Fix error for (Recursive)CachingIterator::ctor's param 1
700  - Force OOM check on large smart allocations
701  - Support stream wrappers in XML parser extensions, add external entity loader
702  - Fix LowPtr load in codegen
703  - Fix race condition in DebuggerProxy start/stop
704  - Log per request if oom or timeout triggered in dynostats
705  - Break out hhvm request timeout / memout counters for psp vs non-psp
706  - Support collections for third parameter of preg_replace() and friends
707  - Added functions imagewebp and imagecreatefromwebp
708  - Fix mb_convert_case when encoding set other than default
709  - Added function imagepalettecopy to ext_gd
710  - Remove reflection hacks for primitive typehints
711  - Fixed tempnam() creates paths with '//'
712  - Add LibGMP extension
713  - Fix heap overflow in sql_regcase() for input >1GB
714  - Add HHVM hookups for folly::Singleton
715  - Fix isset on classes extending ArrayObject
716  - Only track live objects that actually have destructors
717  - Specify ssl cipher list for curl with OpenSSL only
718  - Remove support for "service threads"
719  - PDO MySQL's getCode() didn't match errorInfo
720  - Run usercode before ending the request
721  - Make DynamicExtensions work in ini
722  - Provide backup utf8 sanitizer when UConverter is unavailable
723  - Pass duplicate flag to SNI Initial Handler Callback
724  - fb_intercept now accounts for variadic functions
725  - Add variadic function to fb_intercept test
726  - Implemented basic xdebug tracing
727  - Rename snappy methods
728  - Add sort_flags to ArrayObject::asort
729  - Changed CRYPT_BLOWFISH to 1 because apparently it is available
730  - Convert ext/mysql to HNI
731  - Add log when memory usage reached the MaxRSS
732  - Fix http headers parsing + Remove unused code + Fix indentation
733  - Fixed error output for json_encode
734  - Corrected the var_dump output for Exception class
735  - Relax restrictions on the typing of class constant shape field names.
736  - Fix file:// URL decoding in libxml functions and elsewhere
738 "Public Enemy" 31-July-2014
739  - Interface requirements (similar to trait requirements) enforced
740  - Initial support for PHP5.6 argument unpacking: f($x, $y, ...$args)
741  - Hack: hhi files are embedded in the hh_server binary
742  - removed trampolines and the Eval.JitTrampolines option
743  - Hack: improved support for Generators, including async generators
744  - Documentation of PHP-level profiling in doc/profiling.md
745  - Cleanup of PHP-level profilers
746  - Change default for Eval.EnableObjDestructCall to true
747  - Bundle PCRE 8.32 with open-source HHVM, so we can use the JIT
749 "Outkast" 17-July-2014
750   - PHP_VERSION is now 5.6
751   - Introduce Dbl specific relational IR opcodes
752   - Expose APC info to admin port
753   - Improve Zend compatibility in the reflection API
754   - Implement xdebug_call_class
755   - Hack: first version of formatter
756   - Convert ext/xsl to HNI
757   - Hack: improve init time
758   - Remove JIT::RuntimeType
759   - Fix floating-point overflow for binary, octal and hex literals
760   - Collections: Vector::addAllKeysOf
761   - Hack can build on OSX now
762   - Fix await/yield operator precedence
763   - Fix various xcontroller issues
764   - Enable HHIRBytecodeControlFlow by default
765   - Various changes/fixes to WholeCFG region selector
766   - Introduce async generators
767   - Kill clock_settime
768   - Fix Memcache::get($keys) when $keys is an array
769   - Implement xdebug_call_function
770   - Change order of wait handle processing from FIFO to LIFO
771   - Add Redis::_serialize()
773 "Notorious B.I.G." 25-Jun-2014
774  - Remove Translator::analyze (replaced by tracelet region selector)
775  - Allow empty keys in hash_hmac() and hash_hmac_file()
776  - Interface requirements supported in parser
777  - Implement xdebug_{peak_,}memory_usage
778  - Inline singleton-pattern functions
779  - Cleanup in PhpFile and FileRepository
780  - Fix mysqli_query return value for query without result
781  - Implement xdebug_call_file
782  - Add fastlz support to memcached extension
783  - Fix ini_get to return false for non-supported settings
784  - Fix PHP version constants
785  - All numeric comparisons involving NAN, except != and !==, are now false.
786  - Implement xdebug_call_line
787  - Optimize ini_get
788  - Remove dump-file-repo admin command
789  - Fix stdclass promotion of static private properties
790  - Remove unused locals in global dce (HHBBC)
791  - Get mockery at 100%
792  - Fix casting resource to object
793  - Relocate code to arbitrary alignment
794  - Always let the first character through for camelcase searching
795  - Implement xdebug configuration options
796  - Convert ext/memcache to HNI
797  - Match php5's memcache getoption
798  - ./configure --help now has all the options
799  - mysqli: return false on non-selects
800  - Don't include bt_handler or killpg in backtraces
801  - Don't buffer overrun on bad DNS TXT records
802  - Fixed property access to DOM and XMLReader classes
803  - Add support for ParamCoerceModeFalse
805 "Mos Def" 11-Jun-2014
806  - Turn on new tracelet region selector by default; analyze() is deprecated
807  - Fix a bug in debugBacktrace with NativeImpl methods
808  - Request local allocator now uses logarithmically spaced size classes
809  - Improvements to JIT'd FCallBuiltin to cause fewer spills
810  - Enable vtable-style dispatch on methods marked "abstract"
811  - JIT several instructions that were being punted:  Unbox, File, Dir
812  - Increase "hinted drop" time on write lease, improving JIT'd code layout
813  - Implemented __toString functions in reflection classes
814  - Several tc-print bug fixes
815  - Some improvements in hhbbc arithmetic type inference
816  - More service requests are "ephemeral", reducing wasted stubs space
817  - HH\Vector now has a packed array internally, for O(1) conversions to array
818  - current() and key() now support expressions that can't be taken by reference
819  - Fix a long-standing but very rare race condition with Closure class names
820  - gcc 4.8 is the new minimum to build
821  - Various bug/compat fixes in Soap, SimpleXML, ArrayObject, DOMNode, mysqli
822  - Add a scheme to extend support for efficient packed arrays w/ cap up to 2^32
823  - Move vmfp, vmsp, and vmpc into RDS
824  - Fix some hard-to-hit bugs in inlining relating to stack overflow checks
825  - Faster int to double conversion when calling builtins from the JIT
826  - Fix ReflectionParameter::getClass for scalar typehints
827  - better tuning of the PGO 'hot function' threshold
828  - performance improvements to calling native class methods
829  - improve performance of async functions that exit via exception
830  - several bug fixes in refcount optimization pass relating to async functions
831  - More hhir-related docs in the hackers-guide
832  - Initial support for relocating generated machine code
833  - JIT optimizations for count()
834  - Corrected the result of var_dump and print_r for ArrayObject
835  - fix HH\autoload_set_paths with nested maps
836  - make ReflectionClass serializable
837  - ext/standard/output HNI conversion
838  - allow usage of zend-qsort in user sorts with a runtime option
840 "LL Cool J" 28-May-2014
841  - Over 200 other bug fixes (go lockdown!)
842  - Every HDF setting is now available as INI
843  - Cut session_id() size by 1/2
844  - Added 'Z' format string for pack/unpack
845  - We now build on clang
846  - Fix pcre cache to not fatal when full
847  - Implement $php_errormsg
848  - Adding -n CLI option to hhvm php mode
849  - Fix substitution of invalid UTF8 sequences in htmlspecialchars
850  - FastCGI: Use SCRIPT_FILENAME as the PHP script to run
851  - Can create DateTimeZone's from abbreviations
852  - Put all fastcgi params into $_SERVER
853  - Many DOM classes are now serializable
854  - Define the xhp tokens
855  - Many reflection changes for perf and compatibility
856  - Default fastcgi to listen on 127.0.0.1
857  - remove register_cleanup_function
858  - Map: reserve()
859  - Set: retain(), reserve(), addAllKeysOf()
860  - {Set|ImmSet|Vector|ImmVector}::fromKeysOf()
862 "Kanye West"
863   - Backport fix for CVE-2011-2202
864   - Interfaces {Keyed}Container match arrays *and* collections, not iterables
865   - Added ** and **= operators to HHVM and more compatibility fixes with PHP5.6
866   - Fixes and improvements to collections
867   - Replace json decoder with json-c library
868   - Document VMRegAnchor and isVMFrame()
869   - Improvements to array iterator code
870   - Improvements to the type checker
871   - Allow parser to be generated with bison 3
872   - Improvements and speed up to reflection code
874 "Jay-Z" 9-May-2014
875   - Make handling of code.hot overflows more robust
876   - Catch server errors sooner
877   - Fix segfault and infinite recursion in fileinfo extension
878   - Resolve systemlib constants at compile time
879   - Resume resumables natively
880   - Import round() table optimizations from php-src
881   - Delete bytecode Peephole optimizer
882   - Remove most of annotation.cpp, and some other code gated on !UsedHHBBC
883   - Create phis for locals
884   - Fix free of "" in rfc1867PostHandler
885   - Add firstValue(), firstKey(), lastValue(), lastKey() to collections
886   - Add concat() to collections
887   - Clarify Hack license
888   - Add CakePHP3 to test runner
889   - Better error when TC is full
890   - Add hash_equals() from PHP 5.6
892 "Insane Poetry" 24-Apr-2014
893   - Support for PHP 5.6 variadic ...$args syntax for func declarations
894   - Open source HHMeasure, a simple and extensible microbenchmarking tool
895   - Added a new time-based sampling profiler (Project Xenon)
896   - Fix PCRE unicode handling
897   - Convert Zend compatibility layer and various extensions to HNI
898   - Encode execution mode (eager or resumed) into SrcKey
899   - Merge eager and resumed parts of async functions
900   - Rework various async / continuation bytecode instructions
902 "House of PHPain" 1-Apr-2014
903   - Allow direct arg passing with up to 15 params (7 if at least one is a double)
905 "Ghostface Killah" 17-Mar-2014
906   - Remove "HipHop" from error messages
907   - Add __IsFoldable user attribute for const-foldable functions
908   - Add __Native("NoFCallBuiltin") UA for builtins which need an actrec
909   - Add support for testing different outputs in repo mode
910   - Implement remaining functionality from intl extension
911   - Implement XSL extension
912   - Implement Stream Filters
913   - Improve php.ini support and get ready to kill HDF files
914   - Parse config files as ini files, unless filename contains '.hdf'
915   - Various fixes to Redis, JSON, SPL, DateTime, MySQLi, and others
916   - Remove C<T>Ref typedefs (use const T& now)
917   - JIT default on in command line mode
918   - gethostname() just returns what the syscall returns (Zend compat)
919   - HHBBC turned on in the build for facebook.com
921 "Fifty Cent" 3-Mar-2014
922   - Array parameter type constraints implicitly cast collections to arrays
923   - Fix issues with feof and fwrite
924   - Fix issues with sleep and inaccessible properties
925   - Dump a jemalloc pprod dump when a request hits OOM
926   - Make method_exists work with interface inheritance
927   - Fix crash in preg_replace with /e
928   - Support filename and content type in Curl uploads
929   - MySQLi fixes
930   - Handle relative paths in is_dir
931   - Add string conversion for array_fill_keys
932   - Implement various Imagick functionality
933   - Implement CUROPT_PROGRESSFUNCTION
934   - Implement PHP 5.6 __debugInfo() magic method
935   - Raise warnings when return type annotations mismatch
936   - Fix nested ArrayObject assignment
937   - Switch many ini settings to thread-time binding
938   - Clean up memory stat tracking
939   - Immutable collections are now prefixed with Imm instead of Fixed/Frozen
940   - Clean up type parameter for CheckType-related IR opcodes
941   - Remove legacy linear-scan register allocator and Eval.HHIRXls option
943 "Eminem" 18-Feb-2014
944   - reenabled jemalloc tcache flush for idle threads
945   - array_combine now performs __toString conversion on objects in $keys
946   - Allow streams in move_uploaded_file
947   - Fix a bug double closing a UserFile
948   - Warn when first arg to call_user_func is an object with no __invoke
949   - kill userland hdf functions
950   - Final method reports itself as final
951   - Implement IntlCalendar
952   - Disallow create_function in RepoAuthoritative mode
953   - Case-insensitive check for Accept-Encoding: gzip
955 "Donald Glover" 3-Feb-2014
956   - Support for "::class"
957   - Enable FCallBuiltin for HNI functions
958   - json_decode parity with PHP 5.4
959   - Fix race condition with profiling vs. non-profiling functions prologues
960   - Implement ini_get_all()
961   - Begin conversion of runtime options to INI
962   - Fix potential PGO-mode crash
963   - Fixes and enhancement in IR printing
964   - Vector and Set now supported by:
965     array_{shift,unshift,fill_keys,reverse,flip,size,chunk}, min, and max
966   - StableMap is now an alias for Map, which retains insertion order
967   - Map moved to HH namespace
968   - Fixes in XLS spilling of SIMD registers
969   - Support SCRIPT_FILENAME in FastCGI
970   - Implement stream_context_{get,set}_default
971   - Support for Intel VTune Amplifier XE
972   - Rewrite of SimpleXML
973   - Several HNI conversions, and a helper script
974   - Move Pair to HH namespace
975   - Fix get_included_files ordering
976   - Fix $_SERVER and $_ENV in FastCGI
977   - Update timelib to php 5.5.8
978   - Some dead code removal
980 "Coolio" 21-Jan-2014
981   - Turn on Region JIT
982   - FastCGI fixes, perf improvements
983   - ext_zend_compat fixes
984   - Turn on XLS Register Allocator by default
985   - Fix server stats reporting
986   - 'num' scalar typehint that accepts both ints and floats
987   - fix support for typedef'd namespaces
988   - don't swallow fatals when autoloading
989   - Map collections learned the in-place retain() and retainWithKey()
990   - rename Set::difference() to Set::removeAll()
991   - Update Set to retain element insertion order
992   - remove APC stats
993   - Fixes for ARM mode
994   - FrozenMap collection
995   - Deprecated Vector|Set|Map::put() method removed
996   - == between Frozen{Vector|Set|Map} and {Vector|Set|Map} now can return true
998 "Beastie Boys" 6-Jan-2014
999   - Support lex-time binary constants (eg. 0b10111)
1000   - StreamWrappers now support rmdir, mkdir, rename and unlink
1001   - Miscellaneous PHP5 compatibility fixes
1002   - Default StatCache to off
1003   - Miscellaneous FastCGI fixes
1004   - Miscellaneous region compiler fixes
1005   - Map and StableMap collections use the same underlying implementation
1006   - Trait requirements enforced
1007   - hhprof performance improvements
1008   - Add array to string conversion notice
1009   - Add RaiseNotice IR opcode
1010   - Fix VirtualHost.<name>.Pattern matching
1011   - Fix various memory leaks (pdo_parse_params, Gen*WaitHandle)
1012   - Import a lot more Zend tests that used to crash or hang
1013   - Clean up base.h
1014   - XLS register allocation cleanup
1015   - Enable region compiler by default for JIT functions in ahot
1016   - Fatal on eval() in RepoAuthoritative mode
1017   - Enable LTO for HHVM
1018   - Fix a few SPL compatibility issues
1020 "Appleseed" 23-Dec-2013
1021   - Fix issues with DOCUMENT_ROOT in fastcgi
1022   - Better type inference for collections and builtins in repo mode
1023   - Shorter syntax for lambda expressions w/ automatic captures
1024   - Parser support for trait require clauses
1025   - Move FrozenVector and Set to the HH namespace
1026   - Fix resource to array conversion
1027   - Fix a request local memory leak in foreach of apc arrays
1028   - Initial php_odbc API implementation
1029   - Implement PHP's hash_copy() function
1030   - Experimental tool: Memoization Opportunity Profiler
1031   - Various small parity/behavior fixes (in phar, proc_open, filter_var)
1032   - A Eval.DumpHhas=1 option to dump hhas for a php file
1033   - Better warnings in Set::toArray
1034   - Fix the behavior of foreach loops in finally blocks
1035   - chmod -x runtime/vm/jit/*.{cpp,h}
1036   - Changes to make hhvm build clean with clang-3.4
1037   - Fix array_product to not be bug-compatible with PHP 5.2
1038   - Change the Map datastructure---preserves order and does faster foreach
1039   - FrozenSet collection
1040   - Generate pid.map when we unmap text section, for the perf tool
1041   - Implemented GlobIterator
1042   - Implemented Reflection::export and Reflection::getModifierNames
1044 "Tom Yum" 9-Dec-2013
1045   - support date.timezone in ini files
1046   - implement fileinfo
1047   - special comparisons for DateTime
1048   - delete unimplemented functions
1049   - support for the finally clause in try blocks
1051 "Huarache" 26-Nov-2013
1052   - Linker re-ordering of hot functions
1053   - Huge pages for hot functions
1054   - Implement ZipArchive
1055   - preg_replace /e support
1056   - get_mem_usage() no longer can be negative
1057   - Userland file system support
1058   - Implement fileinfo extension
1059   - wordwrap() fixes
1060   - PDO::sqliteCreateFunction()
1061   - Implement NumberFormatter
1062   - Implement Locale
1063   - Implement DatePeriod
1064   - Many reflection fixes
1065   - Stub out PharData
1066   - A ton of performance fixes
1067   - A ton of open source framework fixes
1068   - FastCGI Server Support
1070 "Garlic Alfredo" 11-Nov-2013
1071   - teach implode() about collections
1072   - fix ini parsing leak
1073   - Make array not an instanceof Traversable
1075 "Burrito" 28-Oct-2013
1076   - Initial support for using FastCGI
1077   - Initial support for php.ini configuration files
1078   - Log when a nullable (e.g. ?int) is incorrect
1079   - Add support for collections to array_diff, array_diff_key, array_intersect,
1080     array_intersect_key
1081   - tc-print improvements and fixes
1082   - Several debugger fixes
1083   - More improvements to the experimental PHP extension compat layer
1084   - Fixed how parse errors are handled by eval()
1085   - Support custom reason for status header
1086   - Emit better error message when hhvm's systemlib doesn't load properly
1087   - Fixes / clarifications added to the bytecode specification
1088   - Lots of other bug fixes, clean up, PHP compat fixes, and JIT improvements
1090 "Sausage" 14-Oct-2013
1091   - Direct invocation of callable arrays: $f = [$cls_or_obj, 'method']; $f()
1092   - ASAN clean
1093   - Support dynamically loadable extensions
1094   - Support loading mini-systemlibs from extensions
1096 "Tabasco" 30-Sep-2013
1097   - Fix issues with __toString() functions that return non-string values
1098   - Don't allow mock classes to extend collection classes
1099   - Smarter memory allocation and scheduling for NUMA systems
1100   - Improve profiler performance in the jit
1101   - Fix several Zend compatibility issues
1102   - Fix several bugs uncovered by ASAN
1103   - Add collection support to array_keys, array_values, and array_combine
1104   - Return a set-like array from Set::toArray
1105   - Add to(Vector|Map|StableMap|Set) methods to collections
1106   - Collections convert to boolean false when empty
1107   - get_class_vars invokes the autoloader when necessary
1108   - Rework the Zend compatibility layer to be more robust
1109   - Allow traits to implement interfaces
1110   - Support arbitrary expressions inside empty()
1112 "Bobotie" 16-Sep-2013
1113   - HNI (HipHop Native Interface) for calling C++ functions from PHP
1114   - Fix PropertyAccessorMap::isset
1115   - Expose more POSIX constants
1116   - Fixed behavior of stream_get_contents when default args are used.
1117   - Implement str_getcsv, and fix some fgetcsv related issues.
1118   - [IPv6] Fix stream_socket_recvfrom & stream_socket_sendto.
1119   - [IPv6] Fix socket_sentto_recvfrom_ipv6_udp Zend compatibility.
1120   - Optimize closure invocation and __invoke (~3x faster to invoke)
1121   - Import gettext extension
1122   - string and object allocation optimizations (reduced memory usage for both)
1123   - Import YAML extension
1124   - Import ftp extension
1126 "Kimchi" 2-Sep-2013
1127   - Fix order of custom attributes and visibility in ctor arg promotion
1128   - Implement CachingIterator
1129   - Implement RecursiveCachingIterator
1130   - Generalized heuristic for choosing when to inline in the jit
1131   - Introduced a Zend compatibility layer to compile extensions
1132   - Imported calendar extension
1133   - Use gcc-4.8.1 by default
1134   - Improve hhvm command line parsing logic
1135   - Fix register_shutdown in session_set_save_handler to match PHP 5.4
1136   - Add "native" functions for use in Systemlib
1137   - PHP extension source-compatitblility layer
1138   - Fix ArrayIterator constructor PHP compatibility
1139   - Enable building against libmemcached 1.0.8
1140   - Debugger: $_ not cleared but still printed after exception
1141   - Fix clone of SplPriorityQueue
1142   - Debugger: Fix bugs when multiple threads hit the same breakpoint
1143   - Fix several namespace bugs
1144   - Several PHP compatibility fixes for ArrayObject and ArrayIterator
1145   - Fix list assignment with collection literals
1146   - support "tuple(...)" in initializer expressions
1147   - HHVM should compile with libmemcached 1.0.9+
1148   - Support "(new Vector {..})->method()" style syntax
1149   - use trigger_error in PHP for Redis user errors
1150   - multiple simplexml fixes
1151   - fixed serialize/unserialize for SplObjectStorage
1152   - Implement ReflectionParameter::IsCallable()
1154 "Achiote" 19-Aug-2013
1155   - Async stack traces in the debugger via the "wa" command
1156   - Fix late static binding in static closures
1157   - Fix breakpoints on generators
1158   - Add SplObserver and SplSubject interfaces
1159   - Update Iterable interface and add toArray() method
1160   - Allow __get for undefined properties
1161   - Implement get_included_files()
1162   - Limit use of huge pages
1164 "Churrasco" 05-Aug-2013
1165   - Implement stream_is_local
1166   - Implement read support for .phar
1167   - Implement assert with string arguments
1168   - Implement RecursiveArrayIterator
1169   - Implement php_strip_whitespace()
1170   - Support for timeouts in cli mode
1171   - Closure allocation optimizations (~2x faster to allocate a closure)
1172   - Implement Redis session handler
1173   - New memory profiler, hhprof, with pprof compatible output
1174   - Update isset($string[$k]) and empty($string[$k) to PHP 5.5 semantics
1175   - Fixed a few parser bugs
1176   - Fixed a few bugs with token_get_all()
1177   - Fix (string)$obj semantics when __toString() is not defined
1179 "Tamale" 22-Jul-2013
1180   - Optimize vector-shaped Arrays (arrays with keys in range 0..size-1)
1181   - Enable HHBC by default in debug builds
1182   - Implement SplObjectStorage::getInfo()
1183   - Initial rough draft of xhpast2, a replacement for xhpast
1184   - fix compilation on Ubuntu 13.04
1185   - OSX changes, next round
1186   - Modify PHP's ext/standard/math/tests/(pow|abs).phpt to be HHVM friendly
1187   - add XHP comment syntax based on http://www.w3.org/TR/REC-xml/#sec-comments
1189 "Wasabi Peas" 08-Jul-2013
1190   - always_assert when we run out of TC space
1191   - Initial changes to get HHVM compiling on OSX
1192   - Consolidate ObjectData and Instance
1193   - Prototype heap tracing framework & Heap profiler
1194   - Better JIT code generation for Mod and Div
1195   - Fixes to enable compilation with clang
1196   - Support for yield k => v
1197   - Make HHVM's command line parsing closer to PHP
1198   - Implement Redis extension
1199   - Implement LimitIterator from SPL
1200   - add SessionHandler from PHP 5.4
1201   - Numerous Debugger fixes and new developer docs for Debugger
1202   - Ported many extension tests to PHP