Matt Godbolt macht einen Adentskalender über Compileroptimierungen.
Hier ist die ganze Playlist über alle Tage.
Matt Godbolt macht einen Adentskalender über Compileroptimierungen.
Hier ist die ganze Playlist über alle Tage.
WebAssembly Troubles part 1: WebAssembly Is Not a Stack Machine. Der ganze Blog enthält noch mehr Posts in die Richtung.
Microsoft portiert den TypeScript-Compiler in eine native Sprache. Das ist echt eine Mammutaufgabe. Sie benutzen Go.
Hier ist das Repo. Titel ist “TypeScript 7”. Da wir aktuell bei Version 5 sind, ist damit wohl klar, was sie für einen Zeitplan für die Fertigstellung haben.
Apple sucht Compiler-Leute, die den Interop von Swift und C++ verbessern.
Swift ist IMHO eine wirklich unterschätzte Sprache. Die haben keine Angst vor breaking Changes und trotzdem schaffen sie es, kein Python 3 zu erzeugen. Der Code ist üblicherweise sehr lesbar und seit einiger Zeit haben sie sogar ein Ownership-Modell, das zwar etwas verboser ist, aber IMHO deutlich verständlicher als das von Rust ist. Vielleicht wären sie populärer geworden, wenn Linux- und Windows-Support nicht so lange gedauert hätte, wer weiß ¯\_(ツ)_/¯
Ein schöner Talk von Matt Godbolt: What Has My Compiler Done for Me Lately? Unbolting the Compiler’s Lid.
Für die, die ihn nicht kennen: Das ist der, der den Compiler Explorer gebaut hat: https://gcc.godbolt.org
Damit kann man sich anschauen, was für Assembler-Code verschiedene Compiler aus Code erzeugen. Mittlerweile auch für andere Sprachen als C und C++.
Der Talk ist sehr schön und zeigt, was für Optimierungen der Compiler mittlerweile alle fährt. Ein Beispiel ist die Integer-Mulitplikation mit 2, also z. B. x * 2. Spoiler: Es ist nicht x << 1. Aber auch ein paar größere Beispiele sind durchaus beeindruckend.
Takeaway sollte sein: Optimiert nicht selbst, lasst das den Compiler machen. Ich würde noch ergänzen: Wählt geeignete Datenstrukturen.
Eine interessante Blogpost-Serie: Implementing Co, a Small Interpreted Language With Coroutines #2: The Interpreter (Part I ist der Parser).
Einen Type-Checker schreiben: Reconstructing TypeScript, part 1