Modula-2 is still in use today, for instance in the Russian GLONASS sat-nav system. There has been a GNU Modula-2 for a while, but now that this patch has been merged, Modula-2 will be part of the main toolchain in GCC 13, along with the preliminary support for Rust which recently landed. GCC 13 will support the PIM 2, 3 and 4 and ISO dialects of the language.
# Python 3.11 delivers
Dustin Ingram, PyPI maintainer:
This is a graph of CPU utilization for the web services that power PyPI. Today we upgraded from 3.10 to 3.11 and saw a significant and correlated drop in CPU usage — nearly half.
# Announcing SvelteKit 1.0
After two years in development, SvelteKit has finally reached 1.0. As of today, it’s the recommended way to build Svelte apps of all shapes and sizes.
SvelteKit is a framework for building web apps with Svelte, similar to Next/Nuxt. It replaces Sapper from the previous version of Svelte.
# mimmutable() for OpenBSD
OpenBSD founder Theo de Raadt first proposed a new system call, called
mimmutable()
, at the beginning of September. After numerous revisions, the system call looks to be merged as:int mimmutable(void *addr, size_t len);
A call to
mimmutable()
will render the mapping of thelen
bytes of memory starting ataddr
immutable, meaning that the kernel will not allow any changes to either the memory protections or the mapping in that range. As a result, system calls likemmap()
ormprotect()
that would affect that range will, instead, fail.
# Codon: a LLVM-based compiler for Python(-like) code
Codon is a high-performance Python compiler that compiles Python code to native machine code without any runtime overhead. Typical speedups over Python are on the order of 10-100x or more, on a single thread. Codon’s performance is typically on par with (and sometimes better than) that of C/C++. Unlike Python, Codon supports native multithreading, which can lead to speedups many times higher still.
Interesting! However:
While Codon supports nearly all of Python’s syntax, it is not a drop-in replacement, and large codebases might require modifications to be run through the Codon compiler.
# Chrome, 10 years later
Evan Martin’s fun stories about early Chrome development.
At one point the question came up: how many redirects should a browser follow? Say you try to load A, but it redirects you to B, which redirects to C, and so on; at some point you should give up and say something is broken. Someone picked some reasonable-seeming threshold, like 10 or so, after which Chrome would give up. Then Darin, who had previously worked on Firefox, said “no, it has to be 30, or it breaks the New York Times — I know this from experience”.
On Apple:
About half of Chrome’s code was our fork of WebKit, which we reintegrated into Apple’s upstream after Chrome released (only to eventually permanently fork again many years later, after my time). This meant that, shortly after our release, changes we made needed to be approved by Apple engineers.
In retrospect I enjoyed this a lot, for two reasons. One is that getting code review from experienced engineers is one of the best ways to grow as a programmer, and the Apple engineers came from a totally foreign engineering culture — no unit tests! no comments! — that also was clearly producing a high-quality product.
Also, apparently Chrome used to have a full-text search engine for history. I remember reading SQLite docs about FTS3 and being surprised that it was contributed by Google.
# What’s new in PHP 8.2
I like this feature:
PHP 8.2 allows you to mark such “sensitive parameters” with an attribute, so that you don’t need to worry about them being listed in your stack traces when something goes wrong. Here’s an example from the RFC:
function login( string $user, #[\SensitiveParameter] string $password ) { // … throw new Exception('Error'); } login('root', 'root');
Fatal error: Uncaught Exception: Error in login.php:8 Stack trace: #0 login.php(11): login('root', Object(SensitiveParameterValue)) #1 {main} thrown in login.php on line 8
# Dart 3 will have sound null safety
For Dart, we chose the path of sound null safety. This involved a tradeoff. In a few cases, this made migrating to null safety a bit more expensive but results in a sound type system with complete trust in the non-null type annotations.
Developers must migrate their apps:
“While the migration to null-safety was certainly not easy for a large-scale codebase like the MyBMW app, Google’s tools gave us great assistance in the migration process. After having the migration completed we enjoy having a less error-prone codebase.”, Christian Schmid, BMW AG
# Developing the Bloomberg Terminal
A good talk by Paul Williams describing the internals of the Bloomberg Terminal software:
It combines a highly-scalable, proprietary data processing technology written in C++ with an embedded Chromium browser core and its V8 JavaScript engine. The result is a challenging, distributed run-time environment that must perform well and be measurable. The talk will cover some of the techniques used to develop and instrument this system.
# Named color wheel
A color wheel that only contains colors with names in CSS. Pretty cool!