Support Type::unionOf(Int, Cls<C>)
[hiphop-php.git] / NEWS
blob207fa9baba6c7029e734a23aab2889752a8199c8
1 "Austin" 15-Jan-2014
2  - [asio] Introduce ConditionWaitHandle
3  - [hack] `hh_server --version` should not require a root
4  - [hack] Log exceptions thrown in the master process.
5  - [hack] Enable unused var warnings under typing/
6  - [hh] typechecker: unbound name errors in partial/decl mode
7  - [hack] Disallow trailing comma in used trait list
8  - [hack] Have coverage / coloring use a hook
9  - [hack] Create lock file if it doesn't exist
10  - Fix std::terminate when debugger is not attached during unwind
11  - [hack] Make `trait ... extends ...` into a parse error
12  - [hack] Make multiple inheritance a parse error
13  - [hh] typechecker: support Enum in xhp attribute declarations
14  - [hack] Raise type errors on undefined static polymorphism lookups.
15  - Fix realpath lookup
16  - [hack] Let any user write to the saved state dir.
17  - [hack] Don't have an optional param that's an option type
18  - RequestInitDocument   404  friendly reminder
19  - Implement Phar::running()
20  - Make Redis utility methods public
21  - Contiguous Heap Prototype
22  - [hh_format] Don't add trailing commas in used trait lists
23  - [hh_format] Don't add trailing commas in template parameter lists
24  - [hh_format] Fix bug with hh_format --diff duplicating some lines.
25  - [hh_format] Don't destroy whitespace in files with "**/" in comments
26  - fix for iconv_mime_decode_headers function skipping headers
27  - Add CPU option for JIT (EvalJitCPU). Defaults to 'native'.
28  - Limit glob flags to only ones supported by php
29  - make recursion limit for unserialize
30  - Allow trailing commas in short-lamba expressions
31  - Fix some leaks in new_socket_connect
32  - fixed decoding utf8 strings so they correctly return '?' on invalid sequences
33  - Actually get the realpath first thing when searching for a file.
34  - Faster UnitCache
35  - Simple speedup for is_dir
36  - [hh] typechecker: demand consistent casing for primitive typehints
37  - Support timestamp begins and ends for getTransitions()
38  - Add global value numbering pass
39  - Support \u escape sequences in double-quoted strings
40  - ResourceLimit.SerializationSizeLimit can be overwriten from the vhost config
41  - Check Eval.JitAMaxUsage when deciding whether to start profiling a function
42  - Allow hex in mb_encode_numericentity
43  - [hhvm] Work around leak in boost flat_set
44  - Add stream_await() for async stream "blocking"
45  - [typechecker] Add support for reading XHP attributes via "->:"
46  - Modify rpoSortCfg to reduce memory usage in refcount-opts
47  - Fix #4380, making get code and get message final
48  - Add PHP_INT_MIN
49  - Disable PGO for pseudo-mains
50  - Mock date/time functions in Isolation.php
51  - Fix error_get_last() not cleared when error handle function entered
52  - [hhvm] RFC: Native Property Handlers
53  - [hack] Define proper constants for CURLOPT and friends
54  - Make newlines in http headers a fatal error.
55  - Add Hack typing to array_keys
56  - Use a custom implementation of strtoll for unserialize
57  - [hack] control whether unseen <?php code is assumed via .hhconfig
59 Z* 18-Dec-2014
60  - Converted objprof extension to use heap parsing
62 "Yelawolf" 4-Dec-2014
63  - Fix comparison of overflowing strings
64  - Fix potential memory corruption during ArrayData::set
65  - Introduce util to restart current process
66  - Share variable environment in eval'd assert
67  - [Find] Only escape spaces in paths for find
68  - Don't ignore Eval.JitAHotSize
69  - Fix checkCfg's defined-tmp checks to be aware of edge-defined tmps
70  - Fix bugs relating to edges in IRInstruction::become
71  - Fix insertPhis calls to IRUnit::replace()
72  - Use sha1sum for the repo-schema
73  - [hh] typechecker: add constants to hh_client --show
74  - [hack] Dump typedef info in `hh_client --show`
75  - Make BigNode parsable, extend HeapIter to visit BigNodes.
76  - Allow static invocation of DOMDocument::load* methods
77  - Allow "array" with type args to be used in XHP attribute declarations
78  - HTMLEncode strings in wddx_serialize_value()
79  - [hack] Make dependency on lz4 optional for OSS build.
80  - [hack] Have hh_server take the list of files to recheck as relative paths
81  - [hack] Docblock parser for AT
82  - Add version number to imagick extension
83  - Support Authorization header in apache_request_headers()
84  - [hack][build] Add needs_rerun hook for XController build step
85  - Fix call to fetchObject without class name
86  - Add possibility to create a DateTime object with timezone
87  - DateTimeImmutable::createFromFormat returns false on failure
88  - [hh] typechecker add PREG_* constants to hhi
89  - Raise warning when put_contents on non-regular file with exclusive lock.
90  - Use uncounted strings to cache non-static regexes
91  - Use specializeExact whenever we know AttrNoOverride from whole program analysis
92  - Fix some not-type-safe LdRef code generated in a situation with SetOpL
93  - Split inner ref type checks into a separate instruction from LdRef
94  - Add support for stream wrapper in include_path.
95  - cmake option to enable avx2 instruction support
96  - Add missing default to PharData::decompress()
97  - [hack] Add lz4 compression when saving server state.
98  - Fix leak in tvCoerce*
99  - Trie Search - optimizations for JS
100  - Don't throw an exception on unknown IP address for OSS
101  - [hh] parity: match php 5.6 in treatment of array_fill with num = 0
102  - Make ob_start function signature PHP 5.6 compatible
103  - Fix issues with private properties and apc
104  - Implement remaining straightforward vasm ops in llvm backend
105  - [hack] Type strlen's return value.
106  - [hack] add additional iterator interfaces
107  - Improve segaddr fixing for 32-bit destructors
108  - Fix parent::__cOnStRuCt and similar with PHP4 constructors
109  - Make stats.json on the admin server return valid json
110  - [hack] Simplify coverage JSON output, and add non-JSON output option.
111  - Remove kernel version assertions
112  - [hack] Fix bad escaping of directory names
113  - [hack] Add some hhi constants for pcntl.
114  - Fix problems in getCurrentPropertyOffset relating to m_ni.inputs
115  - Fix CSE to be aware of where SSATmps are known to be defined
116  - Add an analysis module for functions that query information about the IR
117  - Don't JIT functions that use $php_errormsg or $http_response_code
118  - Fix default SOAP HTTP client
119  - [hack] Member access is `->` followed by lvar, not word
120  - Fix comparison between doubles and hex numeric strings
121  - Implement a bunch more vasm instructions in llvm backend
122  - Enable ASAN for smart allocator
123  - Record the start time for every request
124  - Fix parsing of binary literals denoted with a capital '0B'
125  - Fix Symfony's it's not safe to rely on system timezone setting errors
126  - Allow non-static expressions in function parameter defaults
127  - Fix a bug in Index::lookup_constraint
128  - [hack] Add logging to server_options_cmd.
129  - Fix optional 'errorcode' parameter is not set up properly
130  - Fix PHP primitive default parameter type check
131  - Weaken assert in FileUtil::canonicalize
132  - [hack] Error when using "shape" as a type
133  - Fix getOldestStartTime
134  - Add zlib.output_compression ini option
135  - Add missing argument to DOMXPath::{query,execute}()
136  - htmlentities() should output valid ISO-8859-1 characeters to appropriate entities
137  - Remove bad assert from BaseVector::data()
138  - Cleanup sock and pid files on graceful exit from FastCGI
139  - [hack] Add script for determining server startup options
140  - [hack] Record init time in log output.
141  - Fix some bugs in intersecting specialized types
142  - [hack] Fix duplicate unbound name errors
143  - Update OCaml to 4.02.1
144  - [hhvm] Add per kind ArrayFunc counters for ArrayTracer
145  - Fix use-after-free in the access logs
146  - Wait for clean shutdown on SIGHUP
147  - [hhi] add at() to MysqlRow in hhi file
148  - [memoize] Go back to individual cache props for statics
149  - Break regions after FCall & friends when using LLVM
150  - Remove support for magic quotes (also removed in PHP 5.4)
151  - qlzcompress is not available everywhere, and there's no support for it in OSS
152  - Change the Profiler constructor to not necessarily force CPU affinity.
153  - Add getTypeText to ReflectionParameter
154  - Remove trailing junk from IP addresses for sockets
155  - Preserve index of sockets passed into/out-of socket_select()
156  - Fix lchown when no user found
157  - [hh] typechecker: split function bodies into named and unnamed
158  - [hack] fix error with capturing locals for a foreach using a ref
159  - guess root from supplied filename, where that makes sense
160  - Show a nice error when an invalid argument is passed to hphp -t
161  - Expose Imagick::getImageMimeType to userland
162  - SplFixedArray::FromArray() throws InvalidArgumentException not Exception
163  - Make default_socket_timeout match PHP 5.x
164  - VerifyRetTypeC optimizations for repo-mode
165  - Turn off refcount opts by default when HHIRBytecodeControlFlow is on
166  - Make profiled packed array gets not rejoin the main line
167  - Side exit on surprise flags for backward jumps
168  - Print edges with colors in IR dot graphs; make dotBodies usable
169  - Fix region-method support for loops
170  - Correct the return type of BaseG; fix some missing renames of Mem -> Memb
171  - Adopt PHP7's looser handling of return values in user session handler
172  - Honor the Redis timeout
173  - Fix mysqli_options. Stop asserting.
174  - Fix some bugs in hhbbc support for http_response_code, php_errormsg
175  - Introduce immediately executed async lambdas
176  - Allow nested namespaces with sane behavior
177  - Updated win32-cygwin patch Fixes Issue #4062
178  - [hh] typechecker: ReflectionClass hhi fixup
179  - [hack] Add hh_server --version
180  - Fix a few memory management issues in DOMDocument
181  - Prevent m_nextKI from going negative in MixedArray
182  - [hh] typechecker: declaration location in extend_final error
183  - [hack] Enable .hhconfig to control hh_server flags
184  - Respect status codes from `Status:` header in addition to `HTTP/` header
185  - Fix number_format() to deal with very large precisions/very large numbers
186  - Fix closure use var reflection for referenced vars
187  - Support self parameter typehint
188  - [h2tp] modify build to support h2tp
189  - [hh] hh_format: understand async lambdas
190  - [hack] added support for abstract class constants
192 "Xzibit" 20-Nov-2014
193  - Fix readline request locals
194  - Don't leak HashContexts
195  - Fix a race freeing an APCHandle
196  - Don't clean up memory in AdminRequestHandler::abortRequest
197  - Fix setup/teardown for requests handled by WarmupRequestHandler
198  - Extend IR type system for more information about pointers
199  - Use proxygen as a git submodule
200  - Version of memcpy-x64 optimized for the tail end of 7,6,5,4 bytes in an N byte copy
201  - Eliminate default cases in DataType switches
202  - Match PHP5 backquote processing
203  - Add overflow info to is_numeric_string
204  - Add support for pre-built branches to benchy
205  - Allow calling closures inline
206  - Allow systemlib function declarations to use reserved words for function names
207  - Add HH\{int,float,bool} typehints to PHP
208  - Deep initialization for constant properties
209  - Enforce void return on native class constructors/destructors
210  - Replace NEWOBJ with newobj<T> and newres<T> functions
211  - Change default FCGI socket permissions
212  - Support openssl replacements which don't export RANG_egd()
213  - Fix use-after-free in TimeZone
214  - Support GCC/LLVM stack-smashing protection
215  - Make sure Type::Bottom is a subtype of everything
216  - Fix hphpd crash when printing systemlib classes
217  - Convert file extension to HNI
218  - Convert DOMDocument extension to HNI
219  - Convert POSIX extension to HNI
220  - Convert array_multisort to HNI
221  - Add fribidi extension for HHVM
222  - Mechanism for enabling request-local heap profiling
223  - Make prediction opts deal with arbitrary load/check instructions
224  - Add JSON output support to benchy
225  - HHIR pass to do dead store elimination on frame locals
226  - Adjust single parameter warnings for min()/max()
227  - Make AlwaysLogUnhandledExceptions=off and CallUserHandlerOnFatals=EnableHipHopSyntax
228  - Always use RuntimeOption::SourceRoot to resolve repo-auth lookups
229  - Refactor debugger tests
230  - Fix parser to allow "type" and "newtype" to be used as typevars
231  - Convert system/idl/function to HNI
232  - Remove type annotations for array_sum and array_product
233  - Don't populate the litstr-to-id map in RepoAuthoritative mode
234  - Move m_lineTable to a side table
235  - Only try to autoload classes with valid names
236  - Proper PDO connection errors
237  - Move hfsort linker script tool to OSS
238  - Move slow 'quick' tests to 'slow'
239  - Add option to make inconv actually match the docs
240  - Convert socket extension to HNI
241  - Convert stream extension to HNI
242  - Fix UserFile::access behavior to match PHP5
243  - Fix for wrong PATH_INFO and PATH_TRANSLATED (maybe)
244  - Move generated .h and .cpp to unique dir
245  - Fix for phat:// stream wrapper with no stub
246  - JSON encode closures as empty objects for PHP compat
247  - Disable parameter typehints for builtins to match PHP5
248  - Convert PDO extension to HNI
249  - Fix assert related to async return typehints
250  - Allow collections in array_sum() and array_product()
251  - Use the time in default xdebug output file
252  - Allow vxls to allocate vmsp during traces
253  - Only initialize sweepables on new threads
254  - Load Offset->line number mappings on demand
255  - Fix SOAP memory leak
256  - Add OSS support for benchy
258 "Will.i.am" 13-Nov-2014
259  - Add benchy.py for benchmarking HHVM
260  - Tune and enable PGO for all functions
261  - Generate HHIR opcode table by extracting lines from ir.specification
262  - Convert a few more extensions to HNI
263  - Limit the maximum number of bytecode instructions in a region
264  - Improvements to <<__Memoize>>
266 "Vanilla Ice" 27-Oct-2014
267  - Fix logging
268  - An async method's return annotation (if there is one) must be "Awaitable"
269  - Fix a bug in how __Memoize sets up FPI regions
270  - Fix issues with shutdown/postsend functions
271  - Fix is_callable for interface and abstract methods
272  - Added support for ReflectionFunction::getClosureThis()
273  - Add option to run perf to hhvm_wrapper
274  - Use a global cache for timezone info
275  - Implement readline_info()
276  - Fix NumberFormatter::format for string values
277  - Corrected socket connect for IPv6 hosts
278  - [hack] Fix parsing of postfix operators.
279  - Region selector improvements
280  - Disallow <<__Memoize>> on interfaces
281  - Convert APC to HNI
282  - Align recoverable fatal error's message with PHP
283  - [hack] Make hhi for some builtin constants.
284  - HHBBC improvements (enums, etc.)
285  - Properly shutdown debugger threads on exit
286  - [hack] support for 'abstract final' classes
287  - Convert string to HNI
288  - Fix SOAP extension type encoding
289  - make test runner not puke when run with xargs
290  - [hack] reflection support for first-class enums
291  - Make `yield;` a valid statement
293 "Ultramagnetic" 9-Oct-2014
294  - Optimize strtr
295  - Closure::bind support
296  - Cleanup/shrink various runtime data structures
297  - Various jit performance optimizations
298  - Fix various debugger crashes
299  - Better handling of memory limits
300  - Hack: System user attributes will be prefixed with __, notably <<Override>> renamed to <<__Override>>
301  - Hack: Support for 'abstract final' non-instantiable non-inheritable "utility" classes
303 "T-Pain" 25-Sep-2014
304  - Use vasm virtual registers in x64 backend, transition fully to vasm-xls
305  - 'arraykey' scalar typehint that accepts both ints and strings
306  - Add OSS benchmarking suite
307  - Fix PDO::bindColumn
308  - [resumable] Set resumed flag before suspending VarEnv
309  - Objprof for HHVM (Approx. instance counter)
310  - Make RUSAGE_THREAD available to getrusage PHP function
311  - clean up /tmp/test-run- files
312  - VASM register-coalescing via hinting
313  - Be more conservative about HNI types when there are InterceptableFunctions
314  - Add runtime support for null-safe method call operator "?->"
315  - Add sanity test system to OSS benchmarker
316  - Fix double deallocation of object in zend conversion of object to string
317  - [hhvm|memoize] Makes <<__Memoize>> work with arbitrary args
318  - Use raw troff encoding for official HHVM man page
319  - Add --php options to HHVM man page
320  - Fix GMP tests/crashes
321  - Implement posix_errno
322  - Xdebug remote debugging compatibility and bug fixes
323  - Add options parameter to DOMDocument::load/loadHTML()
324  - Add support for GNU tar symlinks to PharData
325  - Add max_file_uploads support
326  - Improve process error checking in perf runner
327  - posix_getgrgid()['members'] should be empty array if no users found
328  - Convert from jemalloc's obsolete *allocm() to *allocx()
329  - Use EqX instead of Eq for Obj/Num comparisons.
330  - make class closure consist with PHP
331  - Fix guard relaxation to work with bytecode control flow
332  - Allow vm-stack flushing in rpc threads
333  - stop killing LightProcesses while writing out stacktrace.log
334  - Get hhvm compiling with clang-3.5
335  - Update .hhi files for ConstSet, Set, and ImmSet
336  - Force the linker to keep symbols in lowmem on MacOSX
337  - Make guard relaxation work with unreachable code
338  - Add minimal hdf support to test runner
339  - Analyze/optimize pseudomains in hhbbc
340  - [hhvm|memoize] Fix segfault on certain memoized functions
341  - Support mappy ini configuration
342  - Xdebug cleanup and trivial features
343  - Abort the server if a request gets stuck
344  - Added support for Closure::bind()
346 "Snoop Dogg" 11-Sep-2014
347  - VASM phase 1: emit vasm instructions, with existing register allocation
348  - More xdebug support
349  - [hack] Implement async lambdas.
350  - add process memory and code segment size to admin memory page
351  - Overhauled xdebug remote debugging testing
352  - Add a mechanism for building and testing a zend extension as a DSO.
353  - Support fast object allocation path when Eval.EnableObjDestruct call is on
354  - Static string table memory usage
355  - Implement parallel repo preloading.
356  - Add mcrypt constants to hhi
357  - Move var_dump() to HNI, kill off variable.idl.json
358  - JIT: Use std, boost, and folly instead of smart containers.
359  - Hack: Support for variance (+/-) annotations on type-parameters
360  - Implement APCIterator
361  - Convert v?s?printf() to HNI using Variadics
362  - Enable variadics for HNI functions/methods
363  - Smooth a wrinkle in HHVM's safesort impl
364  - Make Set implement KeyedIterable and support bracket syntax for reading
365  - Covariance fixes
367 "RBX" 28-Aug-2014
368  - Make MemExceeded flag sticky
369  - Check for OOM during json decoding
370  - Check surprise flags when unserializing arrays and objects
371  - Limit curl timeout to remaining request timeout
372  - Add variant of openssl_pkcs7_verify that ignores cert expiration
373  - Numerous changes to support xdebug
374  - Remove use of non-threadsafe strtok()
375  - Numerous changes to normalize INI setting names
376  - update to new sqlite
377  - <<__Memoize>> support
378  - Hack: Print backtrace when worker dies
379  - Parser support for "varray(..)"
380  - Introduce kVPackedKind for vector-like arrays
381  - Move mailparse to HNI
382  - VASM start phase 1; emit vasm for some instructions
383  - Fix in headers defines for cygwin
384  - [hack] Parser: Fix decl mode's confusion of type hints and xhp.
385  - Create a unified stack for Xenon
386  - Move debugger from IDL to HNI
387  - Fix mcrypt_create_iv(..., MCRYPT_RAND) to auto-seed RNG
388  - Fix information leak in hash_equals() implementation
389  - don't statically link libgcc/libstdc++ by default on OSX
390  - Adds ssdeep module to HHVM
391  - added new raise_error family functions that skip the top frame of the backtrace.
392  - Add initial support for -d outside of --php mode
393  - Fix covariance for Const{Vector,Map,Set}, add tests
394  - GMP cleanup/fixes
395  - Implement SplDoublyLinkedList::add
396  - Link against LLVM library if present.
397  - Disallow multiple 'default:' blocks in a single switch
398  - Introduce async function lambdas
399  - Document the PHP profilers
400  - Fix sample profiler output; make it more efficient
401  - Properly shut down fastcgi worker threads when connection is closed
402  - Delete SimpleProfiler
403  - Create HHVM man page
404  - Improved PHP compatibility in the reflection API.
406 "Queen Latifah" 14-Aug-2014
407  - Implement RecursiveCallbackFilterIterator
408  - cmake installations should no longer put files in hphp and now put them in hhvm
409  - Fix error for (Recursive)CachingIterator::ctor's param 1
410  - Force OOM check on large smart allocations
411  - Support stream wrappers in XML parser extensions, add external entity loader
412  - Fix LowPtr load in codegen
413  - Fix race condition in DebuggerProxy start/stop
414  - Log per request if oom or timeout triggered in dynostats
415  - Break out hhvm request timeout / memout counters for psp vs non-psp
416  - Support collections for third parameter of preg_replace() and friends
417  - Added functions imagewebp and imagecreatefromwebp
418  - Fix mb_convert_case when encoding set other than default
419  - Added function imagepalettecopy to ext_gd
420  - Remove reflection hacks for primitive typehints
421  - Fixed tempnam() creates paths with '//'
422  - Add LibGMP extension
423  - Fix heap overflow in sql_regcase() for input >1GB
424  - Add HHVM hookups for folly::Singleton
425  - Fix isset on classes extending ArrayObject
426  - Only track live objects that actually have destructors
427  - Specify ssl cipher list for curl with OpenSSL only
428  - Remove support for "service threads"
429  - PDO MySQL's getCode() didn't match errorInfo
430  - Run usercode before ending the request
431  - Make DynamicExtensions work in ini
432  - Provide backup utf8 sanitizer when UConverter is unavailable
433  - Pass duplicate flag to SNI Initial Handler Callback
434  - fb_intercept now accounts for variadic functions
435  - Add variadic function to fb_intercept test
436  - Implemented basic xdebug tracing
437  - Rename snappy methods
438  - Add sort_flags to ArrayObject::asort
439  - Changed CRYPT_BLOWFISH to 1 because apparently it is available
440  - Convert ext/mysql to HNI
441  - Add log when memory usage reached the MaxRSS
442  - Fix http headers parsing + Remove unused code + Fix indentation
443  - Fixed error output for json_encode
444  - Corrected the var_dump output for Exception class
445  - Relax restrictions on the typing of class constant shape field names.
446  - Fix file:// URL decoding in libxml functions and elsewhere
448 "Public Enemy" 31-July-2014
449  - Interface requirements (similar to trait requirements) enforced
450  - Initial support for PHP5.6 argument unpacking: f($x, $y, ...$args)
451  - Hack: hhi files are embedded in the hh_server binary
452  - removed trampolines and the Eval.JitTrampolines option
453  - Hack: improved support for Generators, including async generators
454  - Documentation of PHP-level profiling in doc/profiling.md
455  - Cleanup of PHP-level profilers
456  - Change default for Eval.EnableObjDestructCall to true
457  - Bundle PCRE 8.32 with open-source HHVM, so we can use the JIT
459 "Outkast" 17-July-2014
460   - PHP_VERSION is now 5.6
461   - Introduce Dbl specific relational IR opcodes
462   - Expose APC info to admin port
463   - Improve Zend compatibility in the reflection API
464   - Implement xdebug_call_class
465   - Hack: first version of formatter
466   - Convert ext/xsl to HNI
467   - Hack: improve init time
468   - Remove JIT::RuntimeType
469   - Fix floating-point overflow for binary, octal and hex literals
470   - Collections: Vector::addAllKeysOf
471   - Hack can build on OSX now
472   - Fix await/yield operator precedence
473   - Fix various xcontroller issues
474   - Enable HHIRBytecodeControlFlow by default
475   - Various changes/fixes to WholeCFG region selector
476   - Introduce async generators
477   - Kill clock_settime
478   - Fix Memcache::get($keys) when $keys is an array
479   - Implement xdebug_call_function
480   - Change order of wait handle processing from FIFO to LIFO
481   - Add Redis::_serialize()
483 "Notorious B.I.G." 25-Jun-2014
484  - Remove Translator::analyze (replaced by tracelet region selector)
485  - Allow empty keys in hash_hmac() and hash_hmac_file()
486  - Interface requirements supported in parser
487  - Implement xdebug_{peak_,}memory_usage
488  - Inline singleton-pattern functions
489  - Cleanup in PhpFile and FileRepository
490  - Fix mysqli_query return value for query without result
491  - Implement xdebug_call_file
492  - Add fastlz support to memcached extension
493  - Fix ini_get to return false for non-supported settings
494  - Fix PHP version constants
495  - All numeric comparisons involving NAN, except != and !==, are now false.
496  - Implement xdebug_call_line
497  - Optimize ini_get
498  - Remove dump-file-repo admin command
499  - Fix stdclass promotion of static private properties
500  - Remove unused locals in global dce (HHBBC)
501  - Get mockery at 100%
502  - Fix casting resource to object
503  - Relocate code to arbitrary alignment
504  - Always let the first character through for camelcase searching
505  - Implement xdebug configuration options
506  - Convert ext/memcache to HNI
507  - Match php5's memcache getoption
508  - ./configure --help now has all the options
509  - mysqli: return false on non-selects
510  - Don't include bt_handler or killpg in backtraces
511  - Don't buffer overrun on bad DNS TXT records
512  - Fixed property access to DOM and XMLReader classes
513  - Add support for ParamCoerceModeFalse
515 "Mos Def" 11-Jun-2014
516  - Turn on new tracelet region selector by default; analyze() is deprecated
517  - Fix a bug in debugBacktrace with NativeImpl methods
518  - Request local allocator now uses logarithmically spaced size classes
519  - Improvements to JIT'd FCallBuiltin to cause fewer spills
520  - Enable vtable-style dispatch on methods marked "abstract"
521  - JIT several instructions that were being punted:  Unbox, File, Dir
522  - Increase "hinted drop" time on write lease, improving JIT'd code layout
523  - Implemented __toString functions in reflection classes
524  - Several tc-print bug fixes
525  - Some improvements in hhbbc arithmetic type inference
526  - More service requests are "ephemeral", reducing wasted stubs space
527  - HH\Vector now has a packed array internally, for O(1) conversions to array
528  - current() and key() now support expressions that can't be taken by reference
529  - Fix a long-standing but very rare race condition with Closure class names
530  - gcc 4.8 is the new minimum to build
531  - Various bug/compat fixes in Soap, SimpleXML, ArrayObject, DOMNode, mysqli
532  - Add a scheme to extend support for efficient packed arrays w/ cap up to 2^32
533  - Move vmfp, vmsp, and vmpc into RDS
534  - Fix some hard-to-hit bugs in inlining relating to stack overflow checks
535  - Faster int to double conversion when calling builtins from the JIT
536  - Fix ReflectionParameter::getClass for scalar typehints
537  - better tuning of the PGO 'hot function' threshold
538  - performance improvements to calling native class methods
539  - improve performance of async functions that exit via exception
540  - several bug fixes in refcount optimization pass relating to async functions
541  - More hhir-related docs in the hackers-guide
542  - Initial support for relocating generated machine code
543  - JIT optimizations for count()
544  - Corrected the result of var_dump and print_r for ArrayObject
545  - fix HH\autoload_set_paths with nested maps
546  - make ReflectionClass serializable
547  - ext/standard/output HNI conversion
548  - allow usage of zend-qsort in user sorts with a runtime option
550 "LL Cool J" 28-May-2014
551  - Over 200 other bug fixes (go lockdown!)
552  - Every HDF setting is now available as INI
553  - Cut session_id() size by 1/2
554  - Added 'Z' format string for pack/unpack
555  - We now build on clang
556  - Fix pcre cache to not fatal when full
557  - Implement $php_errormsg
558  - Adding -n CLI option to hhvm php mode
559  - Fix substitution of invalid UTF8 sequences in htmlspecialchars
560  - FastCGI: Use SCRIPT_FILENAME as the PHP script to run
561  - Can create DateTimeZone's from abbreviations
562  - Put all fastcgi params into $_SERVER
563  - Many DOM classes are now serializable
564  - Define the xhp tokens
565  - Many reflection changes for perf and compatibility
566  - Default fastcgi to listen on 127.0.0.1
567  - remove register_cleanup_function
568  - Map: reserve()
569  - Set: retain(), reserve(), addAllKeysOf()
570  - {Set|ImmSet|Vector|ImmVector}::fromKeysOf()
572 "Kanye West"
573   - Backport fix for CVE-2011-2202
574   - Interfaces {Keyed}Container match arrays *and* collections, not iterables
575   - Added ** and **= operators to HHVM and more compatibility fixes with PHP5.6
576   - Fixes and improvements to collections
577   - Replace json decoder with json-c library
578   - Document VMRegAnchor and isVMFrame()
579   - Improvements to array iterator code
580   - Improvements to the type checker
581   - Allow parser to be generated with bison 3
582   - Improvements and speed up to reflection code
584 "Jay-Z" 9-May-2014
585   - Make handling of code.hot overflows more robust
586   - Catch server errors sooner
587   - Fix segfault and infinite recursion in fileinfo extension
588   - Resolve systemlib constants at compile time
589   - Resume resumables natively
590   - Import round() table optimizations from php-src
591   - Delete bytecode Peephole optimizer
592   - Remove most of annotation.cpp, and some other code gated on !UsedHHBBC
593   - Create phis for locals
594   - Fix free of "" in rfc1867PostHandler
595   - Add firstValue(), firstKey(), lastValue(), lastKey() to collections
596   - Add concat() to collections
597   - Clarify Hack license
598   - Add CakePHP3 to test runner
599   - Better error when TC is full
600   - Add hash_equals() from PHP 5.6
602 "Insane Poetry" 24-Apr-2014
603   - Support for PHP 5.6 variadic ...$args syntax for func declarations
604   - Open source HHMeasure, a simple and extensible microbenchmarking tool
605   - Added a new time-based sampling profiler (Project Xenon)
606   - Fix PCRE unicode handling
607   - Convert Zend compatibility layer and various extensions to HNI
608   - Encode execution mode (eager or resumed) into SrcKey
609   - Merge eager and resumed parts of async functions
610   - Rework various async / continuation bytecode instructions
612 "House of PHPain" 1-Apr-2014
613   - Allow direct arg passing with up to 15 params (7 if at least one is a double)
615 "Ghostface Killah" 17-Mar-2014
616   - Remove "HipHop" from error messages
617   - Add __IsFoldable user attribute for const-foldable functions
618   - Add __Native("NoFCallBuiltin") UA for builtins which need an actrec
619   - Add support for testing different outputs in repo mode
620   - Implement remaining functionality from intl extension
621   - Implement XSL extension
622   - Implement Stream Filters
623   - Improve php.ini support and get ready to kill HDF files
624   - Parse config files as ini files, unless filename contains '.hdf'
625   - Various fixes to Redis, JSON, SPL, DateTime, MySQLi, and others
626   - Remove C<T>Ref typedefs (use const T& now)
627   - JIT default on in command line mode
628   - gethostname() just returns what the syscall returns (Zend compat)
629   - HHBBC turned on in the build for facebook.com
631 "Fifty Cent" 3-Mar-2014
632   - Array parameter type constraints implicitly cast collections to arrays
633   - Fix issues with feof and fwrite
634   - Fix issues with sleep and inaccessible properties
635   - Dump a jemalloc pprod dump when a request hits OOM
636   - Make method_exists work with interface inheritance
637   - Fix crash in preg_replace with /e
638   - Support filename and content type in Curl uploads
639   - MySQLi fixes
640   - Handle relative paths in is_dir
641   - Add string conversion for array_fill_keys
642   - Implement various Imagick functionality
643   - Implement CUROPT_PROGRESSFUNCTION
644   - Implement PHP 5.6 __debugInfo() magic method
645   - Raise warnings when return type annotations mismatch
646   - Fix nested ArrayObject assignment
647   - Switch many ini settings to thread-time binding
648   - Clean up memory stat tracking
649   - Immutable collections are now prefixed with Imm instead of Fixed/Frozen
650   - Clean up type parameter for CheckType-related IR opcodes
651   - Remove legacy linear-scan register allocator and Eval.HHIRXls option
653 "Eminem" 18-Feb-2014
654   - reenabled jemalloc tcache flush for idle threads
655   - array_combine now performs __toString conversion on objects in $keys
656   - Allow streams in move_uploaded_file
657   - Fix a bug double closing a UserFile
658   - Warn when first arg to call_user_func is an object with no __invoke
659   - kill userland hdf functions
660   - Final method reports itself as final
661   - Implement IntlCalendar
662   - Disallow create_function in RepoAuthoritative mode
663   - Case-insensitive check for Accept-Encoding: gzip
665 "Donald Glover" 3-Feb-2014
666   - Support for "::class"
667   - Enable FCallBuiltin for HNI functions
668   - json_decode parity with PHP 5.4
669   - Fix race condition with profiling vs. non-profiling functions prologues
670   - Implement ini_get_all()
671   - Begin conversion of runtime options to INI
672   - Fix potential PGO-mode crash
673   - Fixes and enhancement in IR printing
674   - Vector and Set now supported by:
675     array_{shift,unshift,fill_keys,reverse,flip,size,chunk}, min, and max
676   - StableMap is now an alias for Map, which retains insertion order
677   - Map moved to HH namespace
678   - Fixes in XLS spilling of SIMD registers
679   - Support SCRIPT_FILENAME in FastCGI
680   - Implement stream_context_{get,set}_default
681   - Support for Intel VTune Amplifier XE
682   - Rewrite of SimpleXML
683   - Several HNI conversions, and a helper script
684   - Move Pair to HH namespace
685   - Fix get_included_files ordering
686   - Fix $_SERVER and $_ENV in FastCGI
687   - Update timelib to php 5.5.8
688   - Some dead code removal
690 "Coolio" 21-Jan-2014
691   - Turn on Region JIT
692   - FastCGI fixes, perf improvements
693   - ext_zend_compat fixes
694   - Turn on XLS Register Allocator by default
695   - Fix server stats reporting
696   - 'num' scalar typehint that accepts both ints and floats
697   - fix support for typedef'd namespaces
698   - don't swallow fatals when autoloading
699   - Map collections learned the in-place retain() and retainWithKey()
700   - rename Set::difference() to Set::removeAll()
701   - Update Set to retain element insertion order
702   - remove APC stats
703   - Fixes for ARM mode
704   - FrozenMap collection
705   - Deprecated Vector|Set|Map::put() method removed
706   - == between Frozen{Vector|Set|Map} and {Vector|Set|Map} now can return true
708 "Beastie Boys" 6-Jan-2014
709   - Support lex-time binary constants (eg. 0b10111)
710   - StreamWrappers now support rmdir, mkdir, rename and unlink
711   - Miscellaneous PHP5 compatibility fixes
712   - Default StatCache to off
713   - Miscellaneous FastCGI fixes
714   - Miscellaneous region compiler fixes
715   - Map and StableMap collections use the same underlying implementation
716   - Trait requirements enforced
717   - hhprof performance improvements
718   - Add array to string conversion notice
719   - Add RaiseNotice IR opcode
720   - Fix VirtualHost.<name>.Pattern matching
721   - Fix various memory leaks (pdo_parse_params, Gen*WaitHandle)
722   - Import a lot more Zend tests that used to crash or hang
723   - Clean up base.h
724   - XLS register allocation cleanup
725   - Enable region compiler by default for JIT functions in ahot
726   - Fatal on eval() in RepoAuthoritative mode
727   - Enable LTO for HHVM
728   - Fix a few SPL compatibility issues
730 "Appleseed" 23-Dec-2013
731   - Fix issues with DOCUMENT_ROOT in fastcgi
732   - Better type inference for collections and builtins in repo mode
733   - Shorter syntax for lambda expressions w/ automatic captures
734   - Parser support for trait require clauses
735   - Move FrozenVector and Set to the HH namespace
736   - Fix resource to array conversion
737   - Fix a request local memory leak in foreach of apc arrays
738   - Initial php_odbc API implementation
739   - Implement PHP's hash_copy() function
740   - Experimental tool: Memoization Opportunity Profiler
741   - Various small parity/behavior fixes (in phar, proc_open, filter_var)
742   - A Eval.DumpHhas=1 option to dump hhas for a php file
743   - Better warnings in Set::toArray
744   - Fix the behavior of foreach loops in finally blocks
745   - chmod -x runtime/vm/jit/*.{cpp,h}
746   - Changes to make hhvm build clean with clang-3.4
747   - Fix array_product to not be bug-compatible with PHP 5.2
748   - Change the Map datastructure---preserves order and does faster foreach
749   - FrozenSet collection
750   - Generate pid.map when we unmap text section, for the perf tool
751   - Implemented GlobIterator
752   - Implemented Reflection::export and Reflection::getModifierNames
754 "Tom Yum" 9-Dec-2013
755   - support date.timezone in ini files
756   - implement fileinfo
757   - special comparisons for DateTime
758   - delete unimplemented functions
759   - support for the finally clause in try blocks
761 "Huarache" 26-Nov-2013
762   - Linker re-ordering of hot functions
763   - Huge pages for hot functions
764   - Implement ZipArchive
765   - preg_replace /e support
766   - get_mem_usage() no longer can be negative
767   - Userland file system support
768   - Implement fileinfo extension
769   - wordwrap() fixes
770   - PDO::sqliteCreateFunction()
771   - Implement NumberFormatter
772   - Implement Locale
773   - Implement DatePeriod
774   - Many reflection fixes
775   - Stub out PharData
776   - A ton of performance fixes
777   - A ton of open source framework fixes
778   - FastCGI Server Support
780 "Garlic Alfredo" 11-Nov-2013
781   - teach implode() about collections
782   - fix ini parsing leak
783   - Make array not an instanceof Traversable
785 "Burrito" 28-Oct-2013
786   - Initial support for using FastCGI
787   - Initial support for php.ini configuration files
788   - Log when a nullable (e.g. ?int) is incorrect
789   - Add support for collections to array_diff, array_diff_key, array_intersect,
790     array_intersect_key
791   - tc-print improvements and fixes
792   - Several debugger fixes
793   - More improvements to the experimental PHP extension compat layer
794   - Fixed how parse errors are handled by eval()
795   - Support custom reason for status header
796   - Emit better error message when hhvm's systemlib doesn't load properly
797   - Fixes / clarifications added to the bytecode specification
798   - Lots of other bug fixes, clean up, PHP compat fixes, and JIT improvements
800 "Sausage" 14-Oct-2013
801   - Direct invocation of callable arrays: $f = [$cls_or_obj, 'method']; $f()
802   - ASAN clean
803   - Support dynamically loadable extensions
804   - Support loading mini-systemlibs from extensions
806 "Tabasco" 30-Sep-2013
807   - Fix issues with __toString() functions that return non-string values
808   - Don't allow mock classes to extend collection classes
809   - Smarter memory allocation and scheduling for NUMA systems
810   - Improve profiler performance in the jit
811   - Fix several Zend compatibility issues
812   - Fix several bugs uncovered by ASAN
813   - Add collection support to array_keys, array_values, and array_combine
814   - Return a set-like array from Set::toArray
815   - Add to(Vector|Map|StableMap|Set) methods to collections
816   - Collections convert to boolean false when empty
817   - get_class_vars invokes the autoloader when necessary
818   - Rework the Zend compatibility layer to be more robust
819   - Allow traits to implement interfaces
820   - Support arbitrary expressions inside empty()
822 "Bobotie" 16-Sep-2013
823   - HNI (HipHop Native Interface) for calling C++ functions from PHP
824   - Fix PropertyAccessorMap::isset
825   - Expose more POSIX constants
826   - Fixed behavior of stream_get_contents when default args are used.
827   - Implement str_getcsv, and fix some fgetcsv related issues.
828   - [IPv6] Fix stream_socket_recvfrom & stream_socket_sendto.
829   - [IPv6] Fix socket_sentto_recvfrom_ipv6_udp Zend compatibility.
830   - Optimize closure invocation and __invoke (~3x faster to invoke)
831   - Import gettext extension
832   - string and object allocation optimizations (reduced memory usage for both)
833   - Import YAML extension
834   - Import ftp extension
836 "Kimchi" 2-Sep-2013
837   - Fix order of custom attributes and visibility in ctor arg promotion
838   - Implement CachingIterator
839   - Implement RecursiveCachingIterator
840   - Generalized heuristic for choosing when to inline in the jit
841   - Introduced a Zend compatibility layer to compile extensions
842   - Imported calendar extension
843   - Use gcc-4.8.1 by default
844   - Improve hhvm command line parsing logic
845   - Fix register_shutdown in session_set_save_handler to match PHP 5.4
846   - Add "native" functions for use in Systemlib
847   - PHP extension source-compatitblility layer
848   - Fix ArrayIterator constructor PHP compatibility
849   - Enable building against libmemcached 1.0.8
850   - Debugger: $_ not cleared but still printed after exception
851   - Fix clone of SplPriorityQueue
852   - Debugger: Fix bugs when multiple threads hit the same breakpoint
853   - Fix several namespace bugs
854   - Several PHP compatibility fixes for ArrayObject and ArrayIterator
855   - Fix list assignment with collection literals
856   - support "tuple(...)" in initializer expressions
857   - HHVM should compile with libmemcached 1.0.9+
858   - Support "(new Vector {..})->method()" style syntax
859   - use trigger_error in PHP for Redis user errors
860   - multiple simplexml fixes
861   - fixed serialize/unserialize for SplObjectStorage
862   - Implement ReflectionParameter::IsCallable()
864 "Achiote" 19-Aug-2013
865   - Async stack traces in the debugger via the "wa" command
866   - Fix late static binding in static closures
867   - Fix breakpoints on generators
868   - Add SplObserver and SplSubject interfaces
869   - Update Iterable interface and add toArray() method
870   - Allow __get for undefined properties
871   - Implement get_included_files()
872   - Limit use of huge pages
874 "Churrasco" 05-Aug-2013
875   - Implement stream_is_local
876   - Implement read support for .phar
877   - Implement assert with string arguments
878   - Implement RecursiveArrayIterator
879   - Implement php_strip_whitespace()
880   - Support for timeouts in cli mode
881   - Closure allocation optimizations (~2x faster to allocate a closure)
882   - Implement Redis session handler
883   - New memory profiler, hhprof, with pprof compatible output
884   - Update isset($string[$k]) and empty($string[$k) to PHP 5.5 semantics
885   - Fixed a few parser bugs
886   - Fixed a few bugs with token_get_all()
887   - Fix (string)$obj semantics when __toString() is not defined
889 "Tamale" 22-Jul-2013
890   - Optimize vector-shaped Arrays (arrays with keys in range 0..size-1)
891   - Enable HHBC by default in debug builds
892   - Implement SplObjectStorage::getInfo()
893   - Initial rough draft of xhpast2, a replacement for xhpast
894   - fix compilation on Ubuntu 13.04
895   - OSX changes, next round
896   - Modify PHP's ext/standard/math/tests/(pow|abs).phpt to be HHVM friendly
897   - add XHP comment syntax based on http://www.w3.org/TR/REC-xml/#sec-comments
899 "Wasabi Peas" 08-Jul-2013
900   - always_assert when we run out of TC space
901   - Initial changes to get HHVM compiling on OSX
902   - Consolidate ObjectData and Instance
903   - Prototype heap tracing framework & Heap profiler
904   - Better JIT code generation for Mod and Div
905   - Fixes to enable compilation with clang
906   - Support for yield k => v
907   - Make HHVM's command line parsing closer to PHP
908   - Implement Redis extension
909   - Implement LimitIterator from SPL
910   - add SessionHandler from PHP 5.4
911   - Numerous Debugger fixes and new developer docs for Debugger
912   - Ported many extension tests to PHP