Py3000

Python 3.0a1 release hits the network, with significant backwards incompatible changes. The best way to describe this is a shedding of the snake's skin, sloughing off a whole bunch of weird ambiguities and language level inconsistencies. Highlights:

  • Enforcing stricter encodings for string and byte IO - no more Unicode vs 8bit weirdness. This should push it out in front of PHP and Ruby, in terms of clean character encoding support.
  • Map and filter functions return iterators.
  • Support for abstract base classes, class decorators, and a new metaprogramming syntax. There has been some frustration in the Python community that this doesn't go far enough. Perhaps the best way to think about it is that Python is a multi-paradigm language not a classical OO language or Lisp. It does have a rather opinionated design and major constraints, but these mesh cleanly with a pythonic mindset.

I used to have philosophical issues with Python syntax and object model, but after using bits here and there, and playing with Django and web.py, I'm now really keen to get into more Python programming. Trouble is, most code out there hovers around the 2.2 and 2.3 standards. I will be interested to see what kind of feedback emerges of this version of the language.