È disponibile il rilascio della libreria Python per calcoli scientifici NumPy 2.0.0, orientata al lavoro con array multidimensionali e matrici, fornendo inoltre una vasta collezione di funzioni che implementano vari algoritmi legati all'uso delle matrici. NumPy è una delle librerie più richieste per i calcoli scientifici. Il codice del progetto è scritto in Python con ottimizzazioni in C e distribuito con licenza BSD.
NumPy 2.0.0 è contrassegnato come il primo rilascio significativo dal 2006.
Nella nuova versione, oltre a nuove funzionalità e ottimizzazioni delle prestazioni, sono state apportate modifiche all'ABI, all'API Python e all'API C, che violano la compatibilità all'indietro. Ad esempio, la libreria SciPy compilata con NumPy 1.x per lavorare con NumPy 2.0 richiederà una ricompilazione. In alcuni casi, per utilizzare NumPy 2.0 nelle applicazioni potrebbe essere necessario apportare modifiche al codice.
La violazione più significativa riguarda la conservazione della precisione nelle espressioni scalari; ad esempio, «np.float32(3) + 3» ora restituirà un valore di tipo float32 e non float64, mentre nelle espressioni con più tipi verrà utilizzato il tipo con la massima precisione, cioè «np.array([3], dtype=np.float32) + np.float64(3)» restituirà un valore di tipo float64. I tipi interi predefiniti sono stati modificati sulla piattaforma Windows: sui sistemi a 64 bit ora viene utilizzato un tipo intero a 64 bit, mentre su quelli a 32 bit viene utilizzato un tipo intero a 32 bit (precedentemente veniva utilizzato un tipo simile a long in C, ora è equivalente a np.intp).
Alcune definizioni nell'API C sono state modificate o rimosse, ad esempio, la struttura PyArray_Descr è stata cambiata. Il numero massimo di dimensioni e argomenti, definito dai macro NPY_MAXDIMS e NPY_MAXARGS, è stato incrementato a 64. Tutti i tipi complessi sono stati portati a utilizzare i tipi standard dalla specifica C99 (cfloat_t, cdouble_t, clongdouble_t). È stata aggiunta una nuova API C per la creazione di dtype personalizzati. Sono state proposte nuove funzioni semplificate per l'inizializzazione di PyArray_ImportNumPyAPI e PyUFunc_ImportUFuncAPI.
Nell'API Python è stata garantita una separazione più chiara tra API pubbliche e private, e proposta una nuova struttura dei moduli. Circa 100 funzioni, moduli e costanti sono state estratte dallo spazio dei nomi principale «np», dichiarate obsolette o rimosse.
Spazio dei nomi np.lib pulito. Il numero di oggetti nello spazio dei nomi principale è stato ridotto del 10%, mentre nello spazio dei nomi numpy.lib è stato ridotto dell'80%. Trasferito nella categoria degli spazi dei nomi privati numpy.core. Alcuni metodi sono stati rimossi dalle classi np.ndarray e np.generic. È stato creato un nuovo spazio dei nomi numpy.stringsf con operazioni su stringhe.
Tra le nuove funzionalità si segnala il supporto ai tipi float32 e longdouble in tutte le funzioni numpy.fft, il supporto per l'API Array standard nello spazio dei nomi principale, un nuovo spazio dei nomi e tipi per stringhe di lunghezza variabile. Sono state effettuate ottimizzazioni delle prestazioni utilizzando le librerie Intel x86-simd-sort e Google Highway per le funzioni di ordinamento, argsort, partizione e argpartition delle stringhe, e sono state accelerate le operazioni con stringhe fisse nel modulo numpy.char. È stata aggiunta una nuova API
opt_func_info per tracciamento e introspezione.
Fonte: opennet.ru
