FLUFL's Story Time

(A Python Retrospective)

PyBay 2019

Barry Warsaw

Python Foundation @ LinkedIn

"The current day Python has a lot of important abstractions that weren't present at the time, but the language looked very similar"

GvR, TechRepublic, Aug 6, 2019

Python 1.1

11 October 1994

  • Truncate toward zero in float -> int conversion
  • "entirely redone operator overloading"
  • Asynchronous signal handling in main thread
  • Double clicking to run pyc files on the Mac
  • X11 extension module / tkinter
  • URL parser
  • curses
  • delattr() & tuple() built-ins
  • __getattr__(), __setattr__(), __delattr__() added
  • Support ancient C and OS versions, 64 bit!

Guido van Rossum's Python World Tour

November 1-3, 1994

National Institute of Standards and Technology

(Some) Usual Suspects

FLUFL (1st non-Dutch contributor)

(Some) Usual Suspects

Roger Masse, BDFL, FLUFL

(Some) Usual Suspects

Jim Fulton

(Some) Usual Suspects

Ken Manheimer

(Some) Usual Suspects

Paul Everitt

(Some) Usual Suspects

Skip Montanaro

Workshop Agenda

  1. Requirements for a "Safe" Python interpreter

  2. A standard GUI module interface definition for Python

  3. The requirements for persistent objects in Python

  4. A Python engineering graphs package

  5. The standard Python WWW interface

  6. Embedding Python in a WWW client

  7. Technical information management using Python

  8. Support for dynamic loading of foreign language modules in Python

  9. Replacing make, rcs, and cvs with Python

  10. An Electronic Data Interchange library for Python

  11. Discussing the formation of a Python Consortium

Workshop Agenda

12. compiling Python to a more efficient form (hard -- but not impossible???)


14. static type checking (could help to the previous one)


15. the management of large collections of modules (too many Python scripts currently embed hard pathnames in their main file so they can find their subordinate modules)


16. improving the efficiency of Python (e.g. by using a different  garbage collection scheme)


17. improving portability of Python code between Unix and non-Unix
platforms (your #2 is a special case of this)

Workshop Agenda

(from the fuzzy memory vaults)

  • doc strings
  • metaclasses
  • Objective-C

Python 1.1.1

10 November 1994

  • Bug fixes

Guido and CNRI

Python 1.2

13 April 1995

(2 days before Guido starts at CNRI)

  • "__import__ hack"
  • imp module
  • "add hook for Don Beaudry" in build_class
  • docstrings for modules, classes, functions
  • __doc__; __name__; __self__
  • tp_str, tp_doc
  • support import A.B...Z
  • "restricted mode"
  • "THE GREAT RENAMING"
  • "Use = instead of == for assignment"
  • Class exceptions allowed
  • Classes became pickle-able

Python 1.3

13 October 1995

  • Keyword parameters
  • Third argument to raise
  • "Jim Fulton's abstract object interface"
  • Tk 4.0
  • Rewritten htmllib.py and rexec.py
  • New modules ni.py and ihooks.py
  • "And lots more that you'll have to discover on your own"

Python 1.4

25 October 1996

  • new power operator, new slicing and indexing syntax

  • __names

  • Misc/NEWS

  • __file__

  • Added: site, errno, operator, cmath, Bastion, mimify

  • complex numbers

  • list()

  • "access is no longer a reserved word"

Python 1.5

3 January 1998

  • assert statement, AssertionError
  • import a.b.c (without ni, with __init__.py)
  • New re module (Perl-style regexps)
  • raw strings
  • Class exceptions
  • New dict methods: clear(), copy(), update(), get()
  • $PYTHONHOME and better sys.path calculation
  • multiple interpreters, access to GIL, etc.
  • -O and __debug__ support
  • Grand renaming is complete
  • buffer protocol
  • string interning
  • Better metaclass support (instance base classes)

Python 1.5.1

14 April 1998 (?)

  • No argument raise to re-raise
  • mutex protected import
  • Safer finalization
  • python -t and -tt; tabnanny!

Python 1.5.2

13 April 1999

  • First mention of JPython in Misc/NEWS
  • IDLE, pynche, world, audiopy, ndiff
  • __file__ is the .py file, not the .pyc/.pyo
  • shamodule
  • buffer()
  • python -OO
  • asyncore / asynchat
  • os.path pretends to be a submodule
  • NotImplementedError, EnvironmentError
  • list.extend(), list.pop()

Python 1.6

5 September 2000

  • Built-in exceptions are always classes (no more -X)
  • Lots of sharing w/ Python 2.0
  • Unicode support
  • String methods
  • SRE regular expression engine
  • distutils added!
  • func(*args, **kws) -- apply() no longer needed
  • UnboundLocalError
  • object.__contains__()
  • UserString, mmap, filecmp, urllib2, zipfile, codecs, unicodedata, encodings, 
  • pygettext.py

Python 2.0

16 October 2000

Python 1.6.1

25 February 2001

Python 1.6 was the last of the versions developed at CNRI and the only version issued by CNRI with an open source license. Following the release of Python 1.6, and after Guido van Rossum left CNRI to work with [BeOpen], it became clear that the ability to use Python with software available under the GNU General Public License (GPL) was very desirable. CNRI and the Free Software Foundation (FSF) interacted to develop enabling wording changes to the Python license. Python 1.6.1 is essentially the same as Python 1.6, with a few minor bug fixes, and with a GPL-compatible license.

To infinity and beyond

  • 2.1 - 17 April 2001
  • 2.2 - 21 December 2001 (new style classes)
  • 2.2.1 - import this, True, False, bool
  • 2.3 - 29 July 2003
  • 2.4 - 30 November 2004
  • 2.5 - 16 September 2006
  • 2.6 - 1 October 2008
  • 3.0 - 3 December 2008
  • 2.7 - 3 July 2010

Python today

  • Python 2 - beautiful plumage but pinin' for the fjords
  • Python 3.7 - latest and greatest
  • Python 3.8 in October 2019
  • BDFL retirement
  • Python the language is 30 years old, stable, mature
  • CPython is the most popular implementation
  • 3rd most popular language (TIOBE, August 2019)

So what's next?

Barry Warsaw

barry@python.org

bwarsaw@linkedin.com

@pumpichank

github.com/warsaw

gitlab.com/warsaw

A Short History of Python

By Barry Warsaw

A Short History of Python

September 2018 BayPiggies

  • 664