Inlinec - Python сценарийлерінде C кодын пайдаланудың жаңа жолы

жоба кірістірілген C кодын Python сценарийлеріне кірістірілген интеграциялаудың жаңа әдісі ұсынылды. C функциялары "@inlinec" декораторымен бөлектелген бірдей Python код файлында тікелей анықталады. Жиынтық сценарий Python интерпретаторы сияқты орындалады және Python тілінде берілген механизм арқылы талданады. кодектер, бұл интерпретатормен талдаудан бұрын сценарийді түрлендіру үшін талдаушыны қосуға мүмкіндік береді (әдетте, кодектер модулі мөлдір мәтінді қайта кодтау үшін пайдаланылады, бірақ ол сценарийдің мазмұнын еркін түрлендіруге де мүмкіндік береді).

Талдаушы модуль ретінде қосылған («inlinec import inlinec ішінен»), ол бастапқы өңдеуді орындайды және @inlinec аннотациялары арқылы бөлектелген C функцияларының анықтамаларын ctypes байланыстарына бірден аударады және C функциясының денесін келесімен ауыстырады осы байламдарға шақыру. Осындай түрлендіруден кейін Python интерпретаторы сценарийдің дұрыс түрлендірілген бастапқы мәтінін алады, онда C функцияларын пайдалану арқылы шақырылады. түрлері. Осыған ұқсас әдіс жобада да қолданылады Pyxl4, бұл HTML және Python кодын бір файлға араластыруға мүмкіндік береді.

# кодтау: inlinec
кірістірілген импорт inlinec ішінен

@inlinec
Def test():
#қосу
жарамсыз сынақ() {
printf("Сәлем, әлем");
}

Әзірлеу әзірге тәжірибелік прототип ретінде ұсынылған, онда функцияға көрсеткіштерді (жолдардан басқа) беруді қолдаудың болмауы, іске қосу қажеттілігі сияқты кемшіліктер бар.
«gcc -E» кодты алдын ала өңдеу, аралық *.so, *.o және *.c файлдарын ағымдағы каталогта сақтау, түрлендірілген нұсқаны кэштеу және қажетсіз талдау кезеңдерін орындау (әрбір іске қосылғанда ұзақ кідіріс).

Ақпарат көзі: opennet.ru

пікір қалдыру