cpython/TODO

646 lines
16 KiB
Plaintext

======================================================================
Things to do before releasing Pyton 1.4 the final cut:
Win/NT specific things:
... pyc files remain open when imported???
... no control-c or control-break in Windows Console mode???
(implement Mark's hacks) (seems to work now?)
Bugs:
... exception in __del__ when __builtins__ has been deleted
Features:
... simple threading support (with lock) for Tk
... Create and distribute the generic Makefile.pre.in for outside extensions.
Documentation:
... Add section on filesystem interface to tutorial
... Update tutorial for changes in the language & library
... New sections for library reference manual (use NEWS file for hints)
... add stuff to ext.tex about threads and embedded Python
... mention that -2147483648 doesn't work
... mention that 0e0 and 01.0 etc. don't work
Maybe not (yet):
... get rid of 'owner' passed around for newframeobject and evalcode
... Get freeze working for NT? (Sam has one)
... rename init<module> to PyInit_<module>.
... import ni seems to interpret the current directory as a package.
... math.sqrt(1j) should raise TypeError!!! (To fix in getargs 'd' format.)
... add make target that does machdep install; use in "machdepinstall"
... prototype for PyOS_CheckStack() somewhere
... On some Linuxes, ``python -c "print 12" | wc'' produces no output???
... Add INSTALL_ROOT variable to Makefile.in
... More thread testing (Solaris?), wait for David Arnold
... Get rid of more modules: (stdwin, soundex, SGI specific?)
... Use autoconf features to find X11 libraries
... Use more modern autoconf features (e.g. for platform testing)
Done:
(*) get bsddb.c patch
(*) no trailing separator on sys.path[0] please
(*) add PC template for extensions, + instructions
(*) segv on NT after ^Z after import _tkinter
(*) apply(<class>, (), {}) fails while apply(<class>, ()) succeeds
if class has no __init__ method
(*) core dump on complex % or divmod
(*) New last chapter of tutorial explaining new things (use NEWS file)
(*) Update reference manual for complex, power, slice and ellipses
(*) Update Misc/FAQ
(*) Update README for 1.4 final cut
(*) Update documentation for httplib
(*) SyntaxErrors w/o line numbers
(*) More NeXT patches (Bill Bumgarner, Lele Gaifax)
(*) fix file upload in cgi.py from Netscape
(*) Tkinter.Variable.__del__ may cause (ignored) exceptions
(*) Test for -lreadline *without* -lterm{cap,lib}
(*) autotest fails on NT due to 1e-005 instead of 1e-05
(*) Update 1.3 version number and date occurring in tutorial, Misc/FAQ,
Doc/texipre.dat, Doc/boilerplate.tex, Doc/tut.tex example
(*) Fix the freeze script
(*) merge Fred's changes to formatter.py and other stuff in Grail/pythonlib
(*) urllib.py: open_http() has bogosity when proxy and auth used together
(*) Update Misc/NEWS
(*) Get rid of obsolete modules: objc, environment
(*) Try threads on NT?
(*) get rid of remains of access.c
(*) document the fact that __del__ exceptions get lost
(*) print warning when __del__ raises exception (no SystemExit though)
(*) document all new features of string.py and regsub.py
(*) add delitem, delslice to operator.c
(*) get rid of 'or', 'and' in operator.c (or rename to 'or_', 'and_')
(*) Pass LDFLAGS from configure to Makefile?
(*) -L option for -lreadline comes too late
(*) halfbinop PROTO(...) triggers error on Alpha compiler?
(*) operator.c is not K&R C nor is it ANSI C
(*) some complex numbers code is not K&R
(*) More AIX sharedlibs patches (Manus Hand, Vlad)
Delete Modules/bindit
Add Modules/python.ext
(*) #undef for fabs in mathmodule.c from Jack
(*) Fix _tkinter.c for use on NT
(*) Remove AIX shared libraries in make clean target
Remove *.sl in "make clean" targets
(*) Sjoerd's optimizations
(*) remove access stmt from docs
(*) Lance's patches for SCO
(*) Jim H's patch to fix power
(*) rip out all traces of 'access'
(*) New extref.tex from Richard Jones
(*) ref.man patch by Anthony Baxter for lambda scope
(*) Add extensions reference to ext.tex
(*) generic/regen is bogus
======================================================================
======================================================================
The following is old and I haven't checked whether it still applies:
(-) many module should export their symbolic constants instead of
relying on a module written in Python
(-) change regexmodule.c to cooperate with other non-python users and
to export the symbolic constants
(-) save/restore sys.exc_{type,value,traceback} around except clauses.
(-) don't call class instance's __del__ more than once?????
(-) add "access" to posix? What name should it have?
(-) add facility to "freeze" lists and dictionaries?
(-) add WNOHANG to posix
(-) support lists in newgetargs()
(-) syntax errors detected during compilation should give line number
(-) dbm.open(): rwmode, filemode should be made optional; same for gdbm
(-) find a bsd hash interface
(-) posix.mkdir(): mode should be made optional
(-) find a more useful order than alphabetical for Doc/libfuncs.tex
======================================================================
(*) use my getopt.c on Linux
(*) get Extensions/X11/Doc checked in and out
(-) investigate PPRC <URL:ftp://ftp.parc.xerox.com/pub/ppcr/>
(*) add buffering parameter to fdopen() and popen()
(-) interface to getdtablesize() in posix
(-) reentrancy with global variables vs. decref in
./Modules/cdmodule.c ./Modules/flmodule.c ./Objects/accessobject.c
./Objects/frameobject.c ./Python/traceback.c
(*) fix reentrancy in list updates?
(-) speed up regsub.gsub
(*) change md5.md5() to md5.new()
(-) try posixenviron.c and merge back into posixmodule.c?
(*) document chown()
(-) add and document chroot() ?
(*) use add gethostname_r and release thread lock when it exists
(-) Add `@CFLAGS@', `@CPPFLAGS@', and `@LDFLAGS@' to `Makefile.in'
(-) modules should be able to define a module destructor hook
(-) destroy modules in reverse order of importation?
(-) make array a standard built-in object
(-) makesetup should accept .o files without corresponding .c file
(*) use autoconf 2.0
======================================================================
Release 1.1.1 (10 Nov 1994)
======================================================================
(-) try Boehm/Dehmers/Weiser conservative garbage collector
(*) implement new 'flatten' module
(-) document new Python/C API
(*) __import__, module imp
(-) add various things to module dictionary, e.g. pathname, dictionary
where found, __version__ string?
(-) pass dict of builtins to exec / execfile / eval ???
(?) stack frame correspondence problem (Jim Roskind)
(probably solved by err_fetch / err_restore)
(-) make lots of places use newgetargs
(*) no tp_str member in typeobject
(-) readline 2.0 on sequent has ^C problem (works only first time)
(*) add explanatory comments to Setup (especially about SGI modules
like 'cd')
(-) need to add truncate() and ftruncate() to posixmodule.c (Windows:
chsize(fd, size) (solution: added to file objects instead)
======================================================================
Release 1.1 (11 Oct 1994)
======================================================================
(-) improve performance of list.append/insert etc. by keeping high/low
watermark instead of realloc'ing each time?
(-) findmethod should cache (also findmember?)
(-) sysget("check_interval") is called before each method call which
breaks dictlookup caching
(*) core dump on import of ridiculously long module name
(-) core dump on repr / print of deeply nested or recursive object
(*) parsing from string should calculate line numbers
(-) whrandom doc needs update
(*) mpz power is still binary insterad of ternary
(*) design interface to call arbitrary asynchronous routines
(*) whrandom.set...(0,0,0) doesn't generate random numbers
(*) Lance's latest curses additions
(*) Jack's new code:
(*) new xxmodule.c
(*) mac has type for .pyc files
(*) should run .pyc files when passed as command line argument
(*) all new all singing all dancing freeze script
(*) make clean should remove *.so and not Makefile.pre
(-) fix signalmodule.c to re-establish SIGC[H]LD handler
(*) try out Kees Blom's railroad diagram generator
(-) redesign error handling (cf. Donald's mail)
(*) do MPW and THINK still not support sys_errlist? Indeed not (neither).
(-) does MPW 3.2 need the MPW_881_BUG defined in Parser/acceler.c
(-) rename MPW_3_1 define (which really means 3.x)
(*) incorporate urlparse.py, uu.py
(*) rewrite instance __getattr__ etc. to store ptr in class instead of
instance -- also have separate __delattr__
(-) add warning to docs about sys.exc_traceback and sys.last_traceback.
(-) Some stdwin wishes:
(-) stdwinmodule should keep track of textedit rec's per window
(in a chain) so it can unlink them when the window is closed
before the te rec
(-) textedit flashes at return or backspace
(-) there's no way to show the text caret after a multi-line paste?
(*) termios module
(*) put signal patches out separately
(-) latex docs for signal module
(*) More MPW and Mac changes
(*) Sjoerd's compileall script
(-) systematically create /usr/local/lib/python/<machine>-<os>/
subdirectories, with a lib/ subdirectory containing the lib*.a
files etc.
(-) need newer DOS binary (16 bit version doesn't do default args)
(*) support for dynamically loadable libraries in makesetup and Extensions.
e.g. add a make rule to build .so files (unfortunately need to figure
out what ld option is needed) (more appropriate for makesetup
script?)
(*) Move tkinter into the standard Modules directory; Tkinter c.s. to
Lib/tkinter etc. (???)
(-) document Tk
(-) class browser
(-) interactive Python GUI (a la NT thingie)
(*) speedup finddfa (and classify?)
(-) more stuff under CVS (demo, extensions)
(*) Mac port of 1.1
(*) Mac port of STDWIN 0.9.9 to THINK C 6.0
(-) use const for char * parameters (and many more) where possible
(-) The Great Renaming!
(*) redo __xxx__ operators for class instances
(-) document __getattr__, __setattr__
(*) add __delattr__ to class instances
(-) many things that take strings should also take arrays of chars
(-) add list of existing extensions to FAQ
(-) update "recent additions" chapter in tutorial
(-) rewrite "output formatting" chapter in tutorial
(*) pass OPT from environment via configure to Makefile
(*) version.c should be recompiled for each link
(*) stropmodule should export find/rfind instead of index/rindex
(*) add __getattr__, __setattr__ to class instances
(*) fix pow(x, y, z) for integers
(*) add tuple(seq) to turn any sequence into a tuple
(*) Win32s for PC
(*) integrate NT changes
(*) write a script and add a "Make" rule (perhaps) that changes
#!/usr/local/bin/python to something else in all scripts around.
(*) int*int overflow check shouldn't doubles on alpha (cf. John Tromp's mail)
(*) add signal.alarm()
(*) when abort()ing because of unexpected exception, print a message
first (Jack)
----------------------------------------------------------------------
(from BUGS1.0.1)
----------------------------------------------------------------------
(-) document addpack, urllib, ...
(*) import.c from JaapV
(*) document os.exec*
(*) name sunaudiodevmodule.c is too long
(*) play with / include SUIT interface
(-) make regsub.[g]sub() optionally case insensitive
======================================================================
(*) ought to use features from autoconf 1.8
(*) errors in __repr__() are handled wrong when called from format
(*) long(0x80000000) has wrong value!
(-) hex(0x80000000) shouldn't have sign (?)
(*) need way to set buffering at file open time
(*) need way to force stdout unbuffered
(*) restart CVS tree
(?) build shared libs for SunOS 4.1.3
(-) dynamic linking on the Mac (is this a dream?)
(*) X patches from Adrian Phillips
(*) Jaap's freeze script
(-) Incorporate with contrib status:
- additions to glmodule by rg3h
(*) Jaap's posixfile module (with locking)
(*) pthreads interface
(-) Later:
- put the offending object in IOError and posix.error
- make module marshal work with user-defined file-like objects
- built-in help?
- hierarchical module names?
Big plans:
- allow separate interpreters (a la Xt's Applocation Contexts, and Tcl)
- great renaming
- complete reflexive nature of the language, e.g. have interfaces et
create any kind of object
(*) GUI interface a la Tk
======================================================================
For FAQ:
(*) why don't strings (numbers, tuples, ...) have methods / attributes
(*) why are strings / numbers / tuples immutable
why don't list methods return self
======================================================================
PM/TODO list after Egypt (from mailing list):
make .pyc files executable (how?)
thread status and improvements (lock stmt; signal/wait)
optional optimizations
pthread migration
(*) test/incorporate new SUIT
shorten excessively long filenames (sunaudiodevmodule.c)
(*) default parameter values
multiple interpreter objects
(*) import shlib bug (irix5.2) (reload, dlclose)
(*) addpack.py
(*) newmodule.c (or other hacks to create new modules, classes, functions
etc. from their components)
persistency
new Dbhash.py, dbhash library
(-) reraise; or raise 3rd param for traceback?
-or- except type, value, tbackobjec
(-) redesign exceptions from scratch?
(-) dbm objects miss items(), values() methods
(*) jar's new profile
(-) answer q about coerce()
(*) reconsider pass [expression] ??? -or- don't print non-interactive
exprs -or- option to suppress printing non-None expressions
(*) should be able to hash code objs (add fns to convert between lists/tuples)
(-) describe() ?
(-) distribute demo2 with Holmes
(*) re-reply on try-continue
(-) classes are too slow
(-) add += etc. ?
optimize tuple = tuple
allow (a, b) = [1, 2] and [1, 2] = (1, 2) ???
wustl is not un the northwest of the US?
(*) MPW doesn't like \000 in string literals?
MPW patches, unixemu patches
prepare tar files with
- mac think projects (*)
- mpw makefiles
- dos makefiles
- mac unixemu lib
explain rules about == vs. 'is' for strings (* by others on the list)
(*) bug in ceval.c DELETE_FAST
(*) possible optimize LOAD_NAME -> LOAD_GLOBAL
get dos python with suit (inesc)
(*) docs for try/continue are wrong and unclear
better hashing fn?
(*) add improved nested indent to python-mode.el
(*) add a section to tutorial on "new" features
rewrite section on formatting in tutorial
======================================================================
TODO-TOO list:
test for overflow when converting python long to float
lift restrictions on tuple or list in many cases
(*) allow long ints with sensible values for getargs "i"
(*) multiline string literals
what to do about 64-bit int literals (on 64-bit machines) in .pyc
files? (Currently truncated w/o warning!)
DOCUMENTATION UPDATE! E.g. ref.tex doesn't describe:
(*) - line joins w/o backslash
(*) - double-quoted strings; \" in strings
- more?
Should double-check all changes with docs!
(?) Interrupting output still sometimes doesn't call clearerr() properly
sometimes ghost errors when interrupting during debugging in
'continue' mode?
typing a comment to a primary prompt shouldn't issue a secondary prompt
readline: add hooks to recognize Python syntax and to expand Python
commands and names
should have absolute pathnames in function objects
in general check that all the exceptions are modernized and that the
messages aren't giving the same error twice (e.g., stdwinmodule.c!)
- check read/write allowed for file objects
- introduce macros to set/inspect errno for syscalls, to support things
like getoserr()
======================================================================
DOS/Windows Python
(???) command line options?
(*) os.system()
(???) interrupts
(???) wrap
(*) pc module
(*) dospath.py
DOS/Windows Python -- TO DO
(*) memtest from config.h
(*) copy sources back
(*) build DOS version
(*) distribute 386 version
(*) Mac 1.0.1 release?
======================================================================