In this series looking at features introduced by every version of Python 3, we take a look at some of the new features added in Python 3.13. In this article we look at the remaining changes to the standard library, comprising changes in CLI tools, concurrency, networking & IPC , Internet data handling, XML processing, IP address handling, development & debugging tools, and runtime and language…
In this series looking at features introduced by every version of Python 3, we take a look at some of the new features added in Python 3.13. In this article we look at the first half of the changes in the standard library, comprising a new exception, as well as changes to regular expression support, data types, mathematical modules, data persistence, the configparser module, file & directory…
In this series looking at features introduced by every version of Python 3, we take a look at some of the new features added in Python 3.13. In this article we look at the improvements to the intereter itself. We ll look at the new option to disable the GIL , and the addition of a JIT compiler.
In this series looking at features introduced by every version of Python 3, we take a look at some of the new features added in Python 3.13. In this article we look at the improvements to the interactive interpreter and improved error reporting.
BlazingMQ is a message queue middleware system developed at Bloomberg which was opened sourced around a year ago. I think it has a lot of very useful features for some use-cases, so this series of articles looks at it in a bit more detail. In this fourth article I m going to discuss the low-level details of the network protocol between clients and brokers.
BlazingMQ is a message queue middleware system developed at Bloomberg which was opened sourced around a year ago. I think it has a lot of very useful features for some use-cases, so this series of articles looks at it in a bit more detail. In this third article I m going to try to get a basic producer and consumer working with the broker to get some basic exposure to the APIs in C++ and Python.
BlazingMQ is a message queue middleware system developed at Bloomberg which was opened sourced around a year ago. I think it has a lot of very useful features for some use-cases, so this series of articles looks at it in a bit more detail. Having looked at an overview of the features in the previous article, I m going to drill into clustering and a high-level look at the way messages flow through…
BlazingMQ is a message queue middleware system developed at Bloomberg which was opened sourced around a year ago. I think it has a lot of very useful features for some use-cases, so this series of articles looks at it in a bit more detail.
In this series looking at features introduced by every version of Python 3, we take a look at the new features added in Python 3.12 in the standard library, as well as a few other minor language improvements I missed in previous articles.
In this series looking at features introduced by every version of Python 3, we take a look at the new features added in Python 3.12 related to f-strings, inlining of comprehensions, improved error reporting, the new monitoring API for debuggers, and better isolation for sub-interpreters.
In this series looking at features introduced by every version of Python 3, we take a look at the new features added in Python 3.12 related to type hinting.
In this, my sixth and probably final article on the Go programming language, I m running through some smaller features which I didn t go into detail on in earlier articles. We ll look at extending and copying slices in more detail, type assertions, error handling, common string manipulations, basic file I/O, embedding files in binaries, and context objects.
In this, my fifth article on the Go programming language, I m looking at the build and packaging process, and other tooling. I ll start by looking at how code is structured into packages, and then look at the tools for building, packaging and testing.
In this, my fourth article on the Go programming language, I m going to tackle the topic of concurrency. This concept of goroutines is one of the languages main selling points, so I ll be interested to see how they work. We ll also look at channels, which are used to communicate between goroutines.
In this, my third article on the Go programming language, I m going to look at some of the additional features. Specifically we ll look at closures and deferred actions, and also Go s support for generics.
Having looked at the basic semantics of Go in the previous article, I m continuing my exploration by looking at Go s facilities for object orientation. This looks at structures and embedding in more detail, as well as methods and interfaces.
Having written a lot of articles about Python and Rust, I thought it was about time I took a look at another popular modern language, Go. In this article I m kicking off by looking at the basic syntax and semantics as a foundation for looking at the more advanced features in future articles.
Rust is fairly new multi-paradigm system programming language that claims to offer both high performance and strong safety guarantees, particularly around concurrency and memory allocation. As I play with the language a little, I m using this series of blog posts to discuss some of its more unique features as I come across them. This article looks at the more functional aspects of closures and…
Rust is fairly new multi-paradigm system programming language that claims to offer both high performance and strong safety guarantees, particularly around concurrency and memory allocation. As I play with the language a little, I m using this series of blog posts to discuss some of its more unique features as I come across them. In this one I m looking at Cargo, Rust s build and packaging system.
Rust is fairly new multi-paradigm system programming language that claims to offer both high performance and strong safety guarantees, particularly around concurrency and memory allocation. As I play with the language a little, I m using this series of blog posts to discuss some of its more unique features as I come across them. In this one I m looking at how Rust s trait system and how generics…
Rust is fairly new multi-paradigm system programming language that claims to offer both high performance and strong safety guarantees, particularly around concurrency and memory allocation. As I play with the language a little, I m using this series of blog posts to discuss some of its more unique features as I come across them. This one discusses error handling and how to associate methods with…
Rust is fairly new multi-paradigm system programming language that claims to offer both high performance and strong safety guarantees, particularly around concurrency and memory allocation. As I play with the language a little, I m using this series of blog posts to discuss some of its more unique features as I come across them. This one discusses looping constructs and standard library…
The second article covering my attempt to implement a HTTP /3 server from scratch in Rust. Having looked at the QUIC protocol at length in the previous article, this one sees how HTTP /3 is implemented atop it.
The first in what I hope will be a series of articles covering my attempts to implement a HTTP /3 server from scratch in Rust. This article outlines my goals and looks at the QUIC protocol on which HTTP /3 is implemented.
In this series looking at features introduced by every version of Python 3, we finish our tour of changes in Python 3.11, covering the remaining notable standard library changes including changes to threading, networking, type hints and number of changes to runtime services.
In this series looking at features introduced by every version of Python 3, we continue our tour of changes in Python 3.11, covering some more standard library changes in numerical modules, path manipulation, SQLite support and more.
In this series looking at features introduced by every version of Python 3, we continue our look at the new Python 3.11 release, looking at some smaller new features, two new modules and some of the library changes.
In this series looking at features introduced by every version of Python 3, we continue our look at the new Python 3.11 release, taking a look at new language features around type hints.
In this series looking at features introduced by every version of Python 3, we continue our look at the new Python 3.11 release, taking a look at new language features around exceptions and error handling.
In this series looking at features introduced by every version of Python 3, we take a first look at the new Python 3.11 release, taking a look at some of the major performance improvements that have been introduced.
In this series looking at features introduced by every version of Python 3, we conclude our look at Python 3.10 by looking at updates to the standard library modules.
In this series looking at features introduced by every version of Python 3, we continue our look at Python 3.10, focusing on the new features in the language and library. In this post we ll cover improved error reporting and debugging, new features for type hints, and a few other smaller language enhancements.
In this series looking at features introduced by every version of Python 3, we take a first look at Python 3.10, focusing on the new features in the language and library. In this post we ll cover the new structural pattern matching feature.
In this series looking at features introduced by every version of Python 3, we continue our look at Python 3.9 by going through the notable changes in the standard library. These include concurrency improvements with changes to asyncio , concurrent.futures , and multiprocessing ; networking features with enhancements to ipaddress , imaplib , and socket ; and some additional OS features in os and…
In this series looking at features introduced by every version of Python 3, we move on to Python 3.9 and examine some of the major new features. These include type hinting generics in standard collections, string methods for stripping specified prefixes and suffixes from strings, extensions to function and variable annotations, and new modules for timezone information and topological sorting of…
In this series looking at features introduced by every version of Python 3, we continue our look at Python 3.8, examining changes to the standard library. These include some useful new functionality in functools , some new mathematical functions in math and statistics , some improvements for running servers on dual-stack hosts in asyncio and socket , and also a number of new features in typing .
In this series looking at features introduced by every version of Python 3, we move on to Python 3.8 and see what new features have been added in this release. These features include assignment as an expression, position-only parameters and two new modules in the standard library.
In this series looking at features introduced by every version of Python 3, we complete our look at 3.7 by checking the changes in the standard library. These include three new modules, as well as changes across many other modules.
In this series looking at features introduced by every version of Python 3, we begin to look at version 3.7 by seeing what major new features were added. These include several improvements to type annotations, some behaviour to cope with imperfect locale information, and a number of diagnostic improvements.
In this series looking at features introduced by every version of Python 3, we finish our look at the updates in Python 3.6. This third and final article looks at the updates to library modules in this release. These include some asyncio improvements, new enumeration types and some new options for use with sockets and SSL .
In this series looking at features introduced by every version of Python 3, we continue our look at the features added in Python 3.6. This second article looks at some more of the new features added to the language added in this release. These include a new secrets module, a new implementation of the dict object and better support for path-like objects.
In this series looking at features introduced by every version of Python 3, we now move on to look at new features added in Python 3.6. This first article looks at some of the most significant new features added to the language added in this release. These include a new string formatting method, type hinting on variables, and asynchronous generators and comprehensions.
In this series looking at features introduced by every version of Python 3, this is the fourth looking at Python 3.5. In it we look at the major updates to the standard library which were made in this release. These include various Internet protocol module enhancements, some asyncio features, and some restrictions on regular expression syntax have been lifted.
In this series looking at features introduced by every version of Python 3, this is the third looking at Python 3.5. In it we look at the remaining new syntax and some other language additions. These include a matrix multiplication operator, enhancements to argument unpacking and handling of StopIterator exceptions within generators.
In this series looking at features introduced by every version of Python 3, this is the second looking at Python 3.5. In it we examine another of the significant new features in this release, type hinting.
In this series looking at features introduced by every version of Python 3, this is the first looking at Python 3.5. In it we examine one of the major new improvements in this release, new syntax for coroutines.
In this series looking at features introduced by every version of Python 3, this one is the second of two covering release 3.4. We look at improvements to the way multiprocessing spawns child processes, various powerful new facilities for code instrospection, improvements to garbage collection, and a lot more besides.
In this series looking at features introduced by every version of Python 3, this one is the first of two covering release 3.4. We look at a universal install of the pip utility, improvements to handling codecs, and the addition of the asyncio and enum modules, among other things.
The second of my two articles covering features added in Python 3.3, this one talks about a large number of changes to the standard library, especially in network and OS modules. I also discuss implicit namespace packages, which are a bit niche but can be useful for maintaining large families of packages.
The fourth Python 3.x release brought another slew of great new features. So many, in fact, that I ve split this release into two articles, of which this is the first. Highlights in this part include yield from expressions, mocking support in unittest and virtualenv suppport in the standard library.