Tail Call Interpreter: Vier Jahre Fortschritt

2025-02-20

Vor vier Jahren erregte ein Artikel über das Schreiben extrem schneller Interpreter mit Tail Calls und dem Attribut `musttail` großes Interesse. Heute findet diese Technik Anwendung in Python 3.14, LuaJIT Remake und anderen Projekten und liefert signifikante Performance-Verbesserungen. Der Artikel untersucht die Unterstützung von `musttail` durch GCC und Clang, den potenziellen Einfluss des "return goto"-Vorschlags im C-Standard auf Tail Call Interpreter und beschreibt detailliert die Rolle der Attribute `preserve_none` und `preserve_most` bei der Optimierung von Tail Call Interpretern. Er schließt mit einer Zusammenfassung der spannenden Fortschritte in der Entwicklung von Compilern und Programmiersprachen-Interpretern.

Mehr lesen
Entwicklung Tail Call

Panic-freies Rust: Kann Rust C für Low-Level-Systemprogrammierung ersetzen?

2025-02-03

Dieser Artikel untersucht die Machbarkeit, C für Low-Level-Systemprogrammierung durch Rust zu ersetzen, insbesondere im Hinblick auf die Protocol-Buffers-Bibliothek upb. Der Autor bezweifelte zunächst, ob Rust in Bezug auf Performance und Codegröße mit C mithalten kann, entdeckte aber die Technik "Panic-freies Rust". Dies bedeutet, `panic!()` zu vermeiden. Der Artikel geht detailliert auf die Prinzipien, Vorteile und Herausforderungen von Panic-freiem Rust ein, einschließlich Codegröße, nicht wiederherstellbare Beendigung und Laufzeit-Overhead. Es wird gezeigt, wie man Panic-freies Rust-Code mit Techniken wie der Verwendung der libc-Bibliothek, Optimierungsoptionen und `std::hint::assert_unchecked` schreibt, wobei die Beibehaltung von Überlaufprüfungen im Debug-Modus für zusätzliche Konsistenzprüfungen hervorgehoben wird. Obwohl diese Technik sorgfältige Arbeit erfordert und möglicherweise das Vermeiden des größten Teils der Standardbibliothek notwendig macht, verspricht sie die Performance und Codegröße einer C-Bibliothek bei gleichzeitiger Beibehaltung der Sicherheit von Rust.

Mehr lesen
Entwicklung