summaryrefslogtreecommitdiff
path: root/TODO
blob: 5a35e411dff1980ae7dc197002ba71d25fbe3938 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
$Id$

+----
| * -- to be done
| ? -- to be done sometime if possible
| P -- in progress (name should appear in parentheses after task)
| D -- delayed until later date (specify in parentheses after task)
| U -- done, untested
| V -- done
+----

Configuration Issues
--------------------
* properly detect dbm routines when they're in libc
* add the appropriate #define magic for memmove and friends (see
  GNU autoconf info pages for details)
* make it possible to disable support for some extensions (gd, dbm)
* make it possible to build selected extensions so they are
  dynamically-loadable

Core Language Issues
--------------------
* go through PHP2's php.h and see how each special #define might be
  applied/supported in PHP3
* move Treatdata() to language-scanner.lex where hash_environment()
  is called including a decision about priority of variables and moving
  Treatdata() to use hash_add() instead of hash_update() for insertions
  to the symbol table.
* go through FIXME and XXX lines (egrep 'FIXME|XXX' *.[ch])
* make lexer and parser thread-safe
* verify that binary strings are handled correctly
V don't evaluate truth expressions more than once
V make unset() work on arrays (tricky)

Core Functions
--------------
* go through all file functions and make sure they are opened in binary
  mode in win32 if needed (ie copy)
* go through all functions and look at PHP_SAFE_MODE issues
* have a look at return codes of fsockopen() function - we should
  probably RETURN_FALSE and then set an error code somewhere (Rasmus)
* go through FIXME and XXX lines (egrep 'FIXME|XXX' functions/*.[ch])
* add user-level flock() implementation to let people lock and unlock files 
* add "'" modifier to sprintf to group thousands by comma
* Add an improved eval() that doesn't "leak"
? sorting of objects with a user-defined comparison function (like Perl)
  (this shouldn't be expected before 3.1, if at all).


Extensions
----------
* add version strings for all extensions
* Oracle persistent connections
U gd support for windows
* Illustra support (APIS)
? CQL++ support (http://www.cql.com/)
? GNU SQL support (does anybody actually use this?)
? DB2 support (http://www.sleepycat.com/)
? Shore support (http://www.cs.wisc.edu/shore/)
? PGP Interface (use PGPlib?)
? more Perl-like regex handling?

Server Support
--------------
P ISAPI (Shane)
  * process cookies
  * blocking functions
  * make sure it's Microsoft-clean so it can be used with other ISAPI
    implementations
* WSAPI
* NSAPI
  * process cookies
  * check POST method handling code
  * use Netscape memory allocation inside emalloc() and company
* FastCGI support - see http://fastcgi.idle.com/

Win32 Specific
--------------
* implement some kind of syslog->file log support for win95.
* change all file open/read/write functions from c library to win32 
  api file functions.  The win32 api functions handle both disk files
  and network files.  This will allow include and require to use http
  or ftp files as the unix version does, and do away with my
  workaround to support this.  (3.1?)
* implement symlinks via windows shell links (shortcuts).  This will
  work only at the script level and is not a c language level port.

Testing
-------
* truss/strace a typical PHP request and see if there are some system
  calls that could be optimized out
* verify that regression tests exist for all core functions

Miscellaneous
-------------
* remove hard-coded compilation options
? locale issues - funny things happen in PHP2 when the locale is set to
  use , instead of . as the decimal seperator.  ie. 1.5+1.5 = 1
? SSI->PHP3 conversion script
? SQL-based access logging (start with examples/log-*.php3)