blob: 3bb18c0b82afa18cf0cd5d48a61cb9702fd1bc10 [file] [log] [blame]
Guido van Rossum91cb9d21995-04-10 11:47:38 +00001THIS LIST DOES NOT CLAIM COMPLETENESS.
Guido van Rossum5552eb71994-08-05 15:51:00 +00002
Guido van Rossumaf5b83e1995-01-04 19:02:35 +00003==> Status indicators: (-) not fixed; (*) fixed; (?) not sure.
Guido van Rossum5552eb71994-08-05 15:51:00 +00004
5======================================================================
Guido van Rossum2cc9b2b1995-03-10 15:09:12 +00006
Guido van Rossum91cb9d21995-04-10 11:47:38 +00007Problems that are difficult to solve
8------------------------------------
9
Guido van Rossum7b4d4601995-03-22 12:27:16 +000010(-) "f()=0" generates syntax error msg without line number
11
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000012(-) tkinter seems to leave an exception around sometime which breaks
13unmarshalling code objects [hard to reproduce, have added a trap to
Guido van Rossum79dddcb1995-01-12 12:25:42 +000014marshal.c to catch it]
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000015
16(-) destroying all modules may destroy __builtin__ (or other modules)
17while destructors of other modules may still need it [hard to fix --
18could maintain a list of all modules in order of importation so we can
19destroy them in reverse order??? really hopeless -- would have to
20destroy objects in a module in reverse order too...]
21
Guido van Rossum8a30adc1995-01-09 17:54:07 +000022(-) doneimport() should be called *before* the Py_AtExit code is
23called [problem: what if other threads are still active?]
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000024
Guido van Rossum79dddcb1995-01-12 12:25:42 +000025Known portability problems
26--------------------------
Guido van Rossumaf5b83e1995-01-04 19:02:35 +000027
Guido van Rossum76be6ed1995-01-02 18:33:54 +000028(-) arraymodule doesn't compile under Ultrix (FPROTO macro)
29
Guido van Rossum76be6ed1995-01-02 18:33:54 +000030(-) makesetup assumes CCC is the C++ compiler -- not portable
31
32(-) "make depend" assumes mkdep exists -- not portable
33
Guido van Rossum76be6ed1995-01-02 18:33:54 +000034(-) regen calls h2py which isn't defined by default
35
Guido van Rossum76be6ed1995-01-02 18:33:54 +000036(-) HP doesn't compile out of the box (needs LIBS=-ldld or
Guido van Rossum8a30adc1995-01-09 17:54:07 +000037LIBS=/usr/lib/libdld.sl) [hard to test without a HP machine handy]
Guido van Rossum76be6ed1995-01-02 18:33:54 +000038
Guido van Rossum76be6ed1995-01-02 18:33:54 +000039======================================================================
40BUGS present in 1.1.1 and fixed in 1.2
41--------------------------------------
42
Guido van Rossum91cb9d21995-04-10 11:47:38 +000043(*) extraneous fclose() in run_script() in pythonrun.c for .pyc file
44
45(*) __str__ is called if it exists (and then fails) when applying
46str() to a class
47
48(*) mem leaks in inittime() in timemodule.c
49
50(*) mem leak in optimize() in compile.c
51
52(*) mem leak in func_dealloc() in funcobject.c
53
54(*) missing DECREF for result of run_string in exec_statement() in
55ceval.c
56
57(*) missing INCREF in RAISE_EXCEPTION case after gettupleitem() in
58ceval.c
59
60(*) posix.utime gives problems on problems on platforms where struct
61utime members are bitfields
62
63(*) leak in regex module.c:reg_dealloc() -- should free compiled pattern
64
65(*) many uses of macros from <ctype.h> fail with signed characters
66
67(*) compilation on NeXT requires manual editing of the Makefile
68
69(*) tkinter should cast malloc() result
70
71(*) marshal.c (w_object()) triggers GCC bug on DEC Alpha
72
73(*) int/long size bug in range() and xrange() on DEC Alpha
74
75(*) memory leaks in dbm and gdbm modules
76
77(*) refcnt bug in select.select([f], [f], [f])
78
79(*) Should fflush(stdout) before printing traceback to stderr
80
Guido van Rossum2cc9b2b1995-03-10 15:09:12 +000081(*) Linux uses GNU getopt by default which is broken
82
83(*) make sharedinstall references to machdep directory but doesn't
84create it
85
86(*) a file with unmatched triple quotes causes a loop in the scanner
87
88(*) [X]DECREF can cause the interpreter to be called recursively (for
89__del__ disciplines) -- so list and dict implementation calls doing
90DECREF can cause recursive calls to methods of the object being
91modified. Other files too.
92
Guido van Rossum79dddcb1995-01-12 12:25:42 +000093(*) if __getattr__ or __repr__ prints something, calling repr(x) from
94cmd line forgets a newline
95
96(*) C-level coerce() doesn't call __coerce__ when it should (and
97similar for __cmp__)
98
Guido van Rossum91cb9d21995-04-10 11:47:38 +000099(*) struct module assigns unaligned doubles when compiled with -DDEBUG
100on sparc
Guido van Rossum8a30adc1995-01-09 17:54:07 +0000101
Guido van Rossumaf5b83e1995-01-04 19:02:35 +0000102(*) memory leak (namebuf) in initmodule2
103
104(*) hash() of float values returns bogus values
105
106(*) pow(int, int, long) does wrong series of DECREF() calls.
107
108(*) flushline() may clear the exception condition so shouldn't be
109called before print_error()
110
111(*) Everything else that uses err_get() should use err_fetch()
112
113(*) sockets aren't thread safe (address of static struct returned,
114some calls aren't thread safe)
115
116(*) threadmodule.c leaks LOTS of memory at thread exit
117
118(*) shared install in Modules still doesn't work for empty list
119
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000120(*) threadmodule.c leaks 'res' in t_bootstrap
121
122(*) errors.c shouldn't declare strerror() on NT
123
124(*) DECREF can cause the interpreter to be called recursively (for
125__del__ disciplines) -- so list and dict implementation calls doing
126DECREF can cause recursive calls to methods of the object being
127modified. Other files too. (Only partially fixed.)
128
129(*) tkinter dereferences NULL if timer callback raises an exception
130
131(*) must link with -lieee for linux
132
133(*) if a timer handler routine raises an exception, the interpreter
134dereferences NULL
135
136(*) __getattr__ doesn't clear error
137
138(*) '%s' % a, where a is a class instance, fails
139
140(*) "make test" won't find freshly built dynamically loaded modules --
141should add ./Modules to TESTPATH
142
143(*) lshift calls __rshift__ instead of __rlshift__
144
145(*) memory leak in creation of sys.builtin_module_names
146
147(*) Bugs in instance_dealloc(): (a) memory leak for exception
148type+value; (2) should save+restore traceback as well
149
150(*) modsupport.c(vmkvalue): on systems where va_list is an array, the
151calls to do_mkvalue and do_mktuple don't want an "&" before va.
152
153======================================================================
Guido van Rossum9444ce01994-10-20 22:10:23 +0000154BUGS found in 1.1 and fixed in 1.1.1
155------------------------------------
156
Guido van Rossum5dee5e71994-11-10 23:06:54 +0000157(*) printing name of lambda in traceback dereferences NULL
158
159(*) A built-in function using getargs() and expecting >= 1 argument
160may dump core when called without arguments
161
162(*) newgetargs() dumps core in compat mode when NULL is passed in but
163max is >0
164
Guido van Rossum9444ce01994-10-20 22:10:23 +0000165(*) pow() should be declared varargs since it uses newgetargs
166
Guido van Rossum5dee5e71994-11-10 23:06:54 +0000167(*) newmodule.c doesn't compile on SunOS 4.1.3 due to non-K&R backslashes
168
169(*) some typos in tut.tex
170
171(*) test for broken static forward is not strong enough
172
173(*) Doc/Makefile assumes . is in $PATH in call to whichlibs
174
175(*) math module misses hypot() function
176
177(*) structmember.h should include stddef.h (for offsetof macro)
178
179(*) gdbmmodule.c frees the wrong structures
180
181(*) makesetup script misses some dollars and backslashes
182
183(*) getargs.obj missing from NT makefile
184
185(*) sorting class instances broken if no __cmp__ defined
186
Guido van Rossum5dee5e71994-11-10 23:06:54 +0000187======================================================================
Guido van Rossum9444ce01994-10-20 22:10:23 +0000188BUGS found in 1.0.3 and fixed in 1.1
189------------------------------------
190
Guido van Rossum76be6ed1995-01-02 18:33:54 +0000191(*) 2 specific leaks: 1 PYTHONPATH; 2 reading code from .pyc
192
Guido van Rossum9444ce01994-10-20 22:10:23 +0000193(*) If class C doesn't define __cmp__, cmp(a,b) will return -2 and
194[a,b].sort() will fail
195
Guido van Rossum2b11c611994-10-06 16:36:15 +0000196(*) Syntax errors are reported in a silly way if multi-line tokens are
Guido van Rossumfda5fb21994-08-12 13:18:41 +0000197involved.
198
Guido van Rossum2b11c611994-10-06 16:36:15 +0000199(*) SyntaxError exception for compile('...') are reported wrongly
Guido van Rossumfda5fb21994-08-12 13:18:41 +0000200(lineno is always zero and offset is offset into the whole string).
201
Guido van Rossum2b11c611994-10-06 16:36:15 +0000202(*) freeze script needs major rewrite to cope with multiple extensions
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000203(Jack seems to have fixed it now -- where is it?)
204
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000205(*) unwanted entries in stack trace if err_clear() clears an error
206that also set a stack trace
207
208(*) i, x[i] = a, b assigns b to x[a] rather than to x[i] as expected
209(documented with a warning in ref6.tex!)
210
211(*) etags no longer supports -t flag
212
213(*) compile.c:com_argdefs() references unalloc'ed memory for def
214f(a=1,): ...
215
216(*) If you have a python binary in your path like
Guido van Rossumfda5fb21994-08-12 13:18:41 +0000217/ufs/guido/bin/sgi/python then the default prefix option computed by
218the configure script is bogus!
219
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000220(*) Make rule for making lib*.a should remove the lib*.a file first.
Guido van Rossumfda5fb21994-08-12 13:18:41 +0000221
Guido van Rossum5552eb71994-08-05 15:51:00 +0000222(*) vars() error message is wrong (copied from dir() obviously).
223
224(*) socket.gethostname() is undocumented.
225
226(*) rfc822.py: getfirst* dies when multiple headers occur
227
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000228(*) urllib caching is wrong (should use date from Expires header)
Guido van Rossum5552eb71994-08-05 15:51:00 +0000229
230(*) On a related matter: regexpr.c still has two malloc()s the results
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000231of which are not tested for being NULL (lines 1253 and 1530). There
232are also some in rgbimagemodule.c. Am I overlooking something or is
Guido van Rossumfda5fb21994-08-12 13:18:41 +0000233this a crasher?
Guido van Rossum5552eb71994-08-05 15:51:00 +0000234
235(*) strop.rindex('abc', '') returns 0 instead of 3
236
237(*) sunaudiodevmodule.o is too long!
238
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000239(*) toplevel README needs new text on PC and Mac builds
Guido van Rossum5552eb71994-08-05 15:51:00 +0000240
241(*) long(0x80000000) has wrong value!
242
243======================================================================
244Bugs found in 1.0.2 and not yet fixed
245-------------------------------------
246
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000247(?) compiler warnings about argument type of uname() on ULTRIX
Guido van Rossum91cb9d21995-04-10 11:47:38 +0000248machines (don't know what to do about it) [could be fixed by fix for
249bitfields in struct uname]
Guido van Rossum5552eb71994-08-05 15:51:00 +0000250
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000251(?) syntax error for interactive input prints garbage instead of last
252source line on some systems (e.g. AIX) (impossible to test/reproduce)
Guido van Rossum91cb9d21995-04-10 11:47:38 +0000253[I think I've found this one -- a missing INCREF in print_error]
Guido van Rossum5552eb71994-08-05 15:51:00 +0000254
255(?) (maybe) a bad .pyc file (with old magic number) causes the .py
Guido van Rossum91cb9d21995-04-10 11:47:38 +0000256file to be ignored [should be fixed by rewrite of import.c]
Guido van Rossum5552eb71994-08-05 15:51:00 +0000257
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000258(?) Sunos4.0.2 / 386 configure bugs:
Guido van Rossum5552eb71994-08-05 15:51:00 +0000259 - timelocal instead of mktime
260 - unistd.h doesn't declare some functions
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000261(don't know what to do about this)
Guido van Rossum5552eb71994-08-05 15:51:00 +0000262
263Bugs found in 1.0.2 and fixed in 1.0.3
264--------------------------------------
265
266(*) nasty bug in string formatting (see test_types.py, search for %)
267
268(*) if a triple-quoted string ends in a quote followed by a newline
269(followed immediately by the terminating 3 quotes) then a syntax error
270or system error ensues
271
272(*) bug in socket.listen: clipping backlog to >= 1 doesn't work
273
274(*) two bogus XDEL's in Modules/regexmodule.reg_dealloc()
275
276(*) Parser/myreadline.my_fgets: #endif EINTR misplaced
277
278(*) new IP address for ftp.cwi.nl !!!
279
280(*) typing vars() to interactive prompt runs into infinite loop
281because of '_'
282
283(*) tokenizer/tok_nextc() runs into infinite loop when file does not
284end in linefeed
285
286(*) Sunos4.0.2 / 386 configure bugs:
287(*) - use size_t at some places without including sys/types.h
288(*) - missing clock_t
289(*) - uses SEEK_SET in some places that don't include unistd.h
290
291======================================================================
292Bugs found in 1.0.1 and not yet fixed
293-------------------------------------
294
Guido van Rossum5552eb71994-08-05 15:51:00 +0000295(?) threads are slow on Solaris 2
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000296(so what?)
Guido van Rossum5552eb71994-08-05 15:51:00 +0000297
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000298(*) threads cause myreadline.c's readline() to think it sees an EOF.
299(I *think* I've fixed this, by testing for EINTR)
Guido van Rossum5552eb71994-08-05 15:51:00 +0000300
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000301(?) min() on PC version generates wrong result (i.e. same as max())
Guido van Rossum5552eb71994-08-05 15:51:00 +0000302 [this happens on SoftPC -- don't know about other systems]
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000303(can't find the reason -- may be SoftPC bug)
Guido van Rossum5552eb71994-08-05 15:51:00 +0000304
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000305(*) flp.py cache bug: if the cache only contains one form, asking for
306all forms returns only the cached form
Guido van Rossum5552eb71994-08-05 15:51:00 +0000307
308Bugs found in 1.0.1 and fixed in 1.0.2
309--------------------------------------
310
311(*) core dump when parser.parsefile() called
312
313(*) man page contains a mess before -d option
314
315(*) threads don't work on IRIX 4
316
317(*) wrong cast of svideo_getattr in svmodule.c
318
319(*) bad return value in runpython.c's run_tty_1()
320
321(*) creating dict of 100,000 objects gets MemoryError or dumps core
322
323(*) freeze script doesn't work
324
325======================================================================
326BUGS found in 1.0.0 and not yet fixed
327-------------------------------------
328
Guido van Rossum91cb9d21995-04-10 11:47:38 +0000329(*) On NeXT, need to define _POSIX_SOURCE.
Guido van Rossum5552eb71994-08-05 15:51:00 +0000330
331(?) there appears to be something wrong with gcc and -ldl on some
332SunOS 4.1.3 systems
333
Guido van Rossumc561e5d1994-08-23 13:52:46 +0000334(?) jredfords reports core dump with float literals
Guido van Rossum5552eb71994-08-05 15:51:00 +0000335
336BUGS found in 1.0.0 and fixed in 1.0.1
337--------------------------------------
338
339(*) On SGI IRIX 4 using cc, compilation errors in md5module.c.
340
341(*) In cdmodule.c, getattr initialized with (destructor)!
342
343(*) Lib/tzparse.py runs test() on import
344
345(*) Lib/filewin.py belongs in Lib/stdwin
346
347(*) lib and man install targets don't use $(srcdir)
348
349(*) Modules/rgbimgmodule.c: exception name contains comma instead of dot
350
351(*) The FAQ still references misc/EXTENDING and misc/DYNLOAD etc
352
353(*) The FAQ still describes how to work around a problem in 0.9.9 exec()
354
355(*) Lib/aifc.py, returns float rate, should be int
356
357(*) Lib/sunau.py, incorrectly cumputes byte count from frame rate
358
359(*) README should mention possibility of passing OPT=-g to make
360
361(*) dynamic loading on sunos 4.1.3 must call dlopen(..., 1)
362
363(*) use of <varargs.h> vs. <stdarg.h> should depend on
364 HAVE_STDARG_PROTOTYPES, not on HAVE_STDARG_H
365
366(*) Doc/README refers to Misc/FTP which in fact does not exist any more
367
368(*) filter(None, 'abcdefg') dumps core
369
370(*) once you interrupt time.sleep(), there is no interrupt handler!
371
372======================================================================
373end of file