Inlinec - новий спосіб використання Сі-коду в Python-скриптах

Проектом inlinec запропоновано новий спосіб inline-інтеграції коду мовою Сі у скрипти мовою Python. Функції мовою Сі визначаються безпосередньо в одному файлі з кодом мовою Python, виділяючись декоратором @inlinec. Зведений скрипт виконується як є інтерпретатором сpython і розбирається з використанням механізму, що надається в Python. кодеків, що дає можливість підключити парсер для перетворення скрипта перед розбором інтерпретатором (як правило, модуль codecs застосовується для прозорого перекодування тексту, але дозволяє і довільним чином трансформувати вміст скрипта).

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

# coding: inlinec
from inlinec import inlinec

@inlinec
def test():
#включати
void test() {
printf(«Hello, world»);
}

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

Джерело: opennet.ru

Додати коментар або відгук