php-src / TODO

Things to do or at least think about doing in the future. Name in
parenthesis means that person has taken on this project.

    * allow foreach ($array as $k => &$val) syntax. right now we cannot 
      traverse an array without copying each element.
    * look at replacing c-lib call tolower().

    * make everything on the language-level independent of your locale setings.
    * always build the standalone executable as well as the chosen SAPI 
    * 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/dav/dav.c, ext/db/db.c, ext/gd/gd.c, ext/ldap/ldap.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.
    * 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.

    * add remarks in the documentation which functions are not implemented on win32.
    * add remarks in the documentation which functions are not binary-safe.

    * rewrite.

    * port to mcrypt-2.6 or later

    * 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.

    * have a non-greedy option for preg_replace().
    * have an option for preg_grep() to return keys as well.
    * update the online docs from version 3.1 man page

    * implement a call to set a session read-only to overcome 
      the need to serialize frame-loads.
    * maybe implement finer-grained session variables that could be 
      locked individually.

    * add a version number to data serialized via serialize().
    * array_add(). (Andrei)
    * implement pathinfo()
        $a = pathinfo("/some/file.bla");

        => array("dirname" => "/some/",
                "basename" => "file.bla",
                "extension" => "bla");

        We could also make it return just one part as a sting if used
        like this:

        $a = pathinfo("/some/file.bla", PATHINFO_BASENAME);

    * possibly modify parsing of GPC data to automatically create arrays if
      variable name is seen more than once.
    * implement regex-cache for url-functions.
    * strcase_replace(). (Andrei)
    * move socket related functions to fsock.c.
    * get_defined_funcs(), get_defined_vars().
    * NOT binary safe:

    * implement __sleep() and __wakeup() the way serialize()/unserialize() do.
    * See if we can support the remaining datatypes:

    * implement wddx_packet_as_javascript(). (Andrei)

other cool stuff
    * PVM extension