Inlinec - een nieuwe manier om C-code te gebruiken in Python-scripts

project inlinec Er is een nieuwe methode voorgesteld voor inline-integratie van C-code in Python-scripts. C-functies worden rechtstreeks in hetzelfde Python-codebestand gedefinieerd, gemarkeerd door de “@inlinec”-decorateur. Het samenvattingsscript wordt zoals het is uitgevoerd door de Python-interpreter en geparseerd met behulp van het mechanisme dat in Python wordt geboden codecs, wat het mogelijk maakt om een ​​parser aan te sluiten om het script te transformeren voordat het door de tolk wordt geparseerd (in de regel wordt de codecs-module gebruikt voor transparante teksttranscodering, maar u kunt hiermee ook de inhoud van het script willekeurig transformeren).

De parser is verbonden als een module (“from inlinec import inlinec”), die de initiële verwerking uitvoert en de definities van C-functies die zijn gemarkeerd met @inlinec-annotaties on-the-fly vertaalt naar ctypes-bindingen en de hoofdtekst van de C-functie vervangt door een oproep aan deze bindingen. Na zo’n transformatie ontvangt de Python-interpreter de correct geconverteerde brontekst van het script, waarin de C-functies worden aangeroepen met behulp van ctypes. Een soortgelijke methode wordt ook in het project gebruikt Pyxl4, waarmee u HTML- en Python-code in één bestand kunt combineren.

# codering: inlinec
van inlinec importeer inlinec

@inlinec
zeker testen():
#inclusief
ongeldige test() {
printf("Hallo wereld");
}

De ontwikkeling wordt tot nu toe gepresenteerd als een experimenteel prototype, dat tekortkomingen bevat als het gebrek aan ondersteuning voor het doorgeven van pointers (behalve strings) aan de functie, de noodzaak om
“gcc -E” voor codevoorverwerking, het opslaan van tussenliggende *.so-, *.o- en *.c-bestanden in de huidige map, het niet in de cache opslaan van de geconverteerde versie en het uitvoeren van onnodige parseerfasen (lange vertragingen elke keer dat deze wordt uitgevoerd).

Bron: opennet.ru

Voeg een reactie