"Rogers" 10-Sep-2015 - Update to jemalloc 4.0.0. - Convert more architecture dependent code to VASM. - Large bout of fixes for compiling hhvm under MSVC. - Have hh_emitter support more of HHBC. - Remove MInstrState from CGetM and IssetM's final operations. - Refactor [un]serialize functions. - Use profiling counters to decide whether to apply LICM. - Move inlining to translateRegion. - Implement intdiv function. - Remove joomla and joomlacms from hhvm test suite. - [hack] Add a --stats option to the client. - [hack] GC the shared memory area more aggressively. - [hack] Rework the representation of strings. - Fix bug #70014 - use RAND_bytes instead of deprecated RAND_pseudo_bytes - Fix bug #69545 - avoid overflow when reading list and improve fix for bug #69545 - Fix #66387: Stack overflow with imagefilltoborder - Fix #70064: imagescale(..., IMG_BICUBIC) leaks memory and Fix #69024: imagescale segfault with palette based image "Quake" 27-Aug-2015 - ?? "Park" 13-Aug-2015 - ??? "Osborne" 30-Jul-2015 - Remove global LDAP requirement - Don't require libXSLT globally - Remove the global MCrypt requirement - Remove the global search for LibUODBC - Remove the global check for libpam - use folly::writeFull wrapper for uploads - Fix vararg handling for array_uintersect and others - fix error message for abstract type constants - Fix variadics in hhvm_get_frame_args - Use poll() instead of select() in XDebugServer::createSocket. - [hack] Error on overriding concrete type constant with an abstract one - [hack] Grow shapes more correctly - Array pointer modification functions (next, current, each etc) can be used on ArrayObject - Eliminate ext_mbstring's dependence on ext_process - Eliminate ext_mail's dependence on ext_process - Use utf8 string literals in zend-html - Don't allow abstract memoized methods - [hack] Properly handle 'this' type for methods - Fix lexing of "${fn()}" - Fix lexing of # when declaring "extends I, I"" - Leave the TC an x64 ret when returning control from a resumed async function - Remove exit placeholders before store/load elim and other passes - Fix a bug in expand() for stack AliasClasses unioned with non-stack slots - Add builtins to analysis - Simplify CountArrayFast based on RAT array types - Refactor packedArrayBoundsStaticCheck to return an enum - Fix a load-elim bug when simplify() folds a CheckType into a Jmp - Fix some problems with gvn on array instructions - Rewrite JSON printer to use buffers instead of strings - Make StringData::Make methods initialize the ref-count to one - Remove unnecessary strcpy call in f_tempnam - Selectively include DV inits and function bodies in the same region - Add annotations to TransRec and use them for printing IR. - Don't use strtok in trace.cpp - Fix framework test runner options handling. - Fix positional argument handling. - More 4.9 build fixes - Fix some hack errors. - Check method preconditions at call sites and output errors and warnings - [hhvm-lockdown] Improvements to serzialize_memoize_param - Use md5 as key for scalar arrays - Use static strings for special cases in serialize - simplexml_load_file: check for null return from File::Open() - Hoist CheckType - Treat type aliases of classes like the aliased class in VerifyParamType - Fix help string for optional arguments. - Add ability to list tests and run a specific test to hphp framework suite. - Fix some bugs with AliasAnalysis for stacks (bring back the stk_expand_map) - curl: add support for CURLOPT_PROTOCOLS and friends - Add curl_strerror - Fixed single-line comments for mac - Don't trigger a fatal error if MySQL wasn't required - Use `mysql_config --socket` instead of mucking with paths - Fixed SplPriorityQueue losing extract flags after clone - `ConstructInstance` returns an exact type - Fix test in OSS build - Add Variant move assignment operators for various types - Fix prologue counter used in irgen::emitFuncPrologue - Add a runtime option to control the number of huge pages used for the text section - HHVM parser support for new optional shape fields syntax - LibDwarf shouldn't forcefully require LibElf - Allow custom paths for pthread library when building Folly - Update linker-script - Peephole optimize away trivial copy2 sequences. - Add ExitPlaceholders - Increase hh_client auto-typecheck wait time - Better register hinting - memcpy rewriting - Switch-related cleanup - [HHBBC] Handle conflicting class/type-alias names in resolve_class() - Miscellaneous optimization options for LLVM backend. - Tune per arena lg_dirty_mult settings. - Update CakePHP3 to 3.0.5 - Change test/run to discard line-comments in .opt files - Fixed a memory leak in SplDoublyLinkedList's pop and shift methods - Add $previous parameter to ErrorException::__construct - Fix compile error in thread-safe-setlocale.cpp in clang. - [hack] Allow anonymous functions to be subtypes of non-anonymous functions - [hack] Don't print ANSI color sequences if output is not a TTY - [hack] Format: Improve handling of XHP class members - [hack] Don't add trailing comma to multiline function type hint - [hack] Format: print colored diff output - [hack] Add --patch option to hh_format - [hack] Don't recurse infinitely on Tvar(x) -> Tunresolved[Tvar(x)] - [hack] Have format code use Core library - [hack] Fix up hh_json - [hack] Don't assert false on unknown signals - [hack] Avoid creating Tunresolved[Tunresolved[...]] in type unification - [hack] Move instantiation of function tparams to Typing_phase.localize - [hack] Update hackificator deploy script - [hack] Don't run dfind in hack build tests - [hack] Fail hard if initial heap size is too large - [hack] Mock out logging when running tests - [hack] Daemons should not print to the console - [hack] Makefile: Sort dependencies alphabetically - [hack] Fix crash with identifier named "namespace" - [hack] Simplify HackEventLogger - [hack] Add additional checks for implementing type constants - [hack] Fix load script path lookup "King" 4-Jun-2015 - [hack] Format: `function() {...}` instead of `function () {...}` - [hack] Fix build with ocaml 4.01 - [hack] Daemonize the logging process - [hh] typechecker: unify function terminality code for `noreturn` - [hh] format: 'elseif' => 'else if' - [hh] typechecker: remove Injectable deps - [hhvm][oss][perf] Reduce checks in Implode - [OSS Perf] Use FileCache for opendir() and readdir() - Link with boost_context library. - Rewrite store-elim as partial redundancy elimination - [hhvm] Simple script for OSS repo mode - add nullbyte detection to proc_open - add nullbyte detection to shell_exec,exec,system,passthru - optimize ini_get() for integer values too - Add an option to enable hotcfg/wholecfg regions only for functions marked as hot - [bootcamp][hh_client]strip current directory when printing errors to a tty - [HHVM] [Lockdown] Fast Object <=> Array cast - Do join/meet/widen/fixpoint for backwards analysis - Add check and test case for interface attempting to implement - Enable hotcfg region selector by default - [hack] User attributes on typedefs - Implement join meet widen etc for Forward_analysis_result - Add a hotcfg region selector that prunes wholecfg-like regions based on profile weights - Add support for errors, proof obligations, predicates and generic analysis summaries - Move array_map() to HNI. - [hh_format] Add support for Type Constants - allow RescheduleWaitHandle to work for [0..PHP_INT_MAX] as priority - Optimize str_replace(string, string, string) - Make IR invariants hold after irgen; check an unchecked one; fix disabling DCE - Fix an insert-asserts.cpp issue for critical edges - Let load-elim track AFrame/AStack knownTypes across php calls - Allow load-elim.cpp to insert phis when it can enable its optimizations - Improve AliasAnalysis::may_alias - Add a profile-guided code layout pass - Support variadic builtins via FCallBuiltin - Support "num args" extra parameter to HNI builtins - [hhbbc] Fix generation of ConcatN opcode - Add IR-gen support for VGetL of type Gen - hphp admin, don't ask for password for some simple queries - [hack] Reduce number of places where we call string_of_path - [hack][format] Don't add trailing commas after variadic params - [hack] Format: Handle XHP trait import syntax - Fix various issues with gcc-4.9 build - [hack] Format: Improve handling of XHP bodies - [hhvm] Port thread-safe-locale - Fix double free in stack trace handler. - Fix fastcgi behavior with FixPathInfo=true and apache 2.4+mod_proxy_fastcgi - Remove -fno-gcse option for clang. - LibPng and LibJpeg are required to build the GD extension - Create two separate tokens in translator-asm-helpers.S and remove ##. - Add support for widening to Ai_analysis_result - Introduce ARef class to load elimination - [hh] typechecker: improve uninit property error messages - [hh] typechecker: reconsider initialization rules for traits and abstract classes - Don't warn when xdebug cannot connect to a remote client. - [hhvm] Don't optimize out concat binops with potential side-effects - Call zend_startup_strtod if zend compact is enabled. - [hack][typechecker] Don't ignore I when declaring "extends I, I" - [hhvm] Support user attributes on typedefs - Clean up func prologue APIs - Fix token for func() instead of ->m_func for ActRecs in backtrace.cpp - Change native.cpp's getInvokeName to return func->fullName() - Don't require storing null to ActRec::m_invName at non-magic callsites - Make all functions have AttrMayUseVV in non repo auth mode - Fix some places where frames without AttrMayUseVV could get VarEnvs - Fix an error message in get_defined_vars - Turn ActRec flags into an enum to make it a little easier to extend - Use ActRec::kNumArgsMask in funcPrologueRedispatch - Add a unit test for a weird case with __call methods and constructors - Remove rStashedAR - Remove handleSRResumeTC entry point in enterTCHelper - Don't redefine StkPtrs for HHIR call instructions - Use HeaderWord in StringData - [hack] Ternary expressions should not leak lenv changes - Use HeaderWord in ObjectData and ResourceData - Remove the 'zend' command from hphpd - Track MixedArray capacity, hashtable size, and mask using m_scale - Fix writing of null-characters in SessionHandler - Add -latomic if needed in linking hhvm - Fix tc-print's LLVM flag - Fix rbp phis in vasm-llvm - Add declarations for ResourceData comparison functions. - Refactor HashCollection to work with a normal empty mixed array. - Fix various runtime options - Move tc-print tool to open source - [hack][load script] Close fds when shelling out - [hack][lint] Allow $_ as a param name - [hh] typechecker: rename "cvar" to "prop" - [hh] typechecker: tweak dynamic yield typing - [hack] Factor out version checking logic - [hhvm/gdb] AsyncFunctionWaitHandle has an m_children now - [folly] Move Singleton out of folly/experimental into folly/ - HeaderWord for RefData - Rename HeaderKind::Native->NativeData and Resumable->ResumableFrame - Use root map manager for LDAP extension. - Construct analysis schedule from call tree - Fix findDefiningBlock - Don't crash HHVM with null-byte-ridden DOMDocument paths - Initialize collections with arrays - [hh][typechecker] Move localize logic into its own files - Fix exit service request for retranslations of the region entry block - [hack] Allow destructing assignment of ConstVector - [hack] Fix disabled build tests - [hack] Remove last of the covariance hacks - [asio] Introduce HH\Asio\{join,result,has_finished}() - [hh] use ... unpacking instead of cufa in meth_caller - [PDO] Fix double-free of SmartPtr - [hh] Fix return type of ImmVector::fromKeysOf - [libxml] Don't crash on invalidated arguments - [hhvm][ini] Refactor Config::[Get|Bind] functions for ini migration - Move Statement::KindOf and Expression::KindOf into Construct "Irwin" 8-May-2015 - [hhvm] Optimization on array_slice - [hhvm] Add Hack.Lang.AutoTypecheck - [hh][typechecker] Move Expansion of Typedefs into Localize - Add rvalue ref versions of cast functions - Rename refcount-opts2.cpp to refcount-opts.cpp - [xenon] Fix crash when unwinding - MemoryManager API organization - Fix memory-effects for LookupClsMethod - Fix vasm jump optimization in presence of loops - [libxml] DOMDoc/DOMAttr memory leak - [hack] Remove cat_opts - [hack] Remove h2tp's List_ext - Switch to using Core_list - [xenon] Integrate with stack frame metadata - [hack] Have AI use Core_list instead of List - [hack] Remove opt_fold_left - [hack] Use the features available in 4.01 - Build call tree to use for scheduler - [hack] Fix the month in our logs - set_frame_metadata(): allocate local and disable dynamic calls - [hack] Remove 3 second delay on small project startup time - [hhvm][easy] Fully-qualify some names in ext_hh_client - [hhvm/gdb] Use "new style classes" - Update vasm-llvm for bindcall ABI changes - Use cmpl instead of testl for surprise flag checks - Remove StLocNT instruction - Remove docjson hphpc option - [parser] Use FunctionContext to store hasCallToGetArgs flag - [hhvm] OCaml must be at least 4.01 - Shrink mixed-array by eliminating m_cap field. - [hack] One more fix for `super` - [hack] Remove variance hacks for Collections - [hack] Static polymorphism check should fold unresolved types - [hack] Stabilize TVar numbers displayed by hh_show() - [hack] Remove Imm{Map,Set}::fromArray from hhis - [hack] Deprecate Set::fromArray - [hack] Add generics to Set::fromArray - Make Proxygen server open source - [hh] typechecker: check that parent::__construct is called - Add support for setting some xdebug options from hdf. - Update timelib version used by HHVM - Fix implicit integer conversion in XDebugServer - [hh][typechecker] Introduce Type "Phases" By Utilizing GADTs - Simplify CFG by merging blocks - [hhvm/gdb] Look up line numbers for PHP functions - [hhvm/gdb] Implement `info asio' command - [hhvm/gdb] Add asyncstk command for printing PHP async stacks - [hack] Fix handling of `super` constraints - Remove weird echo statement in test/run - Support xdebug handling the Debugger.resume command in chrome debugger protocol - Temporary workaround for EH problem in LLVM backend. - Make getTyped return a SmartPtr. Add deprecation message. - Use signed int64_t for index in the AElemI AliasClass - Don't differentiate between cloned closures and normal funcs using rStashedAR - Make func-prologue-related unique stubs not use rVmSp - Make the stack overflow helper not require rVmSp on the way in - Remove the rest of the rVmSp uses in function prologues - Don't use rVmSp in emitMagicFuncPrologue - Fix a bug in method-statement that allowed __call to take named variadic params - Don't use rVmSp for stack overflow checks - Remove TranslArgs::dryRun - Fix small leak of strings from UniqueStubs::add - Add a way to read offsets from DecodedInstruction - Make arm BackEnd subclass final - Move emitTraceCall out of all the BackEnds, use an IR instruction instead - Make a VpassTracer for vasm passes - Allow unpacks in functions with call-by-ref args - Thread hooks create expensive backtraces - Update with patched LLVM. - More scaffolding for building analysis schedules - [hhvm][easy] Targeting 3.8.0 - Create phi nodes for vmfp when needed in vasm-llvm - Add some missing dependencies in common - Moar const correctness. - Use SmartPtr in libxml - Replace newobj with makeSmartPtr in asio. - Catch and handle DataBlockFull exception during prologue generation - Add another condition for simpleProp - [hack] Deprecate Map::fromArray - [hack] Add generics to Map::fromArray - Add scaffolding for running and unit testing schedules - [hh] typechecker: improve handling of invariant ... [2/2] - [hh] typechecker: detect abstract static calls - [hh] typechecker: improve handling of invariant ... - Clean up call graph code and hide implementation - buildURIMap2 actually generate PHP classes - [hack] More logging for saved state - [hh] Don't use unpack operator for MethCallerHelper if there are no args - redis responseDouble returns false on error, not null - Make call graph aware of class (static) virtual methods - remove IR:CustomInstanceInit - remove __init__ usage from SplPriorityQueue - [hack] Touch file when something changes - Simplify the DefLabel case in GVN - [hhvm] Cache result of \HH\Client\typecheck - Updated call graph with overridden virtual methods - Add LLVMAttrs runtime option - Move experimental/tupperware -> tupperware/experimental - [hack] Only include .hhi files in our hhi.tar.gz - simpleProp depends on clsSpec but doesn't constrain on it - Add id<->root mapping interface to memory manager. - Refactor StringData using 16-bit CapCode - [hhvm] Simple implementation of phpinfo() - Fix packed array detection in emitter - Add some basic test coverage for live relocation - [hack] Fix typo in lint URI - [hh] typechecker: error on catch of non-Exception. - [hack] Remove autogen of tokens hhi - move Variant::unserialize to variable-unserializer - Clean up cgCheckStaticBitAndDecRef - move Variant::serialize() to variable-serializer - Fix crash in FCallUnpack - Extend the pos to method object map to include static methods and top level functions - Convert PackedArray capacity to a 16-bit pseudo-floating-point format. - Fix bug with closures in static methods - fix_duplicate_fastcgi_header - Clean up some SIMD instructions in LLVM backend - Volatile loads for inc/dec. - Add an option to only keep LLVM code if it's smaller than vasm - [hh] typechecker: deduce correct return types for '// decl' generators - get Nast.method_ object corresponding to call graph target positions - Use movups instead of movdqu in codegen - [hh] typechecker: move responsibility for detecting generators to the parser - added first rudimental tracing - [create_function] Stop JITing per-request functions - [hack] Add deprecated Vector::fromArray back to hhi - [hack] Commit token updates - json_of_t - Add an HHI file for Transliterator - GVN doesn't check supportsGVN when looking through DefLabels - [hh] typechecker: check for `void` values used in function param expressions - [hh] typechecker: remove 'allow_null_as_void' from typing env - Remove litstr typedef - Don't emit Switch bytecode for 1-case switches - Updated the test cases so to be included in classes "Harris" 23-Apr-2015 - Fix preloadRepo - [asio] Two round enterContext() - Handle emptiness correctly in arrElemReturn - Turn off RecordSubprocessTimes by default - Ability to attach metadata to a stack frame - [h2tp] support parameter unpacking calls - fix memory leak while parse ini file - Stop the health monitor when the pagelet server stops - Avoid some overhead dealing with NewCol - [hhvm] Session: Preserve user save handler on session_destroy - Fix mapping the shared area of RDS in Cygwin. - Make ThreadManager initialization explicit, rather than load-time - Fix fread on an SSL socket potentially waiting for data from socket when OpenSSL already has data "Gadd" 9-Apr-2015 - Add catch traces to PHP-level calls - Run class initializers before ObjectData constructor - Avoid crash when invoking error handler from RetC - Call-time pass-by-reference is removed - Add xdebug_var_dump - Heap Tracer - [ini] Bind more options of collection types - [hack] Support static checks on double-quoted strings - Scan all of RDS - Partial HNI conversion of fb.idl.json - [hack] Allow class constants to be treated as static strings - [hh][typeconst] Add basic reflection support for type constants - [hphpd] Re-enable disabled breakpoints if trying to set them again - Support static property as foreach target - [ini] Make getting settings that are containers act correctly - Don't truncate regions to one bytecode in region-tracelet - SmartPtr cleanup - Don't attempt a Live translation after failing an Optimize translation - Disable ext_string hasExactlyOneRef opts - Add a dump-repo command - More efficient functions for reading/writing via afdt sockets - [hack] Make socket/logs world-writable - [hh][typeconst] Forbid constants from implementing abstract type constants - Fix an issue with inlining and unreachable code - OBC HNI Conversion - FBML HNI conversion - [asio] Kill BlockableWaitHandle - Merge collection types into header kind - Disable LocalCopyProp and EliminateDeadCode in hphpc's preOptimize - New refcount optimizations - Make the new refcount opts pass the default (remove calls to the old one) - Add a checkCfg pass that ensures each SSATmp is defined only once - Restructure mark loop, fix a couple bugs - Disable guard relaxation in wholecfg mode - StringBuffer HNI conversion - Using Linux perf mechanism to implement clock_gettime() - Add perf based code relocation step - Track sub process times in LightProcess - Enqueue ambiguous pointers after filtering - Allocate vxls spill space on demand - [hhvm] Add hh_client extension and \HH\Client\typecheck() - Implement bindcall in LLVM backend - Remove zf2 - [hhvm] Improve behavior of hack lambdas for uninit vars - Track the main hardware counters for light processes - Use health monitor for pagelets "Fry" 27-Mar-2015 - Fix Reflection: Variadic parameters not marked as optional - Fix unnecessary dns lookups on startup of hhvm in non-server mode. - Memset with AVX2 support - Perform strict comparison for set() options array - Re-executing a PDOStatement with MySQL doesn't work correctly - Fix #4916 by using is_a() to check if the classname provided is valid - Set the memory limit default to 16GiB - Extend ZEND_GET_MODULE to present getModuleBuildInfo. - Added NULL check on module->functions in ZendExtension::moduleInit(). - Fix reading Thrift's accelerated map when using compact protocol - Support null-safe property lookups - `unpack` should return an empty array for empty input - ReflectionClass: resolve default prop values from updated cache - Raise a cmake error if MySQL socket path can't be identified - Fix infinite loop in hphpd's client->server connection logic - [ini] Remove NoInfiniteLoopDetection - Update HHVM to use jemalloc-dev - Don't let odbc hang indefinitely - Add support for nullable XHP attribute types "Earle" 12-Mar-2015 - Fix some issues with the perf counters - Conditionally enable pthread_mutex_timedlock emulation - [hack] Run all declaration checks for builtin hhi files - Improve the new refcount optimizer - Improve return types of multiple HHIR opcodes - [hack] Check for unimplemented abstract functions in decl mode - Fix free of uninitialized ptr in GD - Fix segfault in unserialization when referencing invalid array element - Apply libmagic security updates - Fix incorrect use of ArrayIdx on a map with constant int-like string keys - Fix some bugs with reserved name (self, parent) restrictions - Convert MySQLi to NPH - [hack] Allow config whitelisting of <> - [hack] Improve hackificator - Avoid forming tracelets that can't have IR fully emitted - Add patch and instructions for building custom version of LLVM - Optimize ord() - Clean up jit::Type methods and improve its behavior - Make "Vary:" header more precise - Match PHP's `use strict;` easter egg and add one of our own - Add PowerPC64 arch-specific code - Add support for noreturn return typehint - Allow Bottom in the IR - Support hot/cold splitting in LLVM-generated code. - [hack] Add hh_client --list-modes - [hack] Add various lint checks and improve lint logic - Make __Deprecated('...') user attribute result in runtime warning - [hack] Avoid timing out when list of errors is very long - Improve interface method compat checks for Type Constants - [hack] Add HHI for SQLFormatter - [hack] Add HHI for mcrouter extension - Support for visiting non-BlockableWaitHandles in debug_backtrace() - Fix Switch-related bug in instrSuccOffsets - Introduce simplifier tool - Convert extensions to use SmartPtr - Fix memory effects for a bunch of HHIR opcodes "Ditko" 26-Feb-2015 - Make printf use HH\FormatString instead of FormatString (we're planning to un-reserve \FormatString in a future version). - Release the async mysql extension - Release an async MCRouter extension - FastCGI largely re-written; should fix several rare crashes - Make sure that C++ method signatures match the HNI - Make the typechecker be as strict about XHP classes as other classes. This can be reverted by putting 'unsafe_xhp=true' in your .hhconfig - The ZRANGEBYSCORE and ZREVRANGEBYSCORE need to take in start/end scores as strings - [asio] Move cycle detection from BlockableWaitHandle to WaitableWaitHandle - Add a StackTraceTimeout option to set the timeout for the backtrace handler. - Define FOLLY_HAVE_PTHREAD_SPINLOCK (for ppc port) - [hh_format] Change scoring function to match developers expectations better - update libmagic CVE-2014-0236 - Fixes #4764 by adding a Redis::unwatch() method - Disable external entity loading to SOAP WSDL files CVE-2013-1643 CVE-2013-1824 - [hhvm] MySQLi: Move mysqli class to NPH - [hh] typechecker: use __Deprecated for DynamicYield - zend initialization settings now work better - optimize ord('static string') - Reuse spill slots in vasm XLS - Fix ImmMap::values() and ImmMap::keys() to return ImmVector - Fix rare race between setting timeout and initializing thread locals - Fix exception leak in tc_unwind_personality - [hack] Fix load script time offset - [hack] Restore hhi touch - Create an IntervalTimer extension - [hhvm] Pass eom flag to Transport::sendImpl - [hack] Fix tmp dir creation - [hh][typeconst] Fix Parser Bug for Type Constant - Fix a bad bug in alias-analysis.cpp - remove obsolete libevent patch - Matched PHP's clowniness in long2ip() - Modified StringData::shrink() to check against the capacity - Backport PHP bug #54002 - crash in exif_read_data - Fix hhvm number formatter fa_IR tests - Better numa scheduling - Reduce code size in crc hash functions - Fix DebuggerDump serialization of keyless collections - Fix persistent redis connection using unix socket. - Fix segfault in mysql_escape_string without connection - Remove logic for perfectvirtuals from compiler - Implemented `hhvm-gdb` command and distribute gdb scripts - Add missing static method ImmVector::fromItems() - Don't cleanup RPC state in destructor if there's nothing to cleanup - Fix object comparison bug in HHVM - Fix Pair::{skip,skipWhile,take,takeWhile}() to return ImmVector - explicitly null-terminate buffer for gethostname() - Remove varray/miarray/msarray and ArrayTracer - Make CryptoLocalKeychainLoader static data managed by folly::Singleton - [hack] Allow Enum - [hhvm][fastcgi] Fix use-after-free after FastCGI protocol errors "Colbert" 12-Feb-2015 - Reduce size needed for reusable stubs - Replaced uses of StringData::bufferSlice() with mutableData() - [hhvm][ini] Provide mechanism to support collections of complex data structures - [hhvm][ini] Support mysqli ini settings - [hhvm/gdb] Enable hashing of strings w/o m_hash - Fix Memcache::connect with unix socket - fix bug #4727 with timezone_name_from_abbr() - [hack] Deprecate is_integer, is_long, and other is_* aliases - [hh] typechecker: check "inheritance" for class consts - [hhvm] Move DOM extension to NPH - [hh] typechecker: run (some) checks on abstract constants - [hack] Deprecate join, split, and create_function. - [hack][typeconst] Rework Type Consts to not use type defs - [hhvm] MySQLi: Support isset() for result fields - Fix memory leaks in CacheClient for getNextFinishedRequestID API - Make access log %h behave more like Apache - [hack] Recognize __Deprecated attribute on functions and methods - [hhvm] get_resource_type of closed files is "Unknown" - Implemented directives: variables_order&request_order - Show meaningful closure names in backtraces - [hh] typechecker: don't allow async blocks as lambda expressions - Add HH\get_headers_secure - [hhvm/gdb] Finish documenting GDB support - [hhvm/gdb] Fix parts of `hhx' that got out of sync - [hack][typeconst] Finalize Type Const syntax - [hhvm/gdb] Add pretty-printer support for object properties - [hhvm/gdb] Refactor lookup_func into component accessors - [hhvm/gdb] Support {Fixed,Indexed}StringMap in `idx' - [hhvm/gdb] Fix some bugs in `idx' - [hhvm/gdb] Add rawtype() and rawptr() helpers - [hh] add __Deprecated attribute wired to ReflectionFunction::isDeprecated - [hh] hh_format: support abstract const syntax [2/2] - [hh] h2tp: "support" abstract consts - [hh] hh_format: support abstract const syntax - [hh] typechecker: parse abstract const declarations - [hh] typechecker: only look for __callStatic for static methods - [hh] typechecker: fix references to `parent::constant` - [hack] Allow subtypes in arithmetic modulo op - Be more lenient in accepting extra ',' in icu date pattern gen. - Accept image/png as a legal mimetype from ext_imagick. "Ballmer" 29-Jan-2015 - Miscellaneous fixes for clang dev build - Make gd-jpeg compatible with jpeg-9 - [hh] typechecker: parse array-string-keys within interpolated strings - [hh] T_FINALLY is a standard token - [hack] Add option to format PHP and decl files - [hhvm][easy] Care a little less about paths in filter_input_array.php - Add HH\Asio\curl_exec() as an awaitable \curl_exec() - Implement IntlChar class - Add imagesetinterpolation to gd extension - Add per-branch cli option support to benchy - [hhvm] Restore -g to cmake debug builds - Fix ReflectionClass method ordering - Allow slightly malformed serialized strings, because PHP - Use parameter coercing rather than explicit cast with chr() - [hhvm] MySQLi: Set fetched fields prior calling a constructor - Move Editor plugins to wiki - Remove $ENV config from FindMySQL.cmake - Fix bugs in floor and ceil behavior - "Fix" tvCanBeCoercedToNumber() for malformed numeric strings - Add missing file constants; use HNI for some existing ones too - Fix SmartPtr move constructor on Variant. - Trim values in Accept-Encoding: header filed - Add "Vary: Accept-Encoding" to reposnse header when compression is enabled - Fix memory leaks in MySQL common and MySQLi - [hack] Various fixes for hh_format - [hack] Allow array-get syntax for KeyedContainer - [hack] Remove _tags file for Ocaml 3.12 compatibility - Fix docs for DecodeCufIter - Install hphp/runtime/version.h during make install - Fix leak on bitwise string operations - Improve test run to checking $_SERVER/$_ENV - Cloning exceptions should raise a fatal error - Disallow destructor/clone method be static - [hhvm] Add version binary - Update exception classes, fixes #4442 - Add a system profiler and hook some actions of interest to New Relic - [hphp] Added NumberFormatter locale/rounding tests - Add llvm/vasm bytecode counters - [hack] Add support for immediately-executed async lambdas - [hack] Add --no-load option, make load script path relative - [hack] Have hh_server invoke the load script - Add TYPO3 Unit tests to the OSS framework parity check - Array multi sort - Fix some stability issues in the server tests - Remove Redis::SERIALIZER_IGBINARY constant - Produce easier to handle HHVM version identifiers - Fix bizarre memory corruption on exit - Add Hack typing for array_values - remove vim editor-plugin - [hhvm] Fix mysqli segfault - [hack] Improve position info in member-not-found error - Update third party hash for small libmbfl change - [hh] typechecker: canonicalize function names - Capture full line ending for single-line comments - Add a bunch of async helper functions - [hack] Add --strict/--loose option to AT converter - Autocomplete - don't suggest methods that aren't visible when class isn't fully known - [hack] Fix return-in-finally check. - [hack] Fix OSS tests - [hack] Avoid relinking all of hh when format_hack changes - [hh] updated various hhi files - [hh] typechecker: parse "true", "false", "null", "array" more correctly - [hh] hack build: don't generate newv calls in buildEgo - [xenon] Fix attribution of CPU time spent in the asio scheduler - Add StructArrays - Don't let GD create images that would exceed the request memory limit - [hack] Set up proper test scaffold for hh_format - [hack] Allow "$c[] = .." when $c is declared as a collection w/o type params - [hack] Fix race in declaration of BuiltinEnum "Austin" 15-Jan-2015 - [asio] Introduce ConditionWaitHandle - [hack] `hh_server --version` should not require a root - [hack] Log exceptions thrown in the master process. - [hack] Enable unused var warnings under typing/ - [hh] typechecker: unbound name errors in partial/decl mode - [hack] Disallow trailing comma in used trait list - [hack] Have coverage / coloring use a hook - [hack] Create lock file if it doesn't exist - Fix std::terminate when debugger is not attached during unwind - [hack] Make `trait ... extends ...` into a parse error - [hack] Make multiple inheritance a parse error - [hh] typechecker: support Enum in xhp attribute declarations - [hack] Raise type errors on undefined static polymorphism lookups. - Fix realpath lookup - [hack] Let any user write to the saved state dir. - [hack] Don't have an optional param that's an option type - RequestInitDocument 404 friendly reminder - Implement Phar::running() - Make Redis utility methods public - Contiguous Heap Prototype - [hh_format] Don't add trailing commas in used trait lists - [hh_format] Don't add trailing commas in template parameter lists - [hh_format] Fix bug with hh_format --diff duplicating some lines. - [hh_format] Don't destroy whitespace in files with "**/" in comments - fix for iconv_mime_decode_headers function skipping headers - Add CPU option for JIT (EvalJitCPU). Defaults to 'native'. - Limit glob flags to only ones supported by php - make recursion limit for unserialize - Allow trailing commas in short-lamba expressions - Fix some leaks in new_socket_connect - fixed decoding utf8 strings so they correctly return '?' on invalid sequences - Actually get the realpath first thing when searching for a file. - Faster UnitCache - Simple speedup for is_dir - [hh] typechecker: demand consistent casing for primitive typehints - Support timestamp begins and ends for getTransitions() - Add global value numbering pass - Support \u escape sequences in double-quoted strings - ResourceLimit.SerializationSizeLimit can be overwriten from the vhost config - Check Eval.JitAMaxUsage when deciding whether to start profiling a function - Allow hex in mb_encode_numericentity - [hhvm] Work around leak in boost flat_set - Add stream_await() for async stream "blocking" - [typechecker] Add support for reading XHP attributes via "->:" - Modify rpoSortCfg to reduce memory usage in refcount-opts - Fix #4380, making get code and get message final - Add PHP_INT_MIN - Disable PGO for pseudo-mains - Mock date/time functions in Isolation.php - Fix error_get_last() not cleared when error handle function entered - [hhvm] RFC: Native Property Handlers - [hack] Define proper constants for CURLOPT and friends - Make newlines in http headers a fatal error. - Add Hack typing to array_keys - Use a custom implementation of strtoll for unserialize - [hack] control whether unseen ` followed by lvar, not word - Fix comparison between doubles and hex numeric strings - Implement a bunch more vasm instructions in llvm backend - Enable ASAN for smart allocator - Record the start time for every request - Fix parsing of binary literals denoted with a capital '0B' - Fix Symfony's it's not safe to rely on system timezone setting errors - Allow non-static expressions in function parameter defaults - Fix a bug in Index::lookup_constraint - [hack] Add logging to server_options_cmd. - Fix optional 'errorcode' parameter is not set up properly - Fix PHP primitive default parameter type check - Weaken assert in FileUtil::canonicalize - [hack] Error when using "shape" as a type - Fix getOldestStartTime - Add zlib.output_compression ini option - Add missing argument to DOMXPath::{query,execute}() - htmlentities() should output valid ISO-8859-1 characeters to appropriate entities - Remove bad assert from BaseVector::data() - Cleanup sock and pid files on graceful exit from FastCGI - [hack] Add script for determining server startup options - [hack] Record init time in log output. - Fix some bugs in intersecting specialized types - [hack] Fix duplicate unbound name errors - Update OCaml to 4.02.1 - [hhvm] Add per kind ArrayFunc counters for ArrayTracer - Fix use-after-free in the access logs - Wait for clean shutdown on SIGHUP - [hhi] add at() to MysqlRow in hhi file - [memoize] Go back to individual cache props for statics - Break regions after FCall & friends when using LLVM - Remove support for magic quotes (also removed in PHP 5.4) - qlzcompress is not available everywhere, and there's no support for it in OSS - Change the Profiler constructor to not necessarily force CPU affinity. - Add getTypeText to ReflectionParameter - Remove trailing junk from IP addresses for sockets - Preserve index of sockets passed into/out-of socket_select() - Fix lchown when no user found - [hh] typechecker: split function bodies into named and unnamed - [hack] fix error with capturing locals for a foreach using a ref - guess root from supplied filename, where that makes sense - Show a nice error when an invalid argument is passed to hphp -t - Expose Imagick::getImageMimeType to userland - SplFixedArray::FromArray() throws InvalidArgumentException not Exception - Make default_socket_timeout match PHP 5.x - VerifyRetTypeC optimizations for repo-mode - Turn off refcount opts by default when HHIRBytecodeControlFlow is on - Make profiled packed array gets not rejoin the main line - Side exit on surprise flags for backward jumps - Print edges with colors in IR dot graphs; make dotBodies usable - Fix region-method support for loops - Correct the return type of BaseG; fix some missing renames of Mem -> Memb - Adopt PHP7's looser handling of return values in user session handler - Honor the Redis timeout - Fix mysqli_options. Stop asserting. - Fix some bugs in hhbbc support for http_response_code, php_errormsg - Introduce immediately executed async lambdas - Allow nested namespaces with sane behavior - Updated win32-cygwin patch Fixes Issue #4062 - [hh] typechecker: ReflectionClass hhi fixup - [hack] Add hh_server --version - Fix a few memory management issues in DOMDocument - Prevent m_nextKI from going negative in MixedArray - [hh] typechecker: declaration location in extend_final error - [hack] Enable .hhconfig to control hh_server flags - Respect status codes from `Status:` header in addition to `HTTP/` header - Fix number_format() to deal with very large precisions/very large numbers - Fix closure use var reflection for referenced vars - Support self parameter typehint - [h2tp] modify build to support h2tp - [hh] hh_format: understand async lambdas - [hack] added support for abstract class constants "Xzibit" 20-Nov-2014 - Fix readline request locals - Don't leak HashContexts - Fix a race freeing an APCHandle - Don't clean up memory in AdminRequestHandler::abortRequest - Fix setup/teardown for requests handled by WarmupRequestHandler - Extend IR type system for more information about pointers - Use proxygen as a git submodule - Version of memcpy-x64 optimized for the tail end of 7,6,5,4 bytes in an N byte copy - Eliminate default cases in DataType switches - Match PHP5 backquote processing - Add overflow info to is_numeric_string - Add support for pre-built branches to benchy - Allow calling closures inline - Allow systemlib function declarations to use reserved words for function names - Add HH\{int,float,bool} typehints to PHP - Deep initialization for constant properties - Enforce void return on native class constructors/destructors - Replace NEWOBJ with newobj and newres functions - Change default FCGI socket permissions - Support openssl replacements which don't export RANG_egd() - Fix use-after-free in TimeZone - Support GCC/LLVM stack-smashing protection - Make sure Type::Bottom is a subtype of everything - Fix hphpd crash when printing systemlib classes - Convert file extension to HNI - Convert DOMDocument extension to HNI - Convert POSIX extension to HNI - Convert array_multisort to HNI - Add fribidi extension for HHVM - Mechanism for enabling request-local heap profiling - Make prediction opts deal with arbitrary load/check instructions - Add JSON output support to benchy - HHIR pass to do dead store elimination on frame locals - Adjust single parameter warnings for min()/max() - Make AlwaysLogUnhandledExceptions=off and CallUserHandlerOnFatals=EnableHipHopSyntax - Always use RuntimeOption::SourceRoot to resolve repo-auth lookups - Refactor debugger tests - Fix parser to allow "type" and "newtype" to be used as typevars - Convert system/idl/function to HNI - Remove type annotations for array_sum and array_product - Don't populate the litstr-to-id map in RepoAuthoritative mode - Move m_lineTable to a side table - Only try to autoload classes with valid names - Proper PDO connection errors - Move hfsort linker script tool to OSS - Move slow 'quick' tests to 'slow' - Add option to make inconv actually match the docs - Convert socket extension to HNI - Convert stream extension to HNI - Fix UserFile::access behavior to match PHP5 - Fix for wrong PATH_INFO and PATH_TRANSLATED (maybe) - Move generated .h and .cpp to unique dir - Fix for phat:// stream wrapper with no stub - JSON encode closures as empty objects for PHP compat - Disable parameter typehints for builtins to match PHP5 - Convert PDO extension to HNI - Fix assert related to async return typehints - Allow collections in array_sum() and array_product() - Use the time in default xdebug output file - Allow vxls to allocate vmsp during traces - Only initialize sweepables on new threads - Load Offset->line number mappings on demand - Fix SOAP memory leak - Add OSS support for benchy "Will.i.am" 13-Nov-2014 - Add benchy.py for benchmarking HHVM - Tune and enable PGO for all functions - Generate HHIR opcode table by extracting lines from ir.specification - Convert a few more extensions to HNI - Limit the maximum number of bytecode instructions in a region - Improvements to <<__Memoize>> "Vanilla Ice" 27-Oct-2014 - Fix logging - An async method's return annotation (if there is one) must be "Awaitable" - Fix a bug in how __Memoize sets up FPI regions - Fix issues with shutdown/postsend functions - Fix is_callable for interface and abstract methods - Added support for ReflectionFunction::getClosureThis() - Add option to run perf to hhvm_wrapper - Use a global cache for timezone info - Implement readline_info() - Fix NumberFormatter::format for string values - Corrected socket connect for IPv6 hosts - [hack] Fix parsing of postfix operators. - Region selector improvements - Disallow <<__Memoize>> on interfaces - Convert APC to HNI - Align recoverable fatal error's message with PHP - [hack] Make hhi for some builtin constants. - HHBBC improvements (enums, etc.) - Properly shutdown debugger threads on exit - [hack] support for 'abstract final' classes - Convert string to HNI - Fix SOAP extension type encoding - make test runner not puke when run with xargs - [hack] reflection support for first-class enums - Make `yield;` a valid statement "Ultramagnetic" 9-Oct-2014 - Optimize strtr - Closure::bind support - Cleanup/shrink various runtime data structures - Various jit performance optimizations - Fix various debugger crashes - Better handling of memory limits - Hack: System user attributes will be prefixed with __, notably <> renamed to <<__Override>> - Hack: Support for 'abstract final' non-instantiable non-inheritable "utility" classes "T-Pain" 25-Sep-2014 - Use vasm virtual registers in x64 backend, transition fully to vasm-xls - 'arraykey' scalar typehint that accepts both ints and strings - Add OSS benchmarking suite - Fix PDO::bindColumn - [resumable] Set resumed flag before suspending VarEnv - Objprof for HHVM (Approx. instance counter) - Make RUSAGE_THREAD available to getrusage PHP function - clean up /tmp/test-run- files - VASM register-coalescing via hinting - Be more conservative about HNI types when there are InterceptableFunctions - Add runtime support for null-safe method call operator "?->" - Add sanity test system to OSS benchmarker - Fix double deallocation of object in zend conversion of object to string - [hhvm|memoize] Makes <<__Memoize>> work with arbitrary args - Use raw troff encoding for official HHVM man page - Add --php options to HHVM man page - Fix GMP tests/crashes - Implement posix_errno - Xdebug remote debugging compatibility and bug fixes - Add options parameter to DOMDocument::load/loadHTML() - Add support for GNU tar symlinks to PharData - Add max_file_uploads support - Improve process error checking in perf runner - posix_getgrgid()['members'] should be empty array if no users found - Convert from jemalloc's obsolete *allocm() to *allocx() - Use EqX instead of Eq for Obj/Num comparisons. - make class closure consist with PHP - Fix guard relaxation to work with bytecode control flow - Allow vm-stack flushing in rpc threads - stop killing LightProcesses while writing out stacktrace.log - Get hhvm compiling with clang-3.5 - Update .hhi files for ConstSet, Set, and ImmSet - Force the linker to keep symbols in lowmem on MacOSX - Make guard relaxation work with unreachable code - Add minimal hdf support to test runner - Analyze/optimize pseudomains in hhbbc - [hhvm|memoize] Fix segfault on certain memoized functions - Support mappy ini configuration - Xdebug cleanup and trivial features - Abort the server if a request gets stuck - Added support for Closure::bind() "Snoop Dogg" 11-Sep-2014 - VASM phase 1: emit vasm instructions, with existing register allocation - More xdebug support - [hack] Implement async lambdas. - add process memory and code segment size to admin memory page - Overhauled xdebug remote debugging testing - Add a mechanism for building and testing a zend extension as a DSO. - Support fast object allocation path when Eval.EnableObjDestruct call is on - Static string table memory usage - Implement parallel repo preloading. - Add mcrypt constants to hhi - Move var_dump() to HNI, kill off variable.idl.json - JIT: Use std, boost, and folly instead of smart containers. - Hack: Support for variance (+/-) annotations on type-parameters - Implement APCIterator - Convert v?s?printf() to HNI using Variadics - Enable variadics for HNI functions/methods - Smooth a wrinkle in HHVM's safesort impl - Make Set implement KeyedIterable and support bracket syntax for reading - Covariance fixes "RBX" 28-Aug-2014 - Make MemExceeded flag sticky - Check for OOM during json decoding - Check surprise flags when unserializing arrays and objects - Limit curl timeout to remaining request timeout - Add variant of openssl_pkcs7_verify that ignores cert expiration - Numerous changes to support xdebug - Remove use of non-threadsafe strtok() - Numerous changes to normalize INI setting names - update to new sqlite - <<__Memoize>> support - Hack: Print backtrace when worker dies - Parser support for "varray(..)" - Introduce kVPackedKind for vector-like arrays - Move mailparse to HNI - VASM start phase 1; emit vasm for some instructions - Fix in headers defines for cygwin - [hack] Parser: Fix decl mode's confusion of type hints and xhp. - Create a unified stack for Xenon - Move debugger from IDL to HNI - Fix mcrypt_create_iv(..., MCRYPT_RAND) to auto-seed RNG - Fix information leak in hash_equals() implementation - don't statically link libgcc/libstdc++ by default on OSX - Adds ssdeep module to HHVM - added new raise_error family functions that skip the top frame of the backtrace. - Add initial support for -d outside of --php mode - Fix covariance for Const{Vector,Map,Set}, add tests - GMP cleanup/fixes - Implement SplDoublyLinkedList::add - Link against LLVM library if present. - Disallow multiple 'default:' blocks in a single switch - Introduce async function lambdas - Document the PHP profilers - Fix sample profiler output; make it more efficient - Properly shut down fastcgi worker threads when connection is closed - Delete SimpleProfiler - Create HHVM man page - Improved PHP compatibility in the reflection API. "Queen Latifah" 14-Aug-2014 - Implement RecursiveCallbackFilterIterator - cmake installations should no longer put files in hphp and now put them in hhvm - Fix error for (Recursive)CachingIterator::ctor's param 1 - Force OOM check on large smart allocations - Support stream wrappers in XML parser extensions, add external entity loader - Fix LowPtr load in codegen - Fix race condition in DebuggerProxy start/stop - Log per request if oom or timeout triggered in dynostats - Break out hhvm request timeout / memout counters for psp vs non-psp - Support collections for third parameter of preg_replace() and friends - Added functions imagewebp and imagecreatefromwebp - Fix mb_convert_case when encoding set other than default - Added function imagepalettecopy to ext_gd - Remove reflection hacks for primitive typehints - Fixed tempnam() creates paths with '//' - Add LibGMP extension - Fix heap overflow in sql_regcase() for input >1GB - Add HHVM hookups for folly::Singleton - Fix isset on classes extending ArrayObject - Only track live objects that actually have destructors - Specify ssl cipher list for curl with OpenSSL only - Remove support for "service threads" - PDO MySQL's getCode() didn't match errorInfo - Run usercode before ending the request - Make DynamicExtensions work in ini - Provide backup utf8 sanitizer when UConverter is unavailable - Pass duplicate flag to SNI Initial Handler Callback - fb_intercept now accounts for variadic functions - Add variadic function to fb_intercept test - Implemented basic xdebug tracing - Rename snappy methods - Add sort_flags to ArrayObject::asort - Changed CRYPT_BLOWFISH to 1 because apparently it is available - Convert ext/mysql to HNI - Add log when memory usage reached the MaxRSS - Fix http headers parsing + Remove unused code + Fix indentation - Fixed error output for json_encode - Corrected the var_dump output for Exception class - Relax restrictions on the typing of class constant shape field names. - Fix file:// URL decoding in libxml functions and elsewhere "Public Enemy" 31-July-2014 - Interface requirements (similar to trait requirements) enforced - Initial support for PHP5.6 argument unpacking: f($x, $y, ...$args) - Hack: hhi files are embedded in the hh_server binary - removed trampolines and the Eval.JitTrampolines option - Hack: improved support for Generators, including async generators - Documentation of PHP-level profiling in doc/profiling.md - Cleanup of PHP-level profilers - Change default for Eval.EnableObjDestructCall to true - Bundle PCRE 8.32 with open-source HHVM, so we can use the JIT "Outkast" 17-July-2014 - PHP_VERSION is now 5.6 - Introduce Dbl specific relational IR opcodes - Expose APC info to admin port - Improve Zend compatibility in the reflection API - Implement xdebug_call_class - Hack: first version of formatter - Convert ext/xsl to HNI - Hack: improve init time - Remove JIT::RuntimeType - Fix floating-point overflow for binary, octal and hex literals - Collections: Vector::addAllKeysOf - Hack can build on OSX now - Fix await/yield operator precedence - Fix various xcontroller issues - Enable HHIRBytecodeControlFlow by default - Various changes/fixes to WholeCFG region selector - Introduce async generators - Kill clock_settime - Fix Memcache::get($keys) when $keys is an array - Implement xdebug_call_function - Change order of wait handle processing from FIFO to LIFO - Add Redis::_serialize() "Notorious B.I.G." 25-Jun-2014 - Remove Translator::analyze (replaced by tracelet region selector) - Allow empty keys in hash_hmac() and hash_hmac_file() - Interface requirements supported in parser - Implement xdebug_{peak_,}memory_usage - Inline singleton-pattern functions - Cleanup in PhpFile and FileRepository - Fix mysqli_query return value for query without result - Implement xdebug_call_file - Add fastlz support to memcached extension - Fix ini_get to return false for non-supported settings - Fix PHP version constants - All numeric comparisons involving NAN, except != and !==, are now false. - Implement xdebug_call_line - Optimize ini_get - Remove dump-file-repo admin command - Fix stdclass promotion of static private properties - Remove unused locals in global dce (HHBBC) - Get mockery at 100% - Fix casting resource to object - Relocate code to arbitrary alignment - Always let the first character through for camelcase searching - Implement xdebug configuration options - Convert ext/memcache to HNI - Match php5's memcache getoption - ./configure --help now has all the options - mysqli: return false on non-selects - Don't include bt_handler or killpg in backtraces - Don't buffer overrun on bad DNS TXT records - Fixed property access to DOM and XMLReader classes - Add support for ParamCoerceModeFalse "Mos Def" 11-Jun-2014 - Turn on new tracelet region selector by default; analyze() is deprecated - Fix a bug in debugBacktrace with NativeImpl methods - Request local allocator now uses logarithmically spaced size classes - Improvements to JIT'd FCallBuiltin to cause fewer spills - Enable vtable-style dispatch on methods marked "abstract" - JIT several instructions that were being punted: Unbox, File, Dir - Increase "hinted drop" time on write lease, improving JIT'd code layout - Implemented __toString functions in reflection classes - Several tc-print bug fixes - Some improvements in hhbbc arithmetic type inference - More service requests are "ephemeral", reducing wasted stubs space - HH\Vector now has a packed array internally, for O(1) conversions to array - current() and key() now support expressions that can't be taken by reference - Fix a long-standing but very rare race condition with Closure class names - gcc 4.8 is the new minimum to build - Various bug/compat fixes in Soap, SimpleXML, ArrayObject, DOMNode, mysqli - Add a scheme to extend support for efficient packed arrays w/ cap up to 2^32 - Move vmfp, vmsp, and vmpc into RDS - Fix some hard-to-hit bugs in inlining relating to stack overflow checks - Faster int to double conversion when calling builtins from the JIT - Fix ReflectionParameter::getClass for scalar typehints - better tuning of the PGO 'hot function' threshold - performance improvements to calling native class methods - improve performance of async functions that exit via exception - several bug fixes in refcount optimization pass relating to async functions - More hhir-related docs in the hackers-guide - Initial support for relocating generated machine code - JIT optimizations for count() - Corrected the result of var_dump and print_r for ArrayObject - fix HH\autoload_set_paths with nested maps - make ReflectionClass serializable - ext/standard/output HNI conversion - allow usage of zend-qsort in user sorts with a runtime option "LL Cool J" 28-May-2014 - Over 200 other bug fixes (go lockdown!) - Every HDF setting is now available as INI - Cut session_id() size by 1/2 - Added 'Z' format string for pack/unpack - We now build on clang - Fix pcre cache to not fatal when full - Implement $php_errormsg - Adding -n CLI option to hhvm php mode - Fix substitution of invalid UTF8 sequences in htmlspecialchars - FastCGI: Use SCRIPT_FILENAME as the PHP script to run - Can create DateTimeZone's from abbreviations - Put all fastcgi params into $_SERVER - Many DOM classes are now serializable - Define the xhp tokens - Many reflection changes for perf and compatibility - Default fastcgi to listen on 127.0.0.1 - remove register_cleanup_function - Map: reserve() - Set: retain(), reserve(), addAllKeysOf() - {Set|ImmSet|Vector|ImmVector}::fromKeysOf() "Kanye West" - Backport fix for CVE-2011-2202 - Interfaces {Keyed}Container match arrays *and* collections, not iterables - Added ** and **= operators to HHVM and more compatibility fixes with PHP5.6 - Fixes and improvements to collections - Replace json decoder with json-c library - Document VMRegAnchor and isVMFrame() - Improvements to array iterator code - Improvements to the type checker - Allow parser to be generated with bison 3 - Improvements and speed up to reflection code "Jay-Z" 9-May-2014 - Make handling of code.hot overflows more robust - Catch server errors sooner - Fix segfault and infinite recursion in fileinfo extension - Resolve systemlib constants at compile time - Resume resumables natively - Import round() table optimizations from php-src - Delete bytecode Peephole optimizer - Remove most of annotation.cpp, and some other code gated on !UsedHHBBC - Create phis for locals - Fix free of "" in rfc1867PostHandler - Add firstValue(), firstKey(), lastValue(), lastKey() to collections - Add concat() to collections - Clarify Hack license - Add CakePHP3 to test runner - Better error when TC is full - Add hash_equals() from PHP 5.6 "Insane Poetry" 24-Apr-2014 - Support for PHP 5.6 variadic ...$args syntax for func declarations - Open source HHMeasure, a simple and extensible microbenchmarking tool - Added a new time-based sampling profiler (Project Xenon) - Fix PCRE unicode handling - Convert Zend compatibility layer and various extensions to HNI - Encode execution mode (eager or resumed) into SrcKey - Merge eager and resumed parts of async functions - Rework various async / continuation bytecode instructions "House of PHPain" 1-Apr-2014 - Allow direct arg passing with up to 15 params (7 if at least one is a double) "Ghostface Killah" 17-Mar-2014 - Remove "HipHop" from error messages - Add __IsFoldable user attribute for const-foldable functions - Add __Native("NoFCallBuiltin") UA for builtins which need an actrec - Add support for testing different outputs in repo mode - Implement remaining functionality from intl extension - Implement XSL extension - Implement Stream Filters - Improve php.ini support and get ready to kill HDF files - Parse config files as ini files, unless filename contains '.hdf' - Various fixes to Redis, JSON, SPL, DateTime, MySQLi, and others - Remove CRef typedefs (use const T& now) - JIT default on in command line mode - gethostname() just returns what the syscall returns (Zend compat) - HHBBC turned on in the build for facebook.com "Fifty Cent" 3-Mar-2014 - Array parameter type constraints implicitly cast collections to arrays - Fix issues with feof and fwrite - Fix issues with sleep and inaccessible properties - Dump a jemalloc pprod dump when a request hits OOM - Make method_exists work with interface inheritance - Fix crash in preg_replace with /e - Support filename and content type in Curl uploads - MySQLi fixes - Handle relative paths in is_dir - Add string conversion for array_fill_keys - Implement various Imagick functionality - Implement CUROPT_PROGRESSFUNCTION - Implement PHP 5.6 __debugInfo() magic method - Raise warnings when return type annotations mismatch - Fix nested ArrayObject assignment - Switch many ini settings to thread-time binding - Clean up memory stat tracking - Immutable collections are now prefixed with Imm instead of Fixed/Frozen - Clean up type parameter for CheckType-related IR opcodes - Remove legacy linear-scan register allocator and Eval.HHIRXls option "Eminem" 18-Feb-2014 - reenabled jemalloc tcache flush for idle threads - array_combine now performs __toString conversion on objects in $keys - Allow streams in move_uploaded_file - Fix a bug double closing a UserFile - Warn when first arg to call_user_func is an object with no __invoke - kill userland hdf functions - Final method reports itself as final - Implement IntlCalendar - Disallow create_function in RepoAuthoritative mode - Case-insensitive check for Accept-Encoding: gzip "Donald Glover" 3-Feb-2014 - Support for "::class" - Enable FCallBuiltin for HNI functions - json_decode parity with PHP 5.4 - Fix race condition with profiling vs. non-profiling functions prologues - Implement ini_get_all() - Begin conversion of runtime options to INI - Fix potential PGO-mode crash - Fixes and enhancement in IR printing - Vector and Set now supported by: array_{shift,unshift,fill_keys,reverse,flip,size,chunk}, min, and max - StableMap is now an alias for Map, which retains insertion order - Map moved to HH namespace - Fixes in XLS spilling of SIMD registers - Support SCRIPT_FILENAME in FastCGI - Implement stream_context_{get,set}_default - Support for Intel VTune Amplifier XE - Rewrite of SimpleXML - Several HNI conversions, and a helper script - Move Pair to HH namespace - Fix get_included_files ordering - Fix $_SERVER and $_ENV in FastCGI - Update timelib to php 5.5.8 - Some dead code removal "Coolio" 21-Jan-2014 - Turn on Region JIT - FastCGI fixes, perf improvements - ext_zend_compat fixes - Turn on XLS Register Allocator by default - Fix server stats reporting - 'num' scalar typehint that accepts both ints and floats - fix support for typedef'd namespaces - don't swallow fatals when autoloading - Map collections learned the in-place retain() and retainWithKey() - rename Set::difference() to Set::removeAll() - Update Set to retain element insertion order - remove APC stats - Fixes for ARM mode - FrozenMap collection - Deprecated Vector|Set|Map::put() method removed - == between Frozen{Vector|Set|Map} and {Vector|Set|Map} now can return true "Beastie Boys" 6-Jan-2014 - Support lex-time binary constants (eg. 0b10111) - StreamWrappers now support rmdir, mkdir, rename and unlink - Miscellaneous PHP5 compatibility fixes - Default StatCache to off - Miscellaneous FastCGI fixes - Miscellaneous region compiler fixes - Map and StableMap collections use the same underlying implementation - Trait requirements enforced - hhprof performance improvements - Add array to string conversion notice - Add RaiseNotice IR opcode - Fix VirtualHost..Pattern matching - Fix various memory leaks (pdo_parse_params, Gen*WaitHandle) - Import a lot more Zend tests that used to crash or hang - Clean up base.h - XLS register allocation cleanup - Enable region compiler by default for JIT functions in ahot - Fatal on eval() in RepoAuthoritative mode - Enable LTO for HHVM - Fix a few SPL compatibility issues "Appleseed" 23-Dec-2013 - Fix issues with DOCUMENT_ROOT in fastcgi - Better type inference for collections and builtins in repo mode - Shorter syntax for lambda expressions w/ automatic captures - Parser support for trait require clauses - Move FrozenVector and Set to the HH namespace - Fix resource to array conversion - Fix a request local memory leak in foreach of apc arrays - Initial php_odbc API implementation - Implement PHP's hash_copy() function - Experimental tool: Memoization Opportunity Profiler - Various small parity/behavior fixes (in phar, proc_open, filter_var) - A Eval.DumpHhas=1 option to dump hhas for a php file - Better warnings in Set::toArray - Fix the behavior of foreach loops in finally blocks - chmod -x runtime/vm/jit/*.{cpp,h} - Changes to make hhvm build clean with clang-3.4 - Fix array_product to not be bug-compatible with PHP 5.2 - Change the Map datastructure---preserves order and does faster foreach - FrozenSet collection - Generate pid.map when we unmap text section, for the perf tool - Implemented GlobIterator - Implemented Reflection::export and Reflection::getModifierNames "Tom Yum" 9-Dec-2013 - support date.timezone in ini files - implement fileinfo - special comparisons for DateTime - delete unimplemented functions - support for the finally clause in try blocks "Huarache" 26-Nov-2013 - Linker re-ordering of hot functions - Huge pages for hot functions - Implement ZipArchive - preg_replace /e support - get_mem_usage() no longer can be negative - Userland file system support - Implement fileinfo extension - wordwrap() fixes - PDO::sqliteCreateFunction() - Implement NumberFormatter - Implement Locale - Implement DatePeriod - Many reflection fixes - Stub out PharData - A ton of performance fixes - A ton of open source framework fixes - FastCGI Server Support "Garlic Alfredo" 11-Nov-2013 - teach implode() about collections - fix ini parsing leak - Make array not an instanceof Traversable "Burrito" 28-Oct-2013 - Initial support for using FastCGI - Initial support for php.ini configuration files - Log when a nullable (e.g. ?int) is incorrect - Add support for collections to array_diff, array_diff_key, array_intersect, array_intersect_key - tc-print improvements and fixes - Several debugger fixes - More improvements to the experimental PHP extension compat layer - Fixed how parse errors are handled by eval() - Support custom reason for status header - Emit better error message when hhvm's systemlib doesn't load properly - Fixes / clarifications added to the bytecode specification - Lots of other bug fixes, clean up, PHP compat fixes, and JIT improvements "Sausage" 14-Oct-2013 - Direct invocation of callable arrays: $f = [$cls_or_obj, 'method']; $f() - ASAN clean - Support dynamically loadable extensions - Support loading mini-systemlibs from extensions "Tabasco" 30-Sep-2013 - Fix issues with __toString() functions that return non-string values - Don't allow mock classes to extend collection classes - Smarter memory allocation and scheduling for NUMA systems - Improve profiler performance in the jit - Fix several Zend compatibility issues - Fix several bugs uncovered by ASAN - Add collection support to array_keys, array_values, and array_combine - Return a set-like array from Set::toArray - Add to(Vector|Map|StableMap|Set) methods to collections - Collections convert to boolean false when empty - get_class_vars invokes the autoloader when necessary - Rework the Zend compatibility layer to be more robust - Allow traits to implement interfaces - Support arbitrary expressions inside empty() "Bobotie" 16-Sep-2013 - HNI (HipHop Native Interface) for calling C++ functions from PHP - Fix PropertyAccessorMap::isset - Expose more POSIX constants - Fixed behavior of stream_get_contents when default args are used. - Implement str_getcsv, and fix some fgetcsv related issues. - [IPv6] Fix stream_socket_recvfrom & stream_socket_sendto. - [IPv6] Fix socket_sentto_recvfrom_ipv6_udp Zend compatibility. - Optimize closure invocation and __invoke (~3x faster to invoke) - Import gettext extension - string and object allocation optimizations (reduced memory usage for both) - Import YAML extension - Import ftp extension "Kimchi" 2-Sep-2013 - Fix order of custom attributes and visibility in ctor arg promotion - Implement CachingIterator - Implement RecursiveCachingIterator - Generalized heuristic for choosing when to inline in the jit - Introduced a Zend compatibility layer to compile extensions - Imported calendar extension - Use gcc-4.8.1 by default - Improve hhvm command line parsing logic - Fix register_shutdown in session_set_save_handler to match PHP 5.4 - Add "native" functions for use in Systemlib - PHP extension source-compatitblility layer - Fix ArrayIterator constructor PHP compatibility - Enable building against libmemcached 1.0.8 - Debugger: $_ not cleared but still printed after exception - Fix clone of SplPriorityQueue - Debugger: Fix bugs when multiple threads hit the same breakpoint - Fix several namespace bugs - Several PHP compatibility fixes for ArrayObject and ArrayIterator - Fix list assignment with collection literals - support "tuple(...)" in initializer expressions - HHVM should compile with libmemcached 1.0.9+ - Support "(new Vector {..})->method()" style syntax - use trigger_error in PHP for Redis user errors - multiple simplexml fixes - fixed serialize/unserialize for SplObjectStorage - Implement ReflectionParameter::IsCallable() "Achiote" 19-Aug-2013 - Async stack traces in the debugger via the "wa" command - Fix late static binding in static closures - Fix breakpoints on generators - Add SplObserver and SplSubject interfaces - Update Iterable interface and add toArray() method - Allow __get for undefined properties - Implement get_included_files() - Limit use of huge pages "Churrasco" 05-Aug-2013 - Implement stream_is_local - Implement read support for .phar - Implement assert with string arguments - Implement RecursiveArrayIterator - Implement php_strip_whitespace() - Support for timeouts in cli mode - Closure allocation optimizations (~2x faster to allocate a closure) - Implement Redis session handler - New memory profiler, hhprof, with pprof compatible output - Update isset($string[$k]) and empty($string[$k) to PHP 5.5 semantics - Fixed a few parser bugs - Fixed a few bugs with token_get_all() - Fix (string)$obj semantics when __toString() is not defined "Tamale" 22-Jul-2013 - Optimize vector-shaped Arrays (arrays with keys in range 0..size-1) - Enable HHBC by default in debug builds - Implement SplObjectStorage::getInfo() - Initial rough draft of xhpast2, a replacement for xhpast - fix compilation on Ubuntu 13.04 - OSX changes, next round - Modify PHP's ext/standard/math/tests/(pow|abs).phpt to be HHVM friendly - add XHP comment syntax based on http://www.w3.org/TR/REC-xml/#sec-comments "Wasabi Peas" 08-Jul-2013 - always_assert when we run out of TC space - Initial changes to get HHVM compiling on OSX - Consolidate ObjectData and Instance - Prototype heap tracing framework & Heap profiler - Better JIT code generation for Mod and Div - Fixes to enable compilation with clang - Support for yield k => v - Make HHVM's command line parsing closer to PHP - Implement Redis extension - Implement LimitIterator from SPL - add SessionHandler from PHP 5.4 - Numerous Debugger fixes and new developer docs for Debugger - Ported many extension tests to PHP