Projekt bietet eine neue Methode zur Inline-Integration von C-Code in Python-Skripte. Die C-Funktionen werden direkt in einer Datei mit dem Python-Code definiert und mit dem Dekorator „@inlinec“ hervorgehoben. Das gemeinsame Skript wird als solches vom Interpreter spython ausgeführt und mithilfe des in Python bereitgestellten Mechanismus analysiert. , der die Möglichkeit bietet, einen Parser hinzuzufügen, um das Skript vor seiner Analyse durch den Interpreter zu transformieren (gewöhnlich wird das Modul codecs für eine transparente Textumwandlung verwendet, es erlaubt jedoch auch beliebige Transformationen des Inhalts des Skripts).
Der Parser wird als Modul integriert („from inlinec import inlinec“), das die erste Verarbeitung durchführt und zur Laufzeit die C-Funktionsdefinitionen, gekennzeichnet durch die Annotationen @inlinec, in ctypes-Bindings umwandelt und den C-Funktionskörper durch einen Aufruf dieser Bindings ersetzt. Nach dieser Umwandlung erhält der Python-Interpreter bereits den korrekt transformierten Quelltext des Skripts, in dem die C-Funktionen durch aufgerufen werden. Eine ähnliche Methode wird auch im Projekt verwendet, das es ermöglicht, HTML- und Python-Code in einer Datei zu vermischen.
# coding: inlinec
von inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hallo, Welt");
}
Die Entwicklung wird bisher als experimenteller Prototyp präsentiert, bei dem solche Mängel festzustellen sind, wie das Fehlen der Unterstützung für die Übergabe von Zeigern an Funktionen (außer für Strings), die Notwendigkeit, "gcc -E" für die Präprozessierung des Codes auszuführen, die Speicherung von Zwischen-* .so, *.o und *.c-Dateien im aktuellen Verzeichnis, das Fehlen von Caching des umgewandelten Formats und die Ausführung unnötiger Parsing-Stufen (große Verzögerungen bei jedem Start).
Das Projekt inlinec schlägt einen neuen Ansatz zur Inline-Integration von C-Code in Python-Skripte vor. C-Funktionen werden direkt in einer Datei mit Python-Code definiert und durch den Dekorator "@inlinec" hervorgehoben. Das aggregierte Skript wird unverändert vom Interpreter spython ausgeführt und mit dem in Python bereitgestellten Codec-Mechanismus geparst, was die Anbindung eines Parsers zur Umwandlung des Skripts ermöglicht.
Quelle: opennet.ru
