Exciting stuff in Python 2.5
6th April 2006
Python 2.5 alpha 1 is out, and as usual the What’s New in Python 2.5 document provides a pleasant overview of the new features. There are some real treats in there. While I’m hoping that the syntax for conditional expressions will grow on me, I’m looking forward to Partial function application becoming a common Python idiom. Relative imports are going to make Django applications a lot easier to redistribute, and I can’t wait to see all the crazy hacks that result from the introduction of coroutines.
I’ve seen David Heinemeier Hansson speak a few times, and he often uses ActiveRecord’s transaction support to illustrate the elegance that well-written Ruby has to offer:
Account.transaction(account1, account2) do account1.withdraw(100) account2.deposit(100) end
Here a Ruby block is being used as syntax for a database transaction, guaranteeing that some code will be run before and after the withdraw and deposit lines. The new with statement makes something similar possible with an imaginary Python ORM:
with Account.transaction(account1, account2):
account1.withdraw(100)
account2.deposit(100)
The highlight of the release might well be the modules that have been added to the standard library—tucked away in section 13 of the document. ctypes, ElementTree, a new hashlib with support for SHA-224 through 512 and sqlite3 (a renamed pysqlite) are all included. ctypes is particularly interesting as it lets you call functions in compiled DLLs and shared libraries without having to compile a Python wrapper.
The final Python 2.5 release appears to be scheduled for June-July this year, which should give Apple ample time to incorporate it in to OS X Leopard.
More recent articles
- Weeknotes: Embeddings, more embeddings and Datasette Cloud - 17th September 2023
- Build an image search engine with llm-clip, chat with models with llm chat - 12th September 2023
- LLM now provides tools for working with embeddings - 4th September 2023
- Datasette 1.0a4 and 1.0a5, plus weeknotes - 30th August 2023
- Making Large Language Models work for you - 27th August 2023
- Datasette Cloud, Datasette 1.0a3, llm-mlc and more - 16th August 2023
- How I make annotated presentations - 6th August 2023
- Weeknotes: Plugins for LLM, sqlite-utils and Datasette - 5th August 2023
- Catching up on the weird world of LLMs - 3rd August 2023
- Run Llama 2 on your own Mac using LLM and Homebrew - 1st August 2023