Проект предложен е нов начин за inline интегриране на Си код в Python скриптове. Функциите на Си се определят директно в един файл с код на Python, като се подчертават с декоратор "@inlinec". Обобщеният скрипт се изпълнява, както е, от интерпретатора сpython и се анализира с помощта на предоставения в Python механизъм. , позволяващ да се свърже парсер за преобразуване на скрипта преди неговото анализиране от интерпретатора (обикновено модулът codecs се използва за прозрачно прекодиране на текста, но позволява и произволно трансформиране на съдържанието на скрипта).
Парсерът се свързва като модул ("from inlinec import inlinec"), който извършва първична обработка и на лето превежда определенията на Си функции, подчертани чрез анотации @inlinec, в ctypes обвивки и заменя тялото на Си функцията с извикване на тези обвивки. След такова преобразуване интерпретаторът на Python получава вече коректно преобразувания текст на скрипта, в който Си функциите се извикват чрез . Подобен метод се прилага и в проекта , който позволява смесване на 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
