Implement __toString() for reflection classes
[hiphop-php.git] / hphp / NEWS
blob6df54ad614e884dbb9b4fee7849d41f103ae314a
1 NEXT
2  -
4 "LL Cool J"
5  - Over 200 other bug fixes (go lockdown!)
6  - Every HDF setting is now available as INI
7  - Cut session_id() size by 1/2
8  - Added 'Z' format string for pack/unpack
9  - We now build on clang
10  - Fix pcre cache to not fatal when full 
11  - Implement $php_errormsg
12  - Adding -n CLI option to hhvm php mode 
13  - Fix substitution of invalid UTF8 sequences in htmlspecialchars
14  - FastCGI: Use SCRIPT_FILENAME as the PHP script to run
15  - Can create DateTimeZone's from abbreviations
16  - Put all fastcgi params into $_SERVER
17  - Many DOM classes are now serializable
18  - Define the xhp tokens
19  - Many reflection changes for perf and compatibility
20  - Default fastcgi to listen on 127.0.0.1
21  - remove register_cleanup_function
22  - Map: reserve()
23  - Set: retain(), reserve(), addAllKeysOf()
24  - {Set|ImmSet|Vector|ImmVector}::fromKeysOf()
26 "Kanye West"
27   - Backport fix for CVE-2011-2202
28   - Interfaces {Keyed}Container match arrays *and* collections, not iterables
29   - Added ** and **= operators to HHVM and more compatibility fixes with PHP5.6
30   - Fixes and improvements to collections
31   - Replace json decoder with json-c library
32   - Document VMRegAnchor and isVMFrame()
33   - Improvements to array iterator code
34   - Improvements to the type checker
35   - Allow parser to be generated with bison 3
36   - Improvements and speed up to reflection code
39 "Jay-Z" 9-May-2014
40   - Make handling of code.hot overflows more robust
41   - Catch server errors sooner
42   - Fix segfault and infinite recursion in fileinfo extension
43   - Resolve systemlib constants at compile time
44   - Resume resumables natively
45   - Import round() table optimizations from php-src
46   - Delete bytecode Peephole optimizer
47   - Remove most of annotation.cpp, and some other code gated on !UsedHHBBC
48   - Create phis for locals
49   - Fix free of "" in rfc1867PostHandler
50   - Add firstValue(), firstKey(), lastValue(), lastKey() to collections
51   - Add concat() to collections
52   - Clarify Hack license
53   - Add CakePHP3 to test runner
54   - Better error when TC is full
55   - Add hash_equals() from PHP 5.6
57 "Insane Poetry" 24-Apr-2014
58   - Support for PHP 5.6 variadic ...$args syntax for func declarations
59   - Open source HHMeasure, a simple and extensible microbenchmarking tool
60   - Added a new time-based sampling profiler (Project Xenon)
61   - Fix PCRE unicode handling
62   - Convert Zend compatibility layer and various extensions to HNI
63   - Encode execution mode (eager or resumed) into SrcKey
64   - Merge eager and resumed parts of async functions
65   - Rework various async / continuation bytecode instructions
67 "House of PHPain" 1-Apr-2014
68   - Allow direct arg passing with up to 15 params (7 if at least one is a double)
70 "Ghostface Killah" 17-Mar-2014
71   - Remove "HipHop" from error messages
72   - Add __IsFoldable user attribute for const-foldable functions
73   - Add __Native("NoFCallBuiltin") UA for builtins which need an actrec
74   - Add support for testing different outputs in repo mode
75   - Implement remaining functionality from intl extension
76   - Implement XSL extension
77   - Implement Stream Filters
78   - Improve php.ini support and get ready to kill HDF files
79   - Parse config files as ini files, unless filename contains '.hdf'
80   - Various fixes to Redis, JSON, SPL, DateTime, MySQLi, and others
81   - Remove C<T>Ref typedefs (use const T& now)
82   - JIT default on in command line mode
83   - gethostname() just returns what the syscall returns (Zend compat)
84   - HHBBC turned on in the build for facebook.com
86 "Fifty Cent" 3-Mar-2014
87   - Array parameter type constraints implicitly cast collections to arrays
88   - Fix issues with feof and fwrite
89   - Fix issues with sleep and inaccessible properties
90   - Dump a jemalloc pprod dump when a request hits OOM
91   - Make method_exists work with interface inheritance
92   - Fix crash in preg_replace with /e
93   - Support filename and content type in Curl uploads
94   - MySQLi fixes
95   - Handle relative paths in is_dir
96   - Add string conversion for array_fill_keys
97   - Implement various Imagick functionality
98   - Implement CUROPT_PROGRESSFUNCTION
99   - Implement PHP 5.6 __debugInfo() magic method
100   - Raise warnings when return type annotations mismatch
101   - Fix nested ArrayObject assignment
102   - Switch many ini settings to thread-time binding
103   - Clean up memory stat tracking
104   - Immutable collections are now prefixed with Imm instead of Fixed/Frozen
105   - Clean up type parameter for CheckType-related IR opcodes
106   - Remove legacy linear-scan register allocator and Eval.HHIRXls option
108 "Eminem" 18-Feb-2014
109   - reenabled jemalloc tcache flush for idle threads
110   - array_combine now performs __toString conversion on objects in $keys
111   - Allow streams in move_uploaded_file
112   - Fix a bug double closing a UserFile
113   - Warn when first arg to call_user_func is an object with no __invoke
114   - kill userland hdf functions
115   - Final method reports itself as final
116   - Implement IntlCalendar
117   - Disallow create_function in RepoAuthoritative mode
118   - Case-insensitive check for Accept-Encoding: gzip
120 "Donald Glover" 3-Feb-2014
121   - Support for "::class"
122   - Enable FCallBuiltin for HNI functions
123   - json_decode parity with PHP 5.4
124   - Fix race condition with profiling vs. non-profiling functions prologues
125   - Implement ini_get_all()
126   - Begin conversion of runtime options to INI
127   - Fix potential PGO-mode crash
128   - Fixes and enhancement in IR printing
129   - Vector and Set now supported by:
130     array_{shift,unshift,fill_keys,reverse,flip,size,chunk}, min, and max
131   - StableMap is now an alias for Map, which retains insertion order
132   - Map moved to HH namespace
133   - Fixes in XLS spilling of SIMD registers
134   - Support SCRIPT_FILENAME in FastCGI
135   - Implement stream_context_{get,set}_default
136   - Support for Intel VTune Amplifier XE
137   - Rewrite of SimpleXML
138   - Several HNI conversions, and a helper script
139   - Move Pair to HH namespace
140   - Fix get_included_files ordering
141   - Fix $_SERVER and $_ENV in FastCGI
142   - Update timelib to php 5.5.8
143   - Some dead code removal
145 "Coolio" 21-Jan-2014
146   - Turn on Region JIT
147   - FastCGI fixes, perf improvements
148   - ext_zend_compat fixes
149   - Turn on XLS Register Allocator by default
150   - Fix server stats reporting
151   - 'num' scalar typehint that accepts both ints and floats
152   - fix support for typedef'd namespaces
153   - don't swallow fatals when autoloading
154   - Map collections learned the in-place retain() and retainWithKey()
155   - rename Set::difference() to Set::removeAll()
156   - Update Set to retain element insertion order
157   - remove APC stats
158   - Fixes for ARM mode
159   - FrozenMap collection
160   - Deprecated Vector|Set|Map::put() method removed
161   - == between Frozen{Vector|Set|Map} and {Vector|Set|Map} now can return true
163 "Beastie Boys" 6-Jan-2014
164   - Support lex-time binary constants (eg. 0b10111)
165   - StreamWrappers now support rmdir, mkdir, rename and unlink
166   - Miscellaneous PHP5 compatibility fixes
167   - Default StatCache to off
168   - Miscellaneous FastCGI fixes
169   - Miscellaneous region compiler fixes
170   - Map and StableMap collections use the same underlying implementation
171   - Trait requirements enforced
172   - hhprof performance improvements
173   - Add array to string conversion notice
174   - Add RaiseNotice IR opcode
175   - Fix VirtualHost.<name>.Pattern matching
176   - Fix various memory leaks (pdo_parse_params, Gen*WaitHandle)
177   - Import a lot more Zend tests that used to crash or hang
178   - Clean up base.h
179   - XLS register allocation cleanup
180   - Enable region compiler by default for JIT functions in ahot
181   - Fatal on eval() in RepoAuthoritative mode
182   - Enable LTO for HHVM
183   - Fix a few SPL compatibility issues
185 "Appleseed" 23-Dec-2013
186   - Fix issues with DOCUMENT_ROOT in fastcgi
187   - Better type inference for collections and builtins in repo mode
188   - Shorter syntax for lambda expressions w/ automatic captures
189   - Parser support for trait require clauses
190   - Move FrozenVector and Set to the HH namespace
191   - Fix resource to array conversion
192   - Fix a request local memory leak in foreach of apc arrays
193   - Initial php_odbc API implementation
194   - Implement PHP's hash_copy() function
195   - Experimental tool: Memoization Opportunity Profiler
196   - Various small parity/behavior fixes (in phar, proc_open, filter_var)
197   - A Eval.DumpHhas=1 option to dump hhas for a php file
198   - Better warnings in Set::toArray
199   - Fix the behavior of foreach loops in finally blocks
200   - chmod -x runtime/vm/jit/*.{cpp,h}
201   - Changes to make hhvm build clean with clang-3.4
202   - Fix array_product to not be bug-compatible with PHP 5.2
203   - Change the Map datastructure---preserves order and does faster foreach
204   - FrozenSet collection
205   - Generate pid.map when we unmap text section, for the perf tool
206   - Implemented GlobIterator
207   - Implemented Reflection::export and Reflection::getModifierNames
209 "Tom Yum" 9-Dec-2013
210   - support date.timezone in ini files
211   - implement fileinfo
212   - special comparisons for DateTime
213   - delete unimplemented functions
214   - support for the finally clause in try blocks
216 "Huarache" 26-Nov-2013
217   - Linker re-ordering of hot functions
218   - Huge pages for hot functions
219   - Implement ZipArchive
220   - preg_replace /e support
221   - get_mem_usage() no longer can be negative
222   - Userland file system support
223   - Implement fileinfo extension
224   - wordwrap() fixes
225   - PDO::sqliteCreateFunction()
226   - Implement NumberFormatter
227   - Implement Locale
228   - Implement DatePeriod
229   - Many reflection fixes
230   - Stub out PharData
231   - A ton of performance fixes
232   - A ton of open source framework fixes
233   - FastCGI Server Support
235 "Garlic Alfredo" 11-Nov-2013
236   - teach implode() about collections
237   - fix ini parsing leak
238   - Make array not an instanceof Traversable
240 "Burrito" 28-Oct-2013
241   - Initial support for using FastCGI
242   - Initial support for php.ini configuration files
243   - Log when a nullable (e.g. ?int) is incorrect
244   - Add support for collections to array_diff, array_diff_key, array_intersect,
245     array_intersect_key
246   - tc-print improvements and fixes
247   - Several debugger fixes
248   - More improvements to the experimental PHP extension compat layer
249   - Fixed how parse errors are handled by eval()
250   - Support custom reason for status header
251   - Emit better error message when hhvm's systemlib doesn't load properly
252   - Fixes / clarifications added to the bytecode specification
253   - Lots of other bug fixes, clean up, PHP compat fixes, and JIT improvements
255 "Sausage" 14-Oct-2013
256   - Direct invocation of callable arrays: $f = [$cls_or_obj, 'method']; $f()
257   - ASAN clean
258   - Support dynamically loadable extensions
259   - Support loading mini-systemlibs from extensions
261 "Tabasco" 30-Sep-2013
262   - Fix issues with __toString() functions that return non-string values
263   - Don't allow mock classes to extend collection classes
264   - Smarter memory allocation and scheduling for NUMA systems
265   - Improve profiler performance in the jit
266   - Fix several Zend compatibility issues
267   - Fix several bugs uncovered by ASAN
268   - Add collection support to array_keys, array_values, and array_combine
269   - Return a set-like array from Set::toArray
270   - Add to(Vector|Map|StableMap|Set) methods to collections
271   - Collections convert to boolean false when empty
272   - get_class_vars invokes the autoloader when necessary
273   - Rework the Zend compatibility layer to be more robust
274   - Allow traits to implement interfaces
275   - Support arbitrary expressions inside empty()
277 "Bobotie" 16-Sep-2013
278   - HNI (HipHop Native Interface) for calling C++ functions from PHP
279   - Fix PropertyAccessorMap::isset
280   - Expose more POSIX constants
281   - Fixed behavior of stream_get_contents when default args are used.
282   - Implement str_getcsv, and fix some fgetcsv related issues.
283   - [IPv6] Fix stream_socket_recvfrom & stream_socket_sendto.
284   - [IPv6] Fix socket_sentto_recvfrom_ipv6_udp Zend compatibility.
285   - Optimize closure invocation and __invoke (~3x faster to invoke)
286   - Import gettext extension
287   - string and object allocation optimizations (reduced memory usage for both)
288   - Import YAML extension
289   - Import ftp extension
291 "Kimchi" 2-Sep-2013
292   - Fix order of custom attributes and visibility in ctor arg promotion
293   - Implement CachingIterator
294   - Implement RecursiveCachingIterator
295   - Generalized heuristic for choosing when to inline in the jit
296   - Introduced a Zend compatibility layer to compile extensions
297   - Imported calendar extension
298   - Use gcc-4.8.1 by default
299   - Improve hhvm command line parsing logic
300   - Fix register_shutdown in session_set_save_handler to match PHP 5.4
301   - Add "native" functions for use in Systemlib
302   - PHP extension source-compatitblility layer
303   - Fix ArrayIterator constructor PHP compatibility
304   - Enable building against libmemcached 1.0.8
305   - Debugger: $_ not cleared but still printed after exception
306   - Fix clone of SplPriorityQueue
307   - Debugger: Fix bugs when multiple threads hit the same breakpoint
308   - Fix several namespace bugs
309   - Several PHP compatibility fixes for ArrayObject and ArrayIterator
310   - Fix list assignment with collection literals
311   - support "tuple(...)" in initializer expressions
312   - HHVM should compile with libmemcached 1.0.9+
313   - Support "(new Vector {..})->method()" style syntax
314   - use trigger_error in PHP for Redis user errors
315   - multiple simplexml fixes
316   - fixed serialize/unserialize for SplObjectStorage
317   - Implement ReflectionParameter::IsCallable()
319 "Achiote" 19-Aug-2013
320   - Async stack traces in the debugger via the "wa" command
321   - Fix late static binding in static closures
322   - Fix breakpoints on generators
323   - Add SplObserver and SplSubject interfaces
324   - Update Iterable interface and add toArray() method
325   - Allow __get for undefined properties
326   - Implement get_included_files()
327   - Limit use of huge pages
329 "Churrasco" 05-Aug-2013
330   - Implement stream_is_local
331   - Implement read support for .phar
332   - Implement assert with string arguments
333   - Implement RecursiveArrayIterator
334   - Implement php_strip_whitespace()
335   - Support for timeouts in cli mode
336   - Closure allocation optimizations (~2x faster to allocate a closure)
337   - Implement Redis session handler
338   - New memory profiler, hhprof, with pprof compatible output
339   - Update isset($string[$k]) and empty($string[$k) to PHP 5.5 semantics
340   - Fixed a few parser bugs
341   - Fixed a few bugs with token_get_all()
342   - Fix (string)$obj semantics when __toString() is not defined
344 "Tamale" 22-Jul-2013
345   - Optimize vector-shaped Arrays (arrays with keys in range 0..size-1)
346   - Enable HHBC by default in debug builds
347   - Implement SplObjectStorage::getInfo()
348   - Initial rough draft of xhpast2, a replacement for xhpast
349   - fix compilation on Ubuntu 13.04
350   - OSX changes, next round
351   - Modify PHP's ext/standard/math/tests/(pow|abs).phpt to be HHVM friendly
352   - add XHP comment syntax based on http://www.w3.org/TR/REC-xml/#sec-comments
354 "Wasabi Peas" 08-Jul-2013
355   - always_assert when we run out of TC space
356   - Initial changes to get HHVM compiling on OSX
357   - Consolidate ObjectData and Instance
358   - Prototype heap tracing framework & Heap profiler
359   - Better JIT code generation for Mod and Div
360   - Fixes to enable compilation with clang
361   - Support for yield k => v
362   - Make HHVM's command line parsing closer to PHP
363   - Implement Redis extension
364   - Implement LimitIterator from SPL
365   - add SessionHandler from PHP 5.4
366   - Numerous Debugger fixes and new developer docs for Debugger
367   - Ported many extension tests to PHP