Login
Newsletter
Werbung

Fr, 4. Oktober 2013, 10:10

Software::Entwicklung

libgccjit: GCC als eingebetteter JIT-Compiler

David Malcolm von Red Hat hat einen Patch vorgestellt, mit dem sich der GNU C Compiler als Bibliothek in ein Programm einbinden lässt. Dort kann er dazu verwendet werden, C-Code direkt vor der Ausführung zu übersetzen.

gnu.org

Wie der Red Hat-Entwickler David Malcolm auf der Mailingliste von GCC mitteilt, ist seine Bibliothek, die sich zur Zeit noch in der experimentellen Phase befindet, geeignet, um dynamisch von Programmen geladen zu werden. Damit können solche Programme beispielsweise Bytecode, aber auch C-Code unmittelbar vor der Ausführung (»Just in Time«, JIT) in Maschinencode zu übersetzen. So könnte ein Programm C als Skriptsprache für Erweiterungen nutzen.

C als Skriptsprache ist allerdings nicht neu, es existieren bereits mehrere freie und proprietäre C-Interpreter. Auch der Tiny C Compiler (TCC) des Qemu-Entwicklers Fabrice Bellard kann als Quasi-Interpreter eingesetzt werden. Doch daneben existieren zahlreiche weitere einbettbare Interpreter und JIT-Compiler. Insbesondere scheint Javascript, für das ausgereifte und schnelle JIT-Compiler zur Verfügung stehen, in den letzten Jahren stark an Popularität gewonnen zu haben.

Das Vorgehen von Malcolm ist jedoch etwas anders. Es besteht im Wesentlichen darin, eine neue Option zur Compilierung von GCC hinzuzufügen, mit der GCC komplett als dynamische Bibliothek anstatt als ausführbares Programm gebaut wird. Diese DLL kann von Programmen geladen und der darin enthaltene Compiler über ein reines C-API gestartet werden.

Die Bibliothek ist noch nicht ausgereift, was sich unter anderem daran zeigt, dass sie abstürzt, wenn man mit Optimierung compilieren will. Sie unterstützt erst eine kleine Teilmenge von C-Code. Auch die Funktionen können sich noch ändern. Trotzdem hat der Entwickler bereits die Grundlagen einer Python-Bindung entwickelt, das inzwischen als separates Projekt auf Github liegt.

Die GCC-Entwickler stehen dem Projekt positiv gegenüber, wenn auch noch nicht absehbar ist, ob und wann es in GCC integriert wird. Der Code ist vorerst in einem separaten Zweig von GCC zu finden.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung