Inlinec - in nije manier om C-koade te brûken yn Python-skripts

projekt inlinec In nije metoade foar ynline yntegraasje fan C-koade yn Python-skripts is foarsteld. C funksjes wurde definiearre direkt yn deselde Python koade triem, markearre troch de "@inlinec" decorator. It gearfettingsskript wurdt útfierd lykas is troch de Python-tolk en parseard mei it meganisme dat yn Python wurdt levere codecs, wat it mooglik makket om in parser te ferbinen om it skript te transformearjen foardat it troch de tolk wurdt parset (yn 'e regel wurdt de codecs-module brûkt foar transkodearjen fan transparante tekst, mar it lit jo ek willekeurich de ynhâld fan it skript transformearje).

De parser is ferbûn as in module ("fan inlinec ymportearje inlinec"), dy't de earste ferwurking útfiert en de definysjes fan C-funksjes dy't markearre binne mei @inlinec-annotaasjes yn ctypes-bindingen oersette en it lichem fan 'e C-funksje ferfangt mei in oprop oan dizze binings. Nei sa'n transformaasje krijt de Python-tolk de juste omboude boarnetekst fan it skript, wêryn't de C-funksjes neamd wurde mei ctypes. In fergelykbere metoade wurdt ek brûkt yn it projekt Pyxl4, wêrtroch jo HTML- en Python-koade yn ien bestân kinne mingje.

# kodearring: inlinec
fan inlinec ymportearje inlinec

@ynlinec
def test():
#ynklusje
void test() {
printf("Hallo, wrâld");
}

De ûntwikkeling wurdt oant no ta presintearre as in eksperiminteel prototype, dat sokke tekoarten befettet as it gebrek oan stipe foar it trochjaan fan pointers (útsein stringen) nei de funksje, de needsaak om te rinnen
"gcc -E" foar koade foarferwurking, it bewarjen fan tuskenlizzende *.so, *.o en *.c triemmen yn de aktuele triemtafel, net caching de konvertearre ferzje en it útfieren fan ûnnedige parsing stadia (lange fertraging eltse kear as it rint).

Boarne: opennet.ru

Add a comment