programmatūra · 5 min · 12.10.2026

Google nomaina Pytype pret Meta Pyrefly: inkrementālā tipu pārbaude līdz 98 % ātrāka

Google savā monorepozitorijā vairs nepārbauda Python tipus ar paša rakstīto Pytype. Kopš oktobra šo darbu dara Pyrefly, ko izstrādāja Meta. Google Python komandas inženieris Amer Elsheikh 6. oktobrī Google Open Source blogā raksta, ka inkrementālās pārbūves pēc koda labojuma kļuvušas līdz 98 % ātrākas. Ikdienas tipu pārbaudes skaitļošanas slodze sarukusi par vairāk nekā 80 %.

Pytype Google lietoja vairāk nekā desmit gadus. Rīks apstrādāja simtiem tūkstošu failu. Tā aiziešana nozīmē, ka viens no lielākajiem Python kodolu īpašniekiem tagad paļaujas uz konkurenta uzturētu atvērtā koda projektu.

Kāpēc Pytype vairs netika līdzi

Pytype analizēja kompilētu Python baitkodu. Avota koda sintakses kokam (AST) tas nepieskārās. Kamēr CPython baitkods mainījās reti, pieeja strādāja labi. Sākot ar Python 3.11, formāts mainās katrā laidienā. Pytype komandai katra jauna versija prasīja ievērojamu darbu, lai rīks vispār startētu.

Google to atzina jau 2025. gada augustā. Toreiz pydevtools.com ziņoja, ka Python 3.12 būs pēdējā versija, ko Pytype atbalstīs. Pēc 13 gadu izstrādes komanda paskaidroja, ka baitkoda nestabilitātes dēļ jaunus tipizēšanas PEP ieviest kļūst arvien grūtāk. Pytype gan prata kaut ko, ko citi rīki dara retāk: tas izsecināja tipus arī funkcijās bez anotācijām, simboliski izpildot kodu pāri funkciju robežām.

Ko Google izmērīja pēc pārejas

Blogā minēti trīs skaitļi no Google iekšējās infrastruktūras:

  • rediģēšanas un pārbūves ciklā tipu pārbaudes aizkave samazinājusies līdz 98 %;
  • tīrā būvējumā tipu pārbaudes daļa kritiskajā ceļā sarukusi par 90 līdz 99 %;
  • ikdienas maksimālā skaitļošanas noslodze kritusies par vairāk nekā 80 %, kas dienā atbrīvo tūkstošiem procesora kodolu.

Lielus mašīnmācīšanās mērķus Pyrefly pārbauda dažās sekundēs. Ar Pytype tie paši mērķi aizņēma minūtes. Iekšējos salīdzinājumos Pyrefly bija par kārtu ātrāks.

Monorepozitorijā ar simtiem tūkstošu failu šāda starpība ir praktiska. Ja tipu pārbaude ir būvējuma kritiskajā ceļā, katra minūte gaidīšanas atkārtojas pie katra koda labojuma un katrā testu palaidienā.

Pēc Google teiktā, Pyrefly izstrādātāji Meta pusē visu pārejas laiku ātri reaģēja uz augšupējiem kļūdu ziņojumiem. Rīks tiek aktīvi uzturēts līdzi jaunām Python versijām un tipizēšanas PEP.

Kas ir Pyrefly

Pyrefly ir Rust valodā rakstīts tipu pārbaudītājs un valodas serveris. Meta to izveidoja Instagram servera kodam, kurā ir vairāk nekā 20 miljoni Python rindu. Meta inženieris Neil Mitchell Jane Street tehniskajā lekcijā stāstīja, ka rīks pārbauda 1,8 miljonus rindu sekundē. Projektam ir vairāk nekā 100 dalībnieku.

Ātrums nāk no arhitektūras. Pyrefly strādā faila līmenī, rēķina tipus slinki (tikai tad, kad tie vajadzīgi) un paralēli. Kad izstrādātājs saglabā failu, pārrēķina tikai to, kas no izmaiņām atkarīgs.

Meta Pyrefly publiskoja 2025. gada pavasarī kā alfa versiju. Tas aizstāja iepriekšējo Meta rīku Pyre, kas bija rakstīts OCaml. Jaunajam rīkam viens kods kalpo gan komandrindas pārbaudei, gan valodas serverim redaktorā, tāpēc kļūdas CI vidē un redaktorā sakrīt.

Versija 1.0 iznāca 2026. gada 12. maijā. Pēc pydevtools.com datiem, salīdzinot ar februāra versiju, diagnostika pēc faila saglabāšanas kļuva 2 līdz 125 reizes ātrāka. Atmiņas patēriņš samazinājās par 40 līdz 60 %, bet pilna PyTorch un Pandas projektu pārbaude paātrinājās par 20 līdz 36 %. Pyrefly lieto arī PyTorch un JAX.

Stingrāka pārbaude atrod vairāk kļūdu

Google norāda, ka Pyrefly oficiālajā tipizēšanas atbilstības testu komplektā sasniedz aptuveni 97 %. Maija mērījumā pydevtools.com fiksēja 92,2 %, kamēr mypy rezultāts bija 59,6 % un Pyright 95,7 %. Starpība starp abiem Pyrefly skaitļiem rāda, cik ātri rīks attīstās.

Pyrefly stingrāk pārbauda apvienojuma tipus (Union). Google raksta, ka pēc pārejas atklājās tipu kļūdas, kuras Pytype gadiem palaida garām. Kļūdu paziņojumi ir veidoti pēc Rust kompilatora parauga: ar norādi uz konkrēto koda vietu un ieteikumu, kā to labot.

Ko tas nozīmē mazākiem projektiem

Pāreja no mypy prasa četras komandas. pyrefly init nolasa esošo mypy konfigurāciju un ieslēdz “legacy” iestatījumu kopu, kas atslēdz trīs pārbaudes, kuru mypy nav. pyrefly check --baseline saglabā esošo kļūdu sarakstu, lai turpmāk tiktu rādītas tikai jaunās kļūdas.

uv add --dev pyrefly, pyrefly init, pyrefly check --baseline un visbeidzot pyrefly check.

Redaktoros Pyrefly pieejams kā meta.pyrefly paplašinājums Open VSX reģistrā. To var uzstādīt Cursor, VSCodium un Windsurf. Positron to iekļauj kopš versijas 2025.12.

Rust rīkiem ir arī ēnas puse. Pydevtools.com jau 2025. gadā norādīja, ka uz retākām procesoru arhitektūrām tos ir grūtāk izplatīt un Python vides sagatavošana kļūst sarežģītāka. Pyrefly ir arī konkurents: Astral, kas izstrādāja Ruff un uv, raksta savu Rust tipu pārbaudītāju ty.

Pytype jaunākas Python versijas par 3.12 neatbalstīs.

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