Projeto uma nova forma de integração inline de código em C em scripts Python foi proposta. As funções em C são definidas diretamente em um único arquivo com código Python, destacadas pelo decorador «@inlinec». O script resultante é executado como está pelo interpretador spython e analisado usando o mecanismo fornecido em Python. , que permite conectar um parser para transformar o script antes que ele seja analisado pelo interpretador (geralmente, o módulo codecs é usado para reencodificação transparente de texto, mas também permite transformar o conteúdo do script de forma arbitrária).
O parser é conectado como um módulo («from inlinec import inlinec»), que realiza o processamento inicial e, em tempo real, traduz as definições das funções em C, destacadas por meio de anotações @inlinec, em ligações ctypes e substitui o corpo da função em C pela chamada dessas ligações. Após essa transformação, o interpretador Python recebe um texto de script corretamente transformado, no qual as funções em C são chamadas via . Um método semelhante também é aplicado no projeto , que permite misturar código HTML e Python em um único arquivo.
# coding: inlinec
from inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf(«Hello, world»);
}
O desenvolvimento ainda é apresentado como um protótipo experimental, no qual são observadas algumas falhas, como a falta de suporte para passagem de ponteiros para a função (exceto para strings), a necessidade de executar
«gcc -E» para pré-processamento de código, a manutenção de arquivos intermediários *.so, *.o e *.c no diretório atual, a falta de cache da versão transformada e a execução de etapas desnecessárias de análise (grandes atrasos a cada execução).
Fonte: opennet.ru
