======================================================================
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?
======================================================================
