-
-
Notifications
You must be signed in to change notification settings - Fork 34.5k
Expand file tree
/
Copy pathHISTORY
More file actions
2515 lines (1778 loc) · 92.4 KB
/
HISTORY
File metadata and controls
2515 lines (1778 loc) · 92.4 KB
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Python history
--------------
This file contains the release messages for previous Python releases
(slightly edited to adapt them to the format of this file). As you
read on you go back to the dark ages of Python's history.
=====================================
==> Release 1.3 (13 October 1995) <==
=====================================
Major change
============
Two words: Keyword Arguments. See the first section of Chapter 12 of
the Tutorial.
(The rest of this file is textually the same as the remaining sections
of that chapter.)
Changes to the WWW and Internet tools
=====================================
The "htmllib" module has been rewritten in an incompatible fashion.
The new version is considerably more complete (HTML 2.0 except forms,
but including all ISO-8859-1 entity definitions), and easy to use.
Small changes to "sgmllib" have also been made, to better match the
tokenization of HTML as recognized by other web tools.
A new module "formatter" has been added, for use with the new
"htmllib" module.
The "urllib"and "httplib" modules have been changed somewhat to allow
overriding unknown URL types and to support authentication. They now
use "mimetools.Message" instead of "rfc822.Message" to parse headers.
The "endrequest()" method has been removed from the HTTP class since
it breaks the interaction with some servers.
The "rfc822.Message" class has been changed to allow a flag to be
passed in that says that the file is unseekable.
The "ftplib" module has been fixed to be (hopefully) more robust on
Linux.
Several new operations that are optionally supported by servers have
been added to "nntplib": "xover", "xgtitle", "xpath" and "date".
Other Language Changes
======================
The "raise" statement now takes an optional argument which specifies
the traceback to be used when printing the exception's stack trace.
This must be a traceback object, such as found in "sys.exc_traceback".
When omitted or given as "None", the old behavior (to generate a stack
trace entry for the current stack frame) is used.
The tokenizer is now more tolerant of alien whitespace. Control-L in
the leading whitespace of a line resets the column number to zero,
while Control-R just before the end of the line is ignored.
Changes to Built-in Operations
==============================
For file objects, "f.read(0)" and "f.readline(0)" now return an empty
string rather than reading an unlimited number of bytes. For the
latter, omit the argument altogether or pass a negative value.
A new system variable, "sys.platform", has been added. It specifies
the current platform, e.g. "sunos5" or "linux1".
The built-in functions "input()" and "raw_input()" now use the GNU
readline library when it has been configured (formerly, only
interactive input to the interpreter itself was read using GNU
readline). The GNU readline library provides elaborate line editing
and history. The Python debugger ("pdb") is the first beneficiary of
this change.
Two new built-in functions, "globals()" and "locals()", provide access
to dictionaries containming current global and local variables,
respectively. (These augment rather than replace "vars()", which
returns the current local variables when called without an argument,
and a module's global variables when called with an argument of type
module.)
The built-in function "compile()" now takes a third possible value for
the kind of code to be compiled: specifying "'single'" generates code
for a single interactive statement, which prints the output of
expression statements that evaluate to something else than "None".
Library Changes
===============
There are new module "ni" and "ihooks" that support importing modules
with hierarchical names such as "A.B.C". This is enabled by writing
"import ni; ni.ni()" at the very top of the main program. These
modules are amply documented in the Python source.
The module "rexec" has been rewritten (incompatibly) to define a class
and to use "ihooks".
The "string.split()" and "string.splitfields()" functions are now the
same function (the presence or absence of the second argument
determines which operation is invoked); similar for "string.join()"
and "string.joinfields()".
The "Tkinter" module and its helper "Dialog" have been revamped to use
keyword arguments. Tk 4.0 is now the standard. A new module
"FileDialog" has been added which implements standard file selection
dialogs.
The optional built-in modules "dbm" and "gdbm" are more coordinated
--- their "open()" functions now take the same values for their "flag"
argument, and the "flag" and "mode" argument have default values (to
open the database for reading only, and to create the database with
mode "0666" minuse the umask, respectively). The memory leaks have
finally been fixed.
A new dbm-like module, "bsddb", has been added, which uses the BSD DB
package's hash method.
A portable (though slow) dbm-clone, implemented in Python, has been
added for systems where none of the above is provided. It is aptly
dubbed "dumbdbm".
The module "anydbm" provides a unified interface to "bsddb", "gdbm",
"dbm", and "dumbdbm", choosing the first one available.
A new extension module, "binascii", provides a variety of operations
for conversion of text-encoded binary data.
There are three new or rewritten companion modules implemented in
Python that can encode and decode the most common such formats: "uu"
(uuencode), "base64" and "binhex".
A module to handle the MIME encoding quoted-printable has also been
added: "quopri".
The parser module (which provides an interface to the Python parser's
abstract syntax trees) has been rewritten (incompatibly) by Fred
Drake. It now lets you change the parse tree and compile the result!
The \code{syslog} module has been upgraded and documented.
Other Changes
=============
The dynamic module loader recognizes the fact that different filenames
point to the same shared library and loads the library only once, so
you can have a single shared library that defines multiple modules.
(SunOS / SVR4 style shared libraries only.)
Jim Fulton's ``abstract object interface'' has been incorporated into
the run-time API. For more detailes, read the files
"Include/abstract.h" and "Objects/abstract.c".
The Macintosh version is much more robust now.
Numerous things I have forgotten or that are so obscure no-one will
notice them anyway :-)
===================================
==> Release 1.2 (13 April 1995) <==
===================================
- Changes to Misc/python-mode.el:
- Wrapping and indentation within triple quote strings should work
properly now.
- `Standard' bug reporting mechanism (use C-c C-b)
- py-mark-block was moved to C-c C-m
- C-c C-v shows you the python-mode version
- a basic python-font-lock-keywords has been added for Emacs 19
font-lock colorizations.
- proper interaction with pending-del and del-sel modes.
- New py-electric-colon (:) command for improved outdenting. Also
py-indent-line (TAB) should handle outdented lines better.
- New commands py-outdent-left (C-c C-l) and py-indent-right (C-c C-r)
- The Library Reference has been restructured, and many new and
existing modules are now documented, in particular the debugger and
the profiler, as well as the persistency and the WWW/Internet support
modules.
- All known bugs have been fixed. For example the pow(2,2,3L) bug on
Linux has been fixed. Also the re-entrancy problems with __del__ have
been fixed.
- All known memory leaks have been fixed.
- Phase 2 of the Great Renaming has been executed. The header files
now use the new names (PyObject instead of object, etc.). The linker
also sees the new names. Most source files still use the old names,
by virtue of the rename2.h header file. If you include Python.h, you
only see the new names. Dynamically linked modules have to be
recompiled. (Phase 3, fixing the rest of the sources, will be
executed gradually with the release later versions.)
- The hooks for implementing "safe-python" (better called "restricted
execution") are in place. Specifically, the import statement is
implemented by calling the built-in function __import__, and the
built-in names used in a particular scope are taken from the
dictionary __builtins__ in that scope's global dictionary. See also
the new (unsupported, undocumented) module rexec.py.
- The import statement now supports the syntax "import a.b.c" and
"from a.b.c import name". No officially supported implementation
exists, but one can be prototyped by replacing the built-in __import__
function. A proposal by Ken Manheimer is provided as newimp.py.
- All machinery used by the import statement (or the built-in
__import__ function) is now exposed through the new built-in module
"imp" (see the library reference manual). All dynamic loading
machinery is moved to the new file importdl.c.
- Persistent storage is supported through the use of the modules
"pickle" and "shelve" (implemented in Python). There's also a "copy"
module implementing deepcopy and normal (shallow) copy operations.
See the library reference manual.
- Documentation strings for many objects types are accessible through
the __doc__ attribute. Modules, classes and functions support special
syntax to initialize the __doc__ attribute: if the first statement
consists of just a string literal, that string literal becomes the
value of the __doc__ attribute. The default __doc__ attribute is
None. Documentation strings are also supported for built-in
functions, types and modules; however this feature hasn't been widely
used yet. See the 'new' module for an example. (Basically, the type
object's tp_doc field contains the doc string for the type, and the
4th member of the methodlist structure contains the doc string for the
method.)
- The __coerce__ and __cmp__ methods for user-defined classes once
again work as expected. As an example, there's a new standard class
Complex in the library.
- The functions posix.popen() and posix.fdopen() now have an optional
third argument to specify the buffer size, and default their second
(mode) argument to 'r' -- in analogy to the builtin open() function.
The same applies to posixfile.open() and the socket method makefile().
- The thread.exit_thread() function now raises SystemExit so that
'finally' clauses are honored and a memory leak is plugged.
- Improved X11 and Motif support, by Sjoerd Mullender. This extension
is being maintained and distributed separately.
- Improved support for the Apple Macintosh, in part by Jack Jansen,
e.g. interfaces to (a few) resource mananger functions, get/set file
type and creator, gestalt, sound manager, speech manager, MacTCP, comm
toolbox, and the think C console library. This is being maintained
and distributed separately.
- Improved version for Windows NT, by Mark Hammond. This is being
maintained and distributed separately.
- Used autoconf 2.0 to generate the configure script. Adapted
configure.in to use the new features in autoconf 2.0.
- It now builds on the NeXT without intervention, even on the 3.3
Sparc pre-release.
- Characters passed to isspace() and friends are masked to nonnegative
values.
- Correctly compute pow(-3.0, 3).
- Fix portability problems with getopt (configure now checks for a
non-GNU getopt).
- Don't add frozenmain.o to libPython.a.
- Exceptions can now be classes. ALl built-in exceptions are still
string objects, but this will change in the future.
- The socket module exports a long list of socket related symbols.
(More built-in modules will export their symbolic constants instead of
relying on a separately generated Python module.)
- When a module object is deleted, it clears out its own dictionary.
This fixes a circularity in the references between functions and
their global dictionary.
- Changed the error handling by [new]getargs() e.g. for "O&".
- Dynamic loading of modules using shared libraries is supported for
several new platforms.
- Support "O&", "[...]" and "{...}" in mkvalue().
- Extension to findmethod(): findmethodinchain() (where a chain is a
linked list of methodlist arrays). The calling interface for
findmethod() has changed: it now gets a pointer to the (static!)
methodlist structure rather than just to the function name -- this
saves copying flags etc. into the (short-lived) method object.
- The callable() function is now public.
- Object types can define a few new operations by setting function
pointers in the type object structure: tp_call defines how an object
is called, and tp_str defines how an object's str() is computed.
===================================
==> Release 1.1.1 (10 Nov 1994) <==
===================================
This is a pure bugfix release again. See the ChangeLog file for details.
One exception: a few new features were added to tkinter.
=================================
==> Release 1.1 (11 Oct 1994) <==
=================================
This release adds several new features, improved configuration and
portability, and fixes more bugs than I can list here (including some
memory leaks).
The source compiles and runs out of the box on more platforms than
ever -- including Windows NT. Makefiles or projects for a variety of
non-UNIX platforms are provided.
APOLOGY: some new features are badly documented or not at all. I had
the choice -- postpone the new release indefinitely, or release it
now, with working code but some undocumented areas. The problem with
postponing the release is that people continue to suffer from existing
bugs, and send me patches based on the previous release -- which I
can't apply directly because my own source has changed. Also, some
new modules (like signal) have been ready for release for quite some
time, and people are anxiously waiting for them. In the case of
signal, the interface is simple enough to figure out without
documentation (if you're anxious enough :-). In this case it was not
simple to release the module on its own, since it relies on many small
patches elsewhere in the source.
For most new Python modules, the source code contains comments that
explain how to use them. Documentation for the Tk interface, written
by Matt Conway, is available as tkinter-doc.tar.gz from the Python
home and mirror ftp sites (see Misc/FAQ for ftp addresses). For the
new operator overloading facilities, have a look at Demo/classes:
Complex.py and Rat.py show how to implement a numeric type without and
with __coerce__ method. Also have a look at the end of the Tutorial
document (Doc/tut.tex). If you're still confused: use the newsgroup
or mailing list.
New language features:
- More flexible operator overloading for user-defined classes
(INCOMPATIBLE WITH PREVIOUS VERSIONS!) See end of tutorial.
- Classes can define methods named __getattr__, __setattr__ and
__delattr__ to trap attribute accesses. See end of tutorial.
- Classes can define method __call__ so instances can be called
directly. See end of tutorial.
New support facilities:
- The Makefiles (for the base interpreter as well as for extensions)
now support creating dynamically loadable modules if the platform
supports shared libraries.
- Passing the interpreter a .pyc file as script argument will execute
the code in that file. (On the Mac such files can be double-clicked!)
- New Freeze script, to create independently distributable "binaries"
of Python programs -- look in Demo/freeze
- Improved h2py script (in Demo/scripts) follows #includes and
supports macros with one argument
- New module compileall generates .pyc files for all modules in a
directory (tree) without also executing them
- Threads should work on more platforms
New built-in modules:
- tkinter (support for Tcl's Tk widget set) is now part of the base
distribution
- signal allows catching or ignoring UNIX signals (unfortunately still
undocumented -- any taker?)
- termios provides portable access to POSIX tty settings
- curses provides an interface to the System V curses library
- syslog provides an interface to the (BSD?) syslog daemon
- 'new' provides interfaces to create new built-in object types
(e.g. modules and functions)
- sybase provides an interface to SYBASE database
New/obsolete built-in methods:
- callable(x) tests whether x can be called
- sockets now have a setblocking() method
- sockets no longer have an allowbroadcast() method
- socket methods send() and sendto() return byte count
New standard library modules:
- types.py defines standard names for built-in types, e.g. StringType
- urlparse.py parses URLs according to the latest Internet draft
- uu.py does uuencode/uudecode (not the fastest in the world, but
quicker than installing uuencode on a non-UNIX machine :-)
- New, faster and more powerful profile module.py
- mhlib.py provides interface to MH folders and messages
New facilities for extension writers (unfortunately still
undocumented):
- newgetargs() supports optional arguments and improved error messages
- O!, O& O? formats for getargs allow more versatile type checking of
non-standard types
- can register pending asynchronous callback, to be called the next
time the Python VM begins a new instruction (Py_AddPendingCall)
- can register cleanup routines to be called when Python exits
(Py_AtExit)
- makesetup script understands C++ files in Setup file (use file.C
or file.cc)
- Make variable OPT is passed on to sub-Makefiles
- An init<module>() routine may signal an error by not entering
the module in the module table and raising an exception instead
- For long module names, instead of foobarbletchmodule.c you can
use foobarbletch.c
- getintvalue() and getfloatvalue() try to convert any object
instead of requiring an "intobject" or "floatobject"
- All the [new]getargs() formats that retrieve an integer value
will now also work if a float is passed
- C function listtuple() converts list to tuple, fast
- You should now call sigcheck() instead of intrcheck();
sigcheck() also sets an exception when it returns nonzero
====================================
==> Release 1.0.3 (14 July 1994) <==
====================================
This release consists entirely of bug fixes to the C sources; see the
head of ../ChangeLog for a complete list. Most important bugs fixed:
- Sometimes the format operator (string%expr) would drop the last
character of the format string
- Tokenizer looped when last line did not end in \n
- Bug when triple-quoted string ended in quote plus newline
- Typo in socketmodule (listen) (== instead of =)
- typing vars() at the >>> prompt would cause recursive output
==================================
==> Release 1.0.2 (4 May 1994) <==
==================================
Overview of the most visible changes. Bug fixes are not listed. See
also ChangeLog.
Tokens
------
* String literals follow Standard C rules: they may be continued on
the next line using a backslash; adjacent literals are concatenated
at compile time.
* A new kind of string literals, surrounded by triple quotes (""" or
'''), can be continued on the next line without a backslash.
Syntax
------
* Function arguments may have a default value, e.g. def f(a, b=1);
defaults are evaluated at function definition time. This also applies
to lambda.
* The try-except statement has an optional else clause, which is
executed when no exception occurs in the try clause.
Interpreter
-----------
* The result of a statement-level expression is no longer printed,
except_ for expressions entered interactively. Consequently, the -k
command line option is gone.
* The result of the last printed interactive expression is assigned to
the variable '_'.
* Access to implicit global variables has been speeded up by removing
an always-failing dictionary lookup in the dictionary of local
variables (mod suggested by Steve Makewski and Tim Peters).
* There is a new command line option, -u, to force stdout and stderr
to be unbuffered.
* Incorporated Steve Majewski's mods to import.c for dynamic loading
under AIX.
* Fewer chances of dumping core when trying to reload or re-import
static built-in, dynamically loaded built-in, or frozen modules.
* Loops over sequences now don't ask for the sequence's length when
they start, but try to access items 0, 1, 2, and so on until they hit
an IndexError. This makes it possible to create classes that generate
infinite or indefinite sequences a la Steve Majewski. This affects
for loops, the (not) in operator, and the built-in functions filter(),
map(), max(), min(), reduce().
Changed Built-in operations
---------------------------
* The '%' operator on strings (printf-style formatting) supports a new
feature (adapted from a patch by Donald Beaudry) to allow
'%(<key>)<format>' % {...} to take values from a dictionary by name
instead of from a tuple by position (see also the new function
vars()).
* The '%s' formatting operator is changed to accept any type and
convert it to a string using str().
* Dictionaries with more than 20,000 entries can now be created
(thanks to Steve Kirsch).
New Built-in Functions
----------------------
* vars() returns a dictionary containing the local variables; vars(m)
returns a dictionary containing the variables of module m. Note:
dir(x) is now equivalent to vars(x).keys().
Changed Built-in Functions
--------------------------
* open() has an optional third argument to specify the buffer size: 0
for unbuffered, 1 for line buffered, >1 for explicit buffer size, <0
for default.
* open()'s second argument is now optional; it defaults to "r".
* apply() now checks that its second argument is indeed a tuple.
New Built-in Modules
--------------------
Changed Built-in Modules
------------------------
The thread module no longer supports exit_prog().
New Python Modules
------------------
* Module addpack contains a standard interface to modify sys.path to
find optional packages (groups of related modules).
* Module urllib contains a number of functions to access
World-Wide-Web files specified by their URL.
* Module httplib implements the client side of the HTTP protocol used
by World-Wide-Web servers.
* Module gopherlib implements the client side of the Gopher protocol.
* Module mailbox (by Jack Jansen) contains a parser for UNIX and MMDF
style mailbox files.
* Module random contains various random distributions, e.g. gauss().
* Module lockfile locks and unlocks open files using fcntl (inspired
by a similar module by Andy Bensky).
* Module ntpath (by Jaap Vermeulen) implements path operations for
Windows/NT.
* Module test_thread (in Lib/test) contains a small test set for the
thread module.
Changed Python Modules
----------------------
* The string module's expandvars() function is now documented and is
implemented in Python (using regular expressions) instead of forking
off a shell process.
* Module rfc822 now supports accessing the header fields using the
mapping/dictionary interface, e.g. h['subject'].
* Module pdb now makes it possible to set a break on a function
(syntax: break <expression>, where <expression> yields a function
object).
Changed Demos
-------------
* The Demo/scripts/freeze.py script is working again (thanks to Jaap
Vermeulen).
New Demos
---------
* Demo/threads/Generator.py is a proposed interface for restartable
functions a la Tim Peters.
* Demo/scripts/newslist.py, by Quentin Stafford-Fraser, generates a
directory full of HTML pages which between them contain links to all
the newsgroups available on your server.
* Demo/dns contains a DNS (Domain Name Server) client.
* Demo/lutz contains miscellaneous demos by Mark Lutz (e.g. psh.py, a
nice enhanced Python shell!!!).
* Demo/turing contains a Turing machine by Amrit Prem.
Documentation
-------------
* Documented new language features mentioned above (but not all new
modules).
* Added a chapter to the Tutorial describing recent additions to
Python.
* Clarified some sentences in the reference manual,
e.g. break/continue, local/global scope, slice assignment.
Source Structure
----------------
* Moved Include/tokenizer.h to Parser/tokenizer.h.
* Added Python/getopt.c for systems that don't have it.
Emacs mode
----------
* Indentation of continuated lines is done more intelligently;
consequently the variable py-continuation-offset is gone.
========================================
==> Release 1.0.1 (15 February 1994) <==
========================================
* Many portability fixes should make it painless to build Python on
several new platforms, e.g. NeXT, SEQUENT, WATCOM, DOS, and Windows.
* Fixed test for <stdarg.h> -- this broke on some platforms.
* Fixed test for shared library dynalic loading -- this broke on SunOS
4.x using the GNU loader.
* Changed order and number of SVR4 networking libraries (it is now
-lsocket -linet -lnsl, if these libraries exist).
* Installing the build intermediate stages with "make libainstall" now
also installs config.c.in, Setup and makesetup, which are used by the
new Extensions mechanism.
* Improved README file contains more hints and new troubleshooting
section.
* The built-in module strop now defines fast versions of three more
functions of the standard string module: atoi(), atol() and atof().
The strop versions of atoi() and atol() support an optional second
argument to specify the base (default 10). NOTE: you don't have to
explicitly import strop to use the faster versions -- the string
module contains code to let versions from stop override the default
versions.
* There is now a working Lib/dospath.py for those who use Python under
DOS (or Windows). Thanks, Jaap!
* There is now a working Modules/dosmodule.c for DOS (or Windows)
system calls.
* Lib.os.py has been reorganized (making it ready for more operating
systems).
* Lib/ospath.py is now obsolete (use os.path instead).
* Many fixes to the tutorial to make it match Python 1.0. Thanks,
Tim!
* Fixed Doc/Makefile, Doc/README and various scripts there.
* Added missing description of fdopen to Doc/libposix.tex.
* Made cleanup() global, for the benefit of embedded applications.
* Added parsing of addresses and dates to Lib/rfc822.py.
* Small fixes to Lib/aifc.py, Lib/sunau.py, Lib/tzparse.py to make
them usable at all.
* New module Lib/wave.py reads RIFF (*.wav) audio files.
* Module Lib/filewin.py moved to Lib/stdwin/filewin.py where it
belongs.
* New options and comments for Modules/makesetup (used by new
Extension mechanism).
* Misc/HYPE contains text of announcement of 1.0.0 in comp.lang.misc
and elsewhere.
* Fixed coredump in filter(None, 'abcdefg').
=======================================
==> Release 1.0.0 (26 January 1994) <==
=======================================
As is traditional, so many things have changed that I can't pretend to
be complete in these release notes, but I'll try anyway :-)
Note that the very last section is labeled "remaining bugs".
Source organization and build process
-------------------------------------
* The sources have finally been split: instead of a single src
subdirectory there are now separate directories Include, Parser,
Grammar, Objects, Python and Modules. Other directories also start
with a capital letter: Misc, Doc, Lib, Demo.
* A few extensions (notably Amoeba and X support) have been moved to a
separate subtree Extensions, which is no longer in the core
distribution, but separately ftp'able as extensions.tar.Z. (The
distribution contains a placeholder Ext-dummy with a description of
the Extensions subtree as well as the most recent versions of the
scripts used there.)
* A few large specialized demos (SGI video and www) have been
moved to a separate subdirectory Demo2, which is no longer in the core
distribution, but separately ftp'able as demo2.tar.Z.
* Parts of the standard library have been moved to subdirectories:
there are now standard subdirectories stdwin, test, sgi and sun4.
* The configuration process has radically changed: I now use GNU
autoconf. This makes it much easier to build on new Unix flavors, as
well as fully supporting VPATH (if your Make has it). The scripts
Configure.py and Addmodule.sh are no longer needed. Many source files
have been adapted in order to work with the symbols that the configure
script generated by autoconf defines (or not); the resulting source is
much more portable to different C compilers and operating systems,
even non Unix systems (a Mac port was done in an afternoon). See the
toplevel README file for a description of the new build process.
* GNU readline (a slightly newer version) is now a subdirectory of the
Python toplevel. It is still not automatically configured (being
totally autoconf-unaware :-). One problem has been solved: typing
Control-C to a readline prompt will now work. The distribution no
longer contains a "super-level" directory (above the python toplevel
directory), and dl, dl-dld and GNU dld are no longer part of the
Python distribution (you can still ftp them from
ftp.cwi.nl:/pub/dynload).
* The DOS functions have been taken out of posixmodule.c and moved
into a separate file dosmodule.c.
* There's now a separate file version.c which contains nothing but
the version number.
* The actual main program is now contained in config.c (unless NO_MAIN
is defined); pythonmain.c now contains a function realmain() which is
called from config.c's main().
* All files needed to use the built-in module md5 are now contained in
the distribution. The module has been cleaned up considerably.
Documentation
-------------
* The library manual has been split into many more small latex files,
so it is easier to edit Doc/lib.tex file to create a custom library
manual, describing only those modules supported on your system. (This
is not automated though.)
* A fourth manual has been added, titled "Extending and Embedding the
Python Interpreter" (Doc/ext.tex), which collects information about
the interpreter which was previously spread over several files in the
misc subdirectory.
* The entire documentation is now also available on-line for those who
have a WWW browser (e.g. NCSA Mosaic). Point your browser to the URL
"http://www.cwi.nl/~guido/Python.html".
Syntax
------
* Strings may now be enclosed in double quotes as well as in single
quotes. There is no difference in interpretation. The repr() of
string objects will use double quotes if the string contains a single
quote and no double quotes. Thanks to Amrit Prem for these changes!
* There is a new keyword 'exec'. This replaces the exec() built-in
function. If a function contains an exec statement, local variable
optimization is not performed for that particular function, thus
making assignment to local variables in exec statements less
confusing. (As a consequence, os.exec and python.exec have been
renamed to execv.)
* There is a new keyword 'lambda'. An expression of the form
lambda <parameters> : <expression>
yields an anonymous function. This is really only syntactic sugar;
you can just as well define a local function using
def some_temporary_name(<parameters>): return <expression>
Lambda expressions are particularly useful in combination with map(),
filter() and reduce(), described below. Thanks to Amrit Prem for
submitting this code (as well as map(), filter(), reduce() and
xrange())!
Built-in functions
------------------
* The built-in module containing the built-in functions is called
__builtin__ instead of builtin.
* New built-in functions map(), filter() and reduce() perform standard
functional programming operations (though not lazily):
- map(f, seq) returns a new sequence whose items are the items from
seq with f() applied to them.
- filter(f, seq) returns a subsequence of seq consisting of those
items for which f() is true.
- reduce(f, seq, initial) returns a value computed as follows:
acc = initial
for item in seq: acc = f(acc, item)
return acc
* New function xrange() creates a "range object". Its arguments are
the same as those of range(), and when used in a for loop a range
objects also behaves identical. The advantage of xrange() over
range() is that its representation (if the range contains many
elements) is much more compact than that of range(). The disadvantage
is that the result cannot be used to initialize a list object or for
the "Python idiom" [RED, GREEN, BLUE] = range(3). On some modern
architectures, benchmarks have shown that "for i in range(...): ..."
actually executes *faster* than "for i in xrange(...): ...", but on
memory starved machines like PCs running DOS range(100000) may be just
too big to be represented at all...
* Built-in function exec() has been replaced by the exec statement --
see above.
The interpreter
---------------
* Syntax errors are now not printed to stderr by the parser, but
rather the offending line and other relevant information are packed up
in the SyntaxError exception argument. When the main loop catches a
SyntaxError exception it will print the error in the same format as
previously, but at the proper position in the stack traceback.
* You can now set a maximum to the number of traceback entries
printed by assigning to sys.tracebacklimit. The default is 1000.
* The version number in .pyc files has changed yet again.
* It is now possible to have a .pyc file without a corresponding .py
file. (Warning: this may break existing installations if you have an
old .pyc file lingering around somewhere on your module search path
without a corresponding .py file, when there is a .py file for a
module of the same name further down the path -- the new interpreter
will find the first .pyc file and complain about it, while the old
interpreter would ignore it and use the .py file further down.)
* The list sys.builtin_module_names is now sorted and also contains
the names of a few hardwired built-in modules (sys, __main__ and
__builtin__).
* A module can now find its own name by accessing the global variable
__name__. Assigning to this variable essentially renames the module
(it should also be stored under a different key in sys.modules).
A neat hack follows from this: a module that wants to execute a main
program when called as a script no longer needs to compare
sys.argv[0]; it can simply do "if __name__ == '__main__': main()".
* When an object is printed by the print statement, its implementation
of str() is used. This means that classes can define __str__(self) to
direct how their instances are printed. This is different from
__repr__(self), which should define an unambigous string
representation of the instance. (If __str__() is not defined, it
defaults to __repr__().)
* Functions and code objects can now be compared meaningfully.
* On systems supporting SunOS or SVR4 style shared libraries, dynamic
loading of modules using shared libraries is automatically configured.
Thanks to Bill Jansen and Denis Severson for contributing this change!
Built-in objects
----------------
* File objects have acquired a new method writelines() which is the
reverse of readlines(). (It does not actually write lines, just a
list of strings, but the symmetry makes the choice of name OK.)
Built-in modules
----------------
* Socket objects no longer support the avail() method. Use the select
module instead, or use this function to replace it:
def avail(f):
import select
return f in select.select([f], [], [], 0)[0]
* Initialization of stdwin is done differently. It actually modifies
sys.argv (taking out the options the X version of stdwin recognizes)
the first time it is imported.
* A new built-in module parser provides a rudimentary interface to the
python parser. Corresponding standard library modules token and symbol
defines the numeric values of tokens and non-terminal symbols.
* The posix module has aquired new functions setuid(), setgid(),
execve(), and exec() has been renamed to execv().
* The array module is extended with 8-byte object swaps, the 'i'
format character, and a reverse() method. The read() and write()
methods are renamed to fromfile() and tofile().
* The rotor module has freed of portability bugs. This introduces a
backward compatibility problem: strings encoded with the old rotor
module can't be decoded by the new version.
* For select.select(), a timeout (4th) argument of None means the same
as leaving the timeout argument out.
* Module strop (and hence standard library module string) has aquired
a new function: rindex(). Thanks to Amrit Prem!
* Module regex defines a new function symcomp() which uses an extended
regular expression syntax: parenthesized subexpressions may be labeled
using the form "\(<labelname>...\)", and the group() method can return
sub-expressions by name. Thanks to Tracy Tims for these changes!
* Multiple threads are now supported on Solaris 2. Thanks to Sjoerd
Mullender!
Standard library modules
------------------------
* The library is now split in several subdirectories: all stuff using
stdwin is in Lib/stdwin, all SGI specific (or SGI Indigo or GL) stuff
is in Lib/sgi, all Sun Sparc specific stuff is in Lib/sun4, and all
test modules are in Lib/test. The default module search path will
include all relevant subdirectories by default.
* Module os now knows about trying to import dos. It defines
functions execl(), execle(), execlp() and execvp().