What Is New in Python 1.6
Python 1.6 was released on September, 2000 -- one of the final releases from the CNRI (Corporation for National Research Initiatives) era, just before BeOpen Python Labs and then the Python Software Foundation took stewardship of the project. Python 1.6 is largely a transitional release, coinciding with the formation of the new development team that would produce Python 2.0 two months later. Many features in 1.6 were simultaneously available in 2.0.
| Category | Change | Notes |
|---|---|---|
| Standard Library | Unicode support improvements -- early Unicode string handling | Precursor to formal Unicode in 2.0 |
| Standard Library | String methods added directly to str type (e.g., str.join(), str.split()) |
Previously string functions were in the string module only |
| Standard Library | Improved re module (SRE engine by Secret Labs) |
Replaced the older pcre engine |
| Standard Library | urllib2 module for more flexible HTTP handling |
Supported custom handlers and openers |
| License | CNRI license -- GPL-incompatible; resolved in 2.0 with PSF license | Historical context |
Key Additions in Python 1.6
String Methods on the str Type
Before Python 1.6, string operations were performed via the standalone string module: string.split(s, ","), string.upper(s), etc. Python 1.6 added these as methods directly on the str type, making the object-oriented style possible: s.split(","), s.upper().
# Old style (still worked for backward compat)
import string
words = string.split("hello world", " ")
upper = string.upper("hello")
# New style (Python 1.6+)
words = "hello world".split(" ")
upper = "hello".upper()
The old string module functions were kept for backward compatibility but were considered deprecated from this point forward.
New Regular Expression Engine (SRE)
The Secret Labs Regular Expression (SRE) engine replaced the earlier PCRE-based engine and the regex module. SRE is what the modern re module is still based on -- it grew from the work Fredrik Lundh did for Python 1.6 and was shipped in that release. It brought better Unicode support and a cleaner, more complete API.
Historical Context: End of the CNRI Era
Python 1.6 is historically notable because it was the last release CNRI had contractual responsibility for. The transition to BeOpen and then to the PSF resolved a license incompatibility with the GPL that had existed since early Python versions. Python 2.0 was released simultaneously and superseded 1.6 almost immediately.
FAQ
Why was Python 1.6 released so close to Python 2.0?
CNRI had contractual obligations to release a final version under their stewardship. Python 1.6 fulfilled that requirement. BeOpen simultaneously prepared Python 2.0, which included all of 1.6's changes plus significant new features. Python 1.6 was never the recommended version -- 2.0 immediately superseded it.
Were str methods available before Python 1.6?
No. Before 1.6, string manipulation required using the string module functions: string.split(s), string.lower(s), etc. The old string module functions became wrappers around the new methods after 1.6 and were deprecated over the following releases.
Is any Python 1.6 code still in use?
Essentially no. Python 1.6 is a historical curiosity. It is not installable from any modern package manager and has no security patches. No production system should be running Python 1.x.
What was the CNRI license issue?
CNRI's Python license contained clauses that were interpreted as incompatible with the GNU GPL. This meant CPython could not be bundled with GPL software. The FSF and Guido van Rossum negotiated a fix that was applied in Python 2.0 and backported into a 1.6.1 release with the corrected license.
What was the SRE regular expression engine?
SRE (Secret Labs Regular Expression) was written by Fredrik Lundh. It brought a cleaner architecture, better Unicode support, and eliminated the dependency on the external PCRE library. The SRE engine is still the foundation of CPython's re module today, having been incrementally improved over subsequent releases.