===== Release Manager =====
??
===== Timetable =====
* NEWS: [[http://cvs.php.net/viewvc.cgi/php-src/NEWS?view=markup&pathrev=HEAD|6.0]]
===== Todo items =====
several items taken from here http://derickrethans.nl/files/meeting-notes.html
- unicode (this section has not been updated in a while and so its probably better to look at the [[http://cvs.php.net/viewvc.cgi/php-src/unicode-todo.txt?view=markup| todo]] and [[http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?view=markup| progress]] overviews in cvs, and the [[http://www.php.net/~scoates/unicode/|progress tool]])
- stick with IS_STRING and IS_UNICODE as the only internal string types **DONE** (dmitry)
- remove old parameter parsing API and replace with one that supports unicode related functionality
- add support for a flag for extension if they should be loadable when unicode is set to off
- add unicode to pdo (wez)
- make build system bail out if an supported ICU library (perferably 3.4, which we lobby for in distributions) could not be found **DONE**
- implement "filename_encoding" setting and return binary string when functions such as readdir() encounter a filename that can not exist in the encoding that is set
- implement caching of the last 3 opened collators
- == should be the same as strcmp, and not using collation. strcoll() does.
- use locale based functions where they make sense, and pick a conservative default. Examples are strtoupper/strtolower, stristr etc..
- provide an additional error mode for character set conversion failures that throw exceptions on failures.
- In run-tests.php output something at the end of c's main() to capture SEGVs during php shutdown in runt-tests.php, probably change run-tests.php to catch SEGV (marcus)
- deprecate ext/ctype in 6.0 and move to pecl in 6.1 in preference of unicode replacement functions (andrei)
- JIT fetch & (de-)encode of auto-globals (pierre)
- cleanups
- Get rid of the BC crap in ext/date (derick)
- remove register globals **DONE** (pierre)
- remove all magic_* and throw E_CORE_ERROR when set **DONE** (pierre)
- safe_mode/open_basedir
- remove safe mode and throw E_CORE_ERROR when set **DONE**
- Make the call-time-pass-by-reference an E_STRICT error. **DONE** (dmitry)
- make "var" an alias for "public" and remove the warning for it. **DONE** (?)
- Assign "new" by reference will throw an E_STRICT error. **DONE** (?)
- Return "new" by reference will throw an E_STRICT error. **DONE** (dmitry)
- remove support for Freetype 1. **DONE** (pierre)
- remove support for GD 1. **DONE** (pierre)
- enable dl() only when a SAPI layer registers it explicitly. **DONE** (dmitry)
- Clean up the code, so that FastCGI mode can not be disabled. **DONE** (dmitry)
- remove register_long_arrays setting and throw E_CORE_ERROR when set. **DONE** (dmitry)
- Try to find a way to see how case sensitive identifiers could be gradually be implemented, but do not "fix" it for PHP6.
- remove support for dynamic break levels. **DONE** (dmitry)
- change the default behaviour of microtime() to return a float. **REMOVED - USELESS**(davidc)
- PECL
- decide on moving DB extensions out of the core later.
- move other extensions to PECL on a case by case basis
- regexp (anthony)
- make ereg an extension **DONE** (Jani)
- core of PHP should be made to work with PCRE so that we can safely disable ereg **DONE**
- ext/dba should be handled in the same way as PDO through drivers maintained in PECL. but all the handlers stay in the distribution.
- move mime_magic from the core to PECL **DONE**
- ext/soap
- ext/soap will be turned on by default
- implement some of the security extensions to ext/soap (rob)
- watch axis2 based implementation development
- make use of the HTTP streams layer (dmitry)
- add ext/bitset to core once CS violations are fixed (Scott)
- Engine additions
- [[http://derickrethans.nl/files/meeting-notes.html#allow-interfaces-to-specify-the-construct-signature | Allow __constructor to be part of an interface]] **DONE** (marcus)
- add a new 64bit integer that is always 64bits regardless of platform with the cast name for this new type is (int64) and internally we use IS_INT64 and RETURN_INT64 etc..
- extend "break" by allowing breaking to a label. **DONE** goto label. (sara, dmitry)
- add an ifsetor() construct with the middle value for the ?: ternary operator dropped **DONE** (marcus)
- add foreach( $a as $k => list($a, $b)) {} syntax (andrei)
- speed up @-operator and ask andi for approval (ilia, marcus)
- add ability to allocate persistent zvals in PHP.
- add f/F to catch 'callable' with parameter parsing api in fcc/fci **DONE** (marcus)
- OO changes
- [[http://www.zend.com/zend/week/week248.php#Heading3 | Property overloading RFC]] aka abstract/virtual properties and get/set handlers (derick)
- object casting to primitive types BC mess (derick)
- optional typehinted parameters **DONE** (derick)
- add internal flag only to force calling of the parent constructor
- re-use the "static::" keyword to do runtime evaluation of statics. **DONE**
- [[http://marc.info/?l=php-dev&m=118355320225178&w=2| add namespace support]] **DONE** (dmitry)
- add support for type-hinted return values.
- move the reflection code to its own extension. **DONE** (marcus)
- implements the ReflectionClass cache in struct zend_class_entry*. (marcus)
- changing var_dump() output to include class names in member descriptions **DONE** (marcus)
- class operator cleanup (static=static, non-static=non-static and no more ZEND_ACC_ALLOW_STATIC) (marcus)
- Other Additions/Changes
- allow opened files to be deleted on windows [[http://www.zend.com/zend/week/week248.php#Heading7|Streams]] (wez)
- APC
- include APC in the core distributions (turned off by default) and switch to mmap as default shared memory storage.
- ability to move autoloaded main classes in apc's class lookup preventing the overhead of doing the inheritance process all the time. (marcus)
- include the patch' real-path fix from hardended php **DONE** (realpath reimplemented by Dmitry)
- include the protection against HTTP Response Splitting attacks (header() shouldn't accept multiple headers in one call) from hardended php
- add sand boxing if we have a rock solid implementation (sara)
- go over the engine and extensions and make sure only E_ERROR is used where the engine is in an unrecoverable state.
- add E_STRICT to E_ALL **DONE** (dmitry)
- prepare a patch that disallows mixing different open/close tags. (jani)
- look at creating a solid plan to rewrite build system and when there is a volunteer to implement it.
- [[http://www.zend.com/zend/week/week248.php#Heading7 | URI handling and XML]] **DONE** (rob)
- GIF Write support and animated GIF (pierre)
- Full synchronisation with Boutell's GD (to and from php) (pierre)
- Output Control
- rewrite **DONE** (mike)
- revisit existing output handlers (mike)
- add php native mysql driver aka mysqlnd **DONE** (georg, andrey)
- [[http://bugs.php.net/bug.php?id=27792 | add support for files >2GB]] once native 64bit integers are implemented (wez)
- MFB add RFC1867 fileupload processing hook **DONE** (arnaud)
==== Under discussion ====
- cleanups
- safe_mode/open_basedir
- unbundle safe_mode_exec_dir from safe_mode and keep it (rasmus) (take a look at [[http://tony2001.phpclub.net/dev/tmp/bugs_29840_31618.diff |this patch]] too)
- new ini option: open_basedir_for_include which would allow using include/require(_once) on an expanded set of directories (sara)
- [[http://marc.info/?l=php-dev&m=117640641605813&w=2 |kill "<%" but keep ""]] (anthony)
- PECL
- fileinfo
- move the Fileinfo extension to the core, and enable it by default.
- Fileinfo extension should be updated to only load its database once on MINIT.
- Engine additions
- [[http://marc.info/?l=php-dev&m=117639301119852&w=2 |add ZEND_ACC_READONLY]] (marcus)
==== Undiscussed Items ====
- reference mess (once and for all) (derick)
- Only Unicode and binary string types. (andrei)
- Unicode-related errors should be exceptions
- keep user-visible API unified: no separate parse_url() for IDNA
- hash hook or interface (george)
- add autoconversion for parameter parsing api (marcus)
- add a way to get the internal object directly by parameter parsing api (marcus)
- get rid of *_ex() functions in engine where possible (marcus)
- provide a a replacement for the GD extension, being maintained and easy to extend (pierre)
- "ext/pimpmydate", new date/time features, real OO interface (pierre)
- throwing exceptions in SoapServer and catching them with SoapClient (korving)
- a non-bankers-round round() variant (korving)
- being able to use array() when defining constants (korving)
- regular expression switch-matching (korving)
- add SRM (amico)
- add support for dangling commas
- fix openssl/curl to use stream transports
- provide a global __call for non existing functions (george)
- reimplement ext/zlib based on pecl/http code (mike)
- Replace bison scripts with lemon. This will fix the memleak issues of the parser, make the parser threadsafe and reentrant and allows to use emalloc on temp blocks automatically. (marcus)
==== Dropped Items ====
- items that have been marked deprecated since the dawn of PHP 4, and various function aliases (rasmus)
- Support for old type constructors (ezcLogMessage::ezcLogMessage()) (derick)
- SimpleXML on by default
- remove ext/mysql (georg)
- Implement inheritance rules for type hints. (marcus)
- add named parameters
- all fatal errors to become exceptions
- Using an undefined property in a class with defined properties should be a FATAL error, alternatively there could be some flag mechanism to mark files/classes etc as following "strict" fules (derick)
- add possibility to prevent dynamic class rewriting as in: "if (...) class {...} else class {...}" (marcus)
- make function names match CS and unify parameter order (derick)
- add Typehinted properties (marcus)
- Allow foreach() without as part and/or foreach() with special empty handling "forempty(); foreach();" (marcus)
- improved garbabe collection for long running scripts (georg)
- add debugger (georg)
- add support for
- multiple inheritance (korving)
- a 'finally' block for exception handling (korving)
- ini run_tests_mode=(on|off) to suppress unicode/string difference in var_dump() for run-tests.php (marcus)
- Cleanup for {} vs. [] **?????**