Projektet ett nytt sÀtt att inline-integrera kod i C-sprÄket i Python-skript föreslÄs. Funktioner i C definieras direkt i samma fil med Python-kod, markerade med dekoreraren "@inlinec". Det aggregerade skriptet körs som det Àr av tolken spython och tolkas med hjÀlp av den mekanism som tillhandahÄlls i Python. , som ger möjlighet att ansluta en parser för att transformera skriptet innan det tolkas av tolken (vanligtvis anvÀnds modulen codecs för transparent omkodning av text, men den möjliggör Àven godtycklig transformation av skriptinnehÄllet).
Parsern ansluts som en modul ("from inlinec import inlinec"), som utför en preliminÀr behandling och översÀtter i realtid definitionerna av C-funktioner, markerade med annoteringar @inlinec, till ctypes-bindningar och ersÀtter C-funktionens kropp med anrop till dessa bindningar. Efter en sÄdan transformation fÄr Python-tolken en korrekt transformerad kÀllkod, dÀr C-funktionerna anropas med hjÀlp av . En liknande metod anvÀnds ocksÄ i projektet , som möjliggör att blanda HTML och Python-kod i en och samma fil.
# coding: inlinec
from inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hello, world");
}
Utvecklingen presenteras fortfarande som en experimentell prototyp, dÀr sÄdana brister noteras som ingen stöd för att skicka pekare (utom strÀngar) till funktionen, behovet av att köra
"gcc -E" för förbehandling av koden, sparande av mellanliggande *.so, *.o och *.c-filer i den aktuella katalogen, avsaknad av caching av den transformerade varianten och genomförande av onödiga tolkningsteg (stora fördröjningar vid varje körning).
KĂ€lla: opennet.ru
