Inlinec — нов начин за използване на Си-код в Python скриптове

Проект inlinec предложен е нов начин за inline интегриране на Си код в Python скриптове. Функциите на Си се определят директно в един файл с код на Python, като се подчертават с декоратор "@inlinec". Обобщеният скрипт се изпълнява, както е, от интерпретатора сpython и се анализира с помощта на предоставения в Python механизъм. кодеци, позволяващ да се свърже парсер за преобразуване на скрипта преди неговото анализиране от интерпретатора (обикновено модулът codecs се използва за прозрачно прекодиране на текста, но позволява и произволно трансформиране на съдържанието на скрипта).

Парсерът се свързва като модул ("from inlinec import inlinec"), който извършва първична обработка и на лето превежда определенията на Си функции, подчертани чрез анотации @inlinec, в ctypes обвивки и заменя тялото на Си функцията с извикване на тези обвивки. След такова преобразуване интерпретаторът на Python получава вече коректно преобразувания текст на скрипта, в който Си функциите се извикват чрез ctypes. Подобен метод се прилага и в проекта Pyxl4, който позволява смесване на HTML и Python код в един файл.

# coding: inlinec
from inlinec import inlinec

@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hello, world");
}

Разработката все още се представя като експериментален прототип, в който се отбелязват недостатъци, като например липсата на поддръжка за предаване на указатели в функция (с изключение на низове), необходимостта от стартиране на
"gcc -E" за предварителна обработка на кода, запазването на междинни *.so, *.o и *.c файлове в текущата папка, липсата на кеширане на преобразувания вариант и изпълнението на излишни етапи на анализиране (големи закъснения при всяко стартиране).

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster