Proiectul a fost propus o nouă metodă de integrare inline a codului în limbajul C în scripturi scrise în Python. Funcțiile în C sunt definite direct într-un singur fișier cu cod Python, fiind evidențiate prin decoratorul „@inlinec”. Scriptul agregat este executat ca atare de către interpretul spython și este analizat folosind mecanismul furnizat în Python , oferind posibilitatea de a conecta un parser pentru a transforma scriptul înainte de a fi analizat de interpret (de obicei, modulul codecs este utilizat pentru re-encodarea transparentă a textului, dar permite și transformarea la alegere a conținutului scriptului).
Parserul este conectat sub formă de modul („from inlinec import inlinec”), care efectuează prelucrarea inițială și în timp real transformă definițiile funcțiilor din C, evidențiate prin adnotări @inlinec, în înfășurări ctypes și înlocuiește corpul funcției C cu apelul acestor înfășurări. După o asemenea transformare, interpretul Python primește deja textul sursă corect transformat al scriptului, în care funcțiile C sunt apelate prin . O metodă similară este utilizată și în proiectul , care permite amestecarea codului HTML și Python într-un singur fișier.
# coding: inlinec
from inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hello, world");
}
Dezvoltarea este încă prezentată ca un prototip experimental, în care sunt semnalate anumite neajunsuri, cum ar fi lipsa suportului pentru transmiterea de indicii în funcție (cu excepția șirurilor), necesitatea de a rula
"gcc -E" pentru preprocessarea codului, salvarea fișierelor intermediare *.so, *.o și *.c în directorul curent, lipsa cache-ului pentru varianta transformată și executarea de etape suplimentare de analiză (intârzieri mari la fiecare execuție).
Sursa: opennet.ro
