Pyrex è un linguaggio per i moduli di scrittura Python estensione.
Pyrex è un linguaggio appositamente progettato per la scrittura di moduli di estensione Python. E 'progettato per colmare il divario tra il bello, di alto livello, mondo facile da usare di Python e il disordinato, a basso livello mondo di C.
Ci si potrebbe chiedere perché qualcuno vorrebbe un linguaggio speciale per questo. Python è davvero semplice da estendere in C o C ++, non è vero? Perché non scrivere i moduli di estensione in una di queste lingue?
Beh, se hai mai scritto un modulo di estensione per Python, saprete che le cose non sono così facili come tutto ciò che. Prima di tutto, c'è un bel po 'di codice standard per scrivere prima si può anche scendere a terra. Allora dovete affrontare il problema della conversione tra tipi di dati Python e C. Per i tipi di base come numeri e stringhe questo non è troppo male, ma niente di più elaborato e siete in Python raccogliendo oggetti a parte con i / C chiamate API di Python, che richiede di essere meticoloso circa mantenere il numero di riferimento, controllo degli errori ad ogni passo e per la bonifica correttamente se qualcosa va storto. Eventuali errori e si dispone di una dura entrata che è molto difficile da mettere a punto.
Vari strumenti sono stati sviluppati per alleviare alcuni degli oneri di produzione codice di estensione, di cui forse SWIG è il più conosciuto. SWIG prende un file di definizione costituito da una miscela di codice C e dichiarazioni specializzati, e produce un modulo di estensione. Scrive tutto il boilerplate per voi, e in molti casi si può utilizzare senza conoscere le API Python / C. Ma è necessario utilizzare chiamate API se è necessaria la sostanziale ristrutturazione dei dati tra il Python e C.
Cosa c'è di più, SWIG ti dà nessun aiuto a tutti, se si desidera creare un nuovo tipo built-in Python. Esso genera classi pura Python che avvolgono (in un modo leggermente pericoloso) puntatori a strutture di dati C, ma la creazione di tipi di estensione veri è fuori della sua influenza.
Un altro tentativo notevole a rendere più facile per estendere Python è PyInline, ispirato da una struttura simile per Perl. PyInline consente di incorporare parti di codice C nel bel mezzo di un file Python, e automaticamente li estrae e li compila in un interno. Ma converte solo i tipi di base automaticamente, e come con SWIG, non affronta la creazione di nuovi tipi di Python.
Pyrex mira ad andare ben oltre ciò che uno di questi strumenti precedenti è destinata. Pyrex si occupa dei tipi di base facilmente come SWIG, ma permette anche di scrivere codice per la conversione tra strutture dati Python arbitrari e strutture di dati C arbitrarie, in un modo semplice e naturale, senza sapere nulla l'API Python / C. Proprio così - niente affatto! Né si deve preoccupare di conteggio di riferimento o il controllo degli errori - è tutto curato automaticamente, dietro le quinte, così come è nel codice Python interpretato. E per di più, Pyrex consente di definire nuovi tipi built-in Python con la stessa facilità si possono definire nuove classi in Python.
Cosa c'è di nuovo in questo rilascio:
· Bugfix Piccolo per correggere un problema di scheda / spazio in estensione distutils.
Dettagli del software:
Versione: 0.9.4.1
Data di caricamento: 3 Jun 15
Licenza: Libero
Popolarità: 113
I commenti non trovato