Inlinec - ffordd newydd o ddefnyddio cod C mewn sgriptiau Python

prosiect inlinec Mae dull newydd ar gyfer integreiddio cod C yn fewnol i sgriptiau Python wedi'i gynnig. Diffinnir swyddogaethau C yn uniongyrchol yn yr un ffeil cod Python, a amlygir gan yr addurnwr “@inlinec”. Gweithredir y sgript gryno fel y mae gan y dehonglydd Python a'i dosrannu gan ddefnyddio'r mecanwaith a ddarperir yn Python codecau, sy'n ei gwneud hi'n bosibl cysylltu parser i drawsnewid y sgript cyn ei dosrannu gan y cyfieithydd (fel rheol, defnyddir y modiwl codecs ar gyfer trawsgodio testun tryloyw, ond mae hefyd yn caniatáu ichi drawsnewid cynnwys y sgript yn fympwyol).

Mae'r parser wedi'i gysylltu fel modiwl (“o inlinec import inlinec”), sy'n cyflawni'r prosesu cychwynnol ac ar-y-hedfan yn trosi'r diffiniadau o swyddogaethau C a amlygwyd gan ddefnyddio anodiadau @inlinec yn rhwymiadau ctypes ac yn disodli corff y swyddogaeth C gyda galwad i'r rhwymiadau hyn. Ar ôl trawsnewidiad o'r fath, mae'r dehonglydd Python yn derbyn testun ffynhonnell cywir y sgript wedi'i drosi, lle gelwir y swyddogaethau C yn defnyddio ctypes. Defnyddir dull tebyg yn y prosiect hefyd Pyxl4, sy'n eich galluogi i gymysgu cod HTML a Python mewn un ffeil.

# codio: inlinec
o inlinec mewnforio inlinec

@inlinec
prawf def():
#cynnwys
prawf gwagle() {
printf ("Helo, byd");
}

Mae'r datblygiad hyd yn hyn yn cael ei gyflwyno fel prototeip arbrofol, sy'n cynnwys diffygion o'r fath fel y diffyg cefnogaeth i awgrymiadau pasio (ac eithrio llinynnau) i'r swyddogaeth, yr angen i redeg
“gcc -E” ar gyfer rhagbrosesu cod, arbed ffeiliau canolradd *.so, *.o a *. c yn y cyfeiriadur cyfredol, peidio â storio'r fersiwn wedi'i drosi a pherfformio camau dosrannu diangen (oedi hir bob tro y bydd yn rhedeg).

Ffynhonnell: opennet.ru

Ychwanegu sylw