Python comparison matrix

A

Alex Willmer

I've created a spreadsheet that compares the built ins, features and modules of the CPython releases so far. For instance it shows:
- basestring was first introduced at version 2.3 then removed in version 3.0
- List comprehensions (PEP 202) were introduced at version 2.0.
- apply() was a built in throughout the 1.x and 2.x series, but was deprecated in from 2.3 and removed in 3.0
- Generator functions were first introduced in 2.2 with __future__ import, from 2.3 they were fully supported

https://spreadsheets.google.com/pub?key=0At5kubLl6ri7dHU2OEJFWkJ1SE16NUNvaGg2UFBxMUE

The current version covers CPython 1.5 - 3.2 on these aspects:
- Built in types and functions
- Keywords
- Modules
- Interpreter switches and environment variables
- Platforms, including shipped Python version(s) for major Linux distributions
- Features/PEPs (incomplete)

I gathered the data from the documentation at python.org. It's work in progress so there are plenty of rough edges and holes, but I'd like to get your opinions, feedback and suggestions.
- Would you find such a document useful?
- What format(s) would be most useful to you (e.g. spreadsheet, pdf, web page(s), database, wall chart, desktop background)?
- Are there other aspects/pages that you'd like to see included?
- Do you know of source(s) for which versions of CPython supported which operating systems (e.g. the first and last Python release that works on Windows 98 or Mac OS 9)? The best I've found so far is PEP 11

Regards and thanks, Alex
 
A

Antoine Pitrou

I've created a spreadsheet that compares the built ins, features and modules of the CPython releases so far. For instance it shows:

A couple of errors:
- BufferError is also in 3.x
- IndentationError is also in 3.x
- object is also in 3.x
- NotImplemented is not an exception type, it's a built-in singleton
like None
- you forgot VMSError (only on VMS) :)

Regards

Antoine.
 
P

python

Alex,

I think this type of documentation is incredibly useful!

Is there some type of key which explains symbols like !, *, f, etc?

Thanks for sharing this work with the community.

Malcolm
 
T

Tomasz Rola

I've created a spreadsheet that compares the built ins, features and
modules of the CPython releases so far. For instance it shows: [...]
I gathered the data from the documentation at python.org. It's work in
progress so there are plenty of rough edges and holes, but I'd like to
get your opinions, feedback and suggestions.
- Would you find such a document useful?

Yes, definitely. Great idea, thanks for doing this.
- What format(s) would be most useful to you (e.g. spreadsheet, pdf, web
page(s), database, wall chart, desktop background)?

I would vote for html/web pages with pdf as an option (i.e. a link), if
you find it easy enough to make. This probably means you would like to
have the source in a form that allows generation of both pages and pdf
without much trouble. In this case, it seems there are more than few
options to choose from.

Perhaps in a form of Python code doing the job, with data in hashtables?
That would be so Pythonish :).
- Are there other aspects/pages that you'd like to see included?
- Do you know of source(s) for which versions of CPython supported which operating systems (e.g. the first and last Python release that works on Windows 98 or Mac OS 9)? The best I've found so far is PEP 11

Nothing comes to my head ATM.

Regards,
Tomasz Rola

--
** A C programmer asked whether computer had Buddha's nature. **
** As the answer, master did "rm -rif" on the programmer's home **
** directory. And then the C programmer became enlightened... **
** **
** Tomasz Rola mailto:[email protected] **
 
D

DevPlayer

Awesome, thanks so much for you efforts and sharing.

Idea:
It would be great if we put this table into a python program where I
can run a script against this table and a Python source code module
(file) so that it would spit out a list of strings showing what python
versions work with said source code file.

python.exe get_versions.py myPythonSourceFile.py -insertMetaInfo

Would prepend a text line to myPythonSourceFile.py in some format
like:
# __requires_python__ = ["Python 2.5-2.7"]
or
# __requires_python__ = ["Python", "2.5.x", "2.6.x", "2.7.x"]
or
# __requires_python__ = {"1.0.x":False, ..., "2.5.x":True,
"2.6.x":True, "2.7.x":True]
where key format is comparable agains on of the following:
sys.version, sys.version_info, sys.winver, sys.api_version,
sys.subversion


Idea:
Perhaps add the table you made a list of which libraries/packages are
included in the distro to the different releases.
Comparable against sys.builtin_module_names


Anyone ambisous enough to play with those idea, be my guest.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,065
Latest member
OrderGreenAcreCBD

Latest Threads

Top