Things to do or at least think about doing in the future. Name in parenthesis means that person has taken on this project. Zend ---- * Allow foreach ($array as $k => list($a, $b)) syntax for multi dimensional arrays. * Look at replacing c-lib call tolower(). * Make hash API functions work with HASH_OF() to save time. * Native large number support (probably with GNU GMP) * Const'ify APIs. Right now, many functions leave parameters untouched, but don't declare those as const. This makes interaction with other interfaces difficult which pass const parameters to us. global ------ * Make sure that all ZTS globals get destructed. Most ts_allocate_id() calls should have a dtor entry. * on some platforms unimplemented function will just do nothing (e.g. symlink) they should print a warning or not even be defined! (DONE ?) * --enable-all in configure. (--enable-shared=max ...) * make configure print out a summary when it's done (like XEmacs) * replace standard functions which work on static data with reentrancy-safe functions (DONE?). * make SAPI conform to CGI/1.1. Currently, all SAPI modules define REMOTE_ADDR etc. themselves and reach only various level of compliance. * see what functions might need to be changed to use HashPosition, so that the internal array pointer is not affected. * Move most extensions and PEAR packages out of the PHP CVS tree, include them again during release packaging. Other * use thread-safe resolver functions (either require BIND 8 or adns). * implement javadoc based function docs template system. * provide optional IPv6 support (seems to be done?). * find a better way to implement script timeouts. SIGVTALRM is used by some POSIX threads implementations (i.e. OpenBSD) and is not available in ZTS mode. * Implement flush feature suitable for nested output buffers. Streams ------- * Route filestat.c through the wrapper layer; isolate the statcache code so that it is independent of php functions and can be applied to any stream/path. * Implement generalized connection pool for stated protocols such as ftp and http/1.1 (using keep-alive) to avoid having to negotiate new command/request stream for each subsequent call; Possibly store resources in contexts (creating a default context if necessary) to allow segmentation of connection pools. * Add a method to take ownership of the memory buffer in memory streams so that generating string values for zvals doesn't require an estrdup. * bundle and use curl lib for fopen wrapper. documentation ------------- * Add remarks in the documentation which functions are not implemented on win32. * Add remarks in the documentation which functions are not binary-safe. * Update curl documentation (DONE?) * Add developer documentation. * Add detailed documentation for Java extension. ext/curl -------- * Have a warning scheme for when people use unsupported features. ext/oci8 -------- * All OCIFetch*() functions should return 0 for no more data and false on error. * Have a flag that trims trailing spaces from CHAR fields on retrieval. * Make allow_call_time_pass_reference=Off working. * For additional todo information, see oci8.c, in ext/oci8 ext/odbc -------- For PHP 4.3.0: * update all php_error calls to php_error_docref where valid * integrate EXPERIMENTAL ODBC update for use in PHP 5.0, use for testing purposes only. For PHP 5.0.0 * Activate EXPERIMENTAL ODBC codebase update ext/pcre -------- * Allow user to set PCRE_NOTEMPTY, PCRE_ANCHORED at execution time, maybe ext/pcntl --------- * Change internal callback handler to use TICKS * Remove all zend_extension code * Add object callback support to pcntl_signal() ext/pgsql --------- For PHP 4.3.0: * Add pg_metadata() with metadata cache feature. * Add pg_convert() to check and convert array value for query. * Add pg_insert/pg_update/pg_delete/pg_select for simple query. ext/session ----------- For PHP 4.3.0: * session_abort() to abort session. ie: Do not save session data. * Allow unset($_SESSION) or unset($HTTP_SESSION_VARS) to unset session vars regardless of register_globals setting. Other: * Maybe implement finer-grained session variables that could be locked individually. * Write a network-transparent storage back-end with fallover facilities * Provide a callback facility which is executed upon encountering an unknown class name during deserialization ext/standard ------------ * Add a version number to data serialized via serialize(). * Possibly modify parsing of GPC data to automatically create arrays if variable name is seen more than once. * Implement regex-cache for url-functions. * Move socket related functions to fsock.c. ext/wddx -------- * See if we can support the remaining data types: dateTime binary http://www.wddx.org/WDDX_SDK_10a/7__References/WDDX_DTD.htm (Andrei) * implement wddx_packet_as_javascript(). (Andrei) other cool stuff ---------------- * PVM extension vim:et:sw=4:ts=4