# GCC 13 to support Modula-2: Follow-up to Pascal lives on in FOSS form

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.

# 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 the len bytes of memory starting at addr 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 like mmap() or mprotect() 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.

Here’s a list of differences.

# 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.