programmatūra · 5 min · 11.07.2026

ty pret Pyrefly: kurš Rust pārbaudītājs aizstās mypy Python projektos

10. jūlijā Astral izlaida sava Python tipu pārbaudītāja ty versiju 0.0.58 — jau 58. laidienu kopš decembra, kad rīks nonāca beta stadijā. Konkurents Pyrefly no Meta stabilu 1.0 sasniedza maijā un tagad izlaidumus dod reizi mēnesī. Abi ir rakstīti Rust valodā un pārbauda Python tipus desmitiem reižu ātrāk nekā mypy, kas gadiem bija noklusējuma izvēle.

Ja tavā projektā tipu pārbaude aizņem minūtes vai CI konveijers gaida mypy, 2026. gadā ir divas nopietnas alternatīvas. Ātrums ir tikai viena atšķirība; tikpat svarīgi ir tas, cik agresīvi katrs secina tipus un cik pilnīgi seko Python tipu specifikācijai.

Ātrums, ko var izmērīt

Astral ziņo, ka ty uz aukstas palaišanas ir 10–60 reižu ātrāks par mypy un Pyright. Vēl lielāka atšķirība parādās redaktorā. Pēc faila labošanas PyTorch repozitorijā ty pārrēķina diagnostiku 4,7 milisekundēs; Pyright tam patērē 386 ms, bet Pyrefly — 2,38 sekundes. Tas ir 80 reižu ātrāk par Pyright un vairāk nekā 500 reižu ātrāk par Pyrefly konkrēti inkrementālajos atjauninājumos.

Pyrefly savukārt spīd uz lieliem koda apjomiem. Meta rīks pārbauda ap 1,85 miljoniem koda rindu sekundē, un Instagram 20 miljonu rindu kodu tas apstrādā aptuveni 30 sekundēs. Uz auksta koda Pyrefly ir 10–50 reižu ātrāks par mypy un Pyright. Abu rīku ātruma cipari mainās no laidiena uz laidienu, jo abas komandas optimizē paralēli.

Ātrums nāk no arhitektūras. ty ir būvēts ap inkrementalitāti — pēc faila labošanas tas pārrēķina tikai to, kas tiešām mainījies, nevis visu no jauna. Tāpēc rīks strādā gan kā komandrindas pārbaudītājs, gan kā valodas serveris (LSP) redaktorā: pāreja uz definīciju, simbolu pārdēvēšana, automātiskā pabeigšana, imports un tipu mājieni rindā. Kļūdu ziņojumi ir aizgūti no Rust kompilatora stila un spēj vilkt kontekstu no vairākiem failiem uzreiz. Agrīnās izstrādes laikā rīks bija pazīstams ar kodnosaukumu Red-Knot.

Divas dažādas pieejas tipiem

Ātrums nav vienīgā atšķirība. ty tur t.s. gradual guarantee — tipu anotāciju pievienošana strādājošam kodam nekad nerada jaunas kļūdas. Tas padara pakāpenisku ieviešanu paredzamu daļēji anotētā koda bāzē: vari sākt ar dažiem failiem un neuztraukties, ka pārbaudītājs pēkšņi apbērs ar brīdinājumiem.

Pyrefly secina tipus agresīvāk. Tas atklāj konkrētas apvienības un noķer kļūdas, piemēram, None * 2, pat neanotētā kodā. Praksē tas nozīmē vairāk atrastu problēmu, bet arī vairāk trokšņa, migrējot vecu projektu. Kura pieeja labāka, atkarīgs no koda: pilnīgi neanotētā projektā Pyrefly uzreiz atradīs reālas kļūdas, kamēr ty gaidīs, līdz pievienosi tipus.

Abi rīki ir atvērtā koda ar MIT licenci. Pyrefly stabilo 1.0 sasniedza maijā, 1.1 — jūnijā, un jauni laidieni nāk reizi mēnesī. ty joprojām skaita 0.x versijas ar laidieniem gandrīz katru nedēļu.

Live atjauninājumi kļūst ārkārtīgi ātri jebkura redaktora vai ilgi dzīvojoša procesa kontekstā, saka Astral dibinātājs Čārlijs Māršs par inkrementālo arhitektūru.

Specifikācijas atbilstība — te ty vēl atpaliek

Ātrums ir viens mērs, precizitāte cits. Python tipu specifikācijas testu komplektā Pyrefly atbilstība ir pieaugusi no 70% beta stadijā līdz 92,2%. Salīdzinājumam mypy sasniedz 59,6%, Pyright 95,7%, bet mazāk zināmais Zuban — 99,3%. ty šeit vēl ir 67,4% robežās, ko var sagaidīt no rīka, kas joprojām nēsā 0.x versijas numuru.

Tieši tāpēc Astral vēl nav izlaidusi stabilu 1.0. Komanda plāno to šogad un līdz tam koncentrējas uz trešo pušu bibliotēku atbalstu — pirmām kārtām Pydantic un Django — un uz atlikušajām specifikācijas iezīmēm. Pati Astral komanda ty jau lieto savos projektos, taču publiski iesaka to kā rīku, ar ko eksperimentēt, nevis kā vienīgo CI vārtsargu.

Ko darīt, ja esi uz mypy

Migrācijas darbietilpīgo daļu Pyrefly 1.0 ir padarījusi bezmaksas. Komanda pyrefly init nolasa esošo mypy.ini, uzraksta Pyrefly konfigurāciju un izveido bāzes failus, kas ļauj CI palikt zaļam, kamēr pa vienam risini jaunās, stingrākās diagnostikas. Pyrefly kods ir atvērts GitHub, un to jau lieto PyTorch un JAX.

ty uzstāda ar uv tool install ty@latest vai caur VS Code paplašinājumu. Tas labi saderēs, ja jau strādā ar Astral rīkiem Ruff un uv — visi trīs balstās uz to pašu Rust bāzi un vienu domāšanas veidu par ātrumu. Bet līdz stabilai 1.0 rēķinies ar biežām izmaiņām un ar to, ka daļa bibliotēku vēl netiek pilnībā saprastas.

Praktiskā izvēle 2026. gada vidū iznāk apmēram šāda: liels, ražošanā strādājošs projekts, kuram vajag pilnu specifikācijas atbalstu jau tagad — Pyrefly. Redaktora atsaucība un pakāpeniska tipu ieviešana bez jaunām kļūdām — ty, saprotot, ka tas vēl aug. mypy paliek strādājošs, tikai lēnāks, un abi jaunie rīki prot no tā pārņemt konfigurāciju.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie