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.

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/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:
        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
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.