Saadaval on Pythoni teegi teaduslikuks arvutamiseks NumPy 2.0.0 väljalase, mis keskendub mitmemõõtmeliste massiivide ja maatriksitega töötamisele ning pakub ka suurt funktsioonide kogumit erinevate maatriksite kasutamisega seotud algoritmide rakendamiseks. NumPy on üks populaarsemaid teeke, mida kasutatakse teaduslike arvutuste tegemiseks. Projekti kood on kirjutatud Pythonis, kasutades optimeerimist C-s ja seda levitatakse BSD litsentsi all.
NumPy 2.0.0 on esimene oluline väljalase alates 2006. aastast.
Uues versioonis on lisaks uutele funktsioonidele ja jõudluse optimeerimisele tehtud muudatusi ABI-s, Pythoni API-s ja C-API-s, mis rikuvad tagasiühilduvust. Näiteks NumPy 1.x-ga kompileeritud SciPy teek vajab NumPy 2.0-ga töötamiseks uuesti kompileerimist. Mõnel juhul võib NumPy 2.0 kasutamiseks rakendustes olla vajalik koodi muutmine.
Наиболее крупное нарушение связано с сохранением точности скалярных выражений, например, «np.float32(3) + 3» теперь вернёт значение с типом float32, а не float64, а в выражениях с несколькими типами для результата будет использован тип с наивысшей точностью, т.е. «np.array([3], dtype=np.float32) + np.float64(3)» вернёт значение с типом float64. Изменены целочисленные типы, применяемые по умолчанию на платфoрме Windows — на 64-разрядных системах теперь применяется 64-разрядный целый тип, а на 32-разрядных — 32-разрядный (ранее использовался аналог Си-типа long, а теперь эквивалент np.intp).
Mõned definitsioonid C-API-s on asendatud või eemaldatud, näiteks on muudetud PyArray_Descr struktuuri. Makrode NPY_MAXDIMS ja NPY_MAXARGS kaudu määratud mõõtmete ja argumentide maksimaalne arv on suurendatud 64-ni. Kõik komplekstüübid on üle viidud C99 spetsifikatsiooni standardtüüpide (cfloat_t, cdouble_t, clongdouble_t) kasutamisele. Lisatud uus C API kohandatud dtypede loomiseks. Välja on pakutud uued lihtsustatud lähtestamisfunktsioonid PyArray_ImportNumPyAPI ja PyUFunc_ImportUFuncAPI.
Pythoni API eraldab avaliku ja privaatse API selgemalt ning tutvustab uut moodulite struktuuri. Umbes 100 funktsiooni, moodulit ja konstanti on põhinimeruumist "np" teisaldatud, aegunud või eemaldatud.
Puhastas np.lib nimeruumi. Objektide arvu põhinimeruumis on vähendatud 10% ja numpy.lib nimeruumis 80%. Nimeruum numpy.core on muudetud privaatseks. Mõned meetodid eemaldati klassidest np.ndarray ja np.generic. Loodi uus nimeruum numpy.stringsf stringitoimingutega.
Uute funktsioonide hulka kuuluvad float32 ja longdouble tüüpide tugi kõigis numpy.fft funktsioonides, standardse Array API tugi põhinimeruumis, uus nimeruum ja muutuva pikkusega stringide tüübid. Jõudluse optimeerimiseks on kasutatud Inteli x86-simd-sort ja Google Highway teeke stringifunktsioonide sortimiseks, argsorteerimiseks, partitsiooniks ja argpartitsiooniks, moodulis numpy.char fikseeritud stringidega toiminguid on kiirendatud. Lisatud uus API
opt_func_info jälgimiseks ja enesevaatluseks.
Allikas: opennet.ru
