2011-03-21 10 views
7

Il codice prodotto da Cython è sempre corretto come il codice Python da cui è stato prodotto?Cython correctness

Può aiutare gli altri lettori ad indirizzare l'uso delle dichiarazioni di tipo statico Cython e di altre funzionalità di Cython (se presenti), anche se mi interessa solo creare file Cython rinominando i moduli Python in * .pyx.

Mi interessa solo il sottoinsieme di Python coperto da Cython.

risposta

10

In generale, sì. Naturalmente ci sono bugs (molti ruotano attorno all'espansione del sottoinsieme Python supportato, ma i bug che rendono il codice C generato in modo errato sono relativamente rari), e ci sono alcuni elementi necessari caveats (anche se sembra che solo un elemento di quella breve lista diventi Semantica Python).

Quando si aggiungono tipi statici in modalità Python pura, ci sono circostanze in cui fa la differenza se è compilato come Cython o eseguito come codice Python. interi senza segno vengono in mente (esempio: come menzionato in un link, -n possa avvolgere tutto se n privo di firma e range(-n, n) è quindi vuoto), nonché un overflow (Python promuove int s (C long S) long s (abritary precisi di precisione)).

+0

Grazie per la risposta. Sarebbe molto rassicurante sentire da un esperto; lavori sul progetto Cython? A proposito, mi piace il progetto Cython; fornisce funzionalità per me che nessun altro strumento ho trovato fa. – Brian

+1

@Brian: No, non sono così straordinario da essere coinvolto in Cython;) Sono solo un altro utente e studente della documentazione. Se vuoi chiedere agli sviluppatori, almeno alcuni di loro partecipano alla mailing list ['cython-users'] (http://groups.google.com/group/cython-users). – delnan

+0

Sono uno sviluppatore di Cython, e posso dire che qualsiasi regressione da Python sarebbe considerata un bug serio, anche se gli avvertimenti collegati (in particolare usando in modo esplicito gli interi tipizzati di C) dovrebbero essere tenuti in considerazione. – robertwb