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 => &$val) syntax. right now we cannot traverse an array without copying each element. * 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. * add try..catch/throw exception handling global ------ * when used in standalone (skell-script like) mode don't urldecode arguments passed to php. right now it's not possible to say /usr/local/bin/php somescript.php dog+cat.txt as "dog+cat.txt" will arrive in php as "dog cat.txt". * make everything on the language-level independent of your locale setings. * always build the standalone executable as well as the chosen SAPI target. * make sure all source files have the "right" copyright. * the following modules still use PHP3_TLS_*() macros (and thereby don't work in ZTS mode): ext/db/db.c, ext/gd/gd.c * make sure that all ZTS globals get destructed. Most ts_allocate_id() calls should have a dtor entry. * activate all extensions by default that don't rely on external dependices. (eg ftp) * --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?). * on some platforms unimplemented function will just do nothing (e.g. symlink) they should print a warning or not even be defined! * implement javadoc based function docs template system. * use thread-safe resolver functions (either require BIND 8 or adns). * provide optional IPv6 support. * make SAPI conform to CGI/1.1. Currently, all SAPI modules define REMOTE_ADDR etc. themselves and reach only various level of compliance. * 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. * add aliases to functions to conform to new naming conventions, e.g. str_to_upper(). * see what functions might need to be changed to use HashPosition, so that the internal array pointer is not affected. documentation ------------- * add remarks in the documentation which functions are not implemented on win32. * add remarks in the documentation which functions are not binary-safe. * improve documentation for the sablotron extension * update curl documentation * write documentation for the bzip2 extension * write documentation for the zziplib extension ext/curl -------- * Use the cURL write handler to save data for use when returning data or outputting data. * Have a warning scheme for when people use unsupported features. ext/dav -------- * rewrite. 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/pcre -------- * Allow user to set PCRE_NOTEMPTY, PCRE_ANCHORED at execution time, maybe * add option to preg_grep() to return entries that _don't_ match ext/sablot ---------- * Re-write the error handling and reporting interface * Cleanup the underlying code a bit * Add proper support for the message handlers ext/session ----------- * 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 classname during deserialization ext/sockets ----------- * Make the extension work on windows (Daniel Beulshausen) * Make the extension work with Solaris and the Sun GCC ext/standard ------------ * add a version number to data serialized via serialize(). * array_add(). (Andrei) * possibly modify parsing of GPC data to automatically create arrays if variable name is seen more than once. * implement regex-cache for url-functions. * stri_replace(). (Andrei) * move socket related functions to fsock.c. * NOT binary safe: strtok() basename() dirname() strrpos() strrchr() strip_tags() * rewrite win32 SMTP code to be useable for *ix to, maybe as a (default) module of its own (Hartmut) ext/zziplib ------------ * more fully support the zziplib api ext/wddx -------- * See if we can support the remaining datatypes: dateTime binary recordset http://www.wddx.org/WDDX_SDK_10a/7__References/WDDX_DTD.htm (Andrei) * implement wddx_packet_as_javascript(). (Andrei) other cool stuff ---------------- * PVM extension