programmatūra · 6 min · 24.07.2026

Python 3.15 pēdējā beta iesaldē funkcijas: slinkie importi, frozendict un UTF-8 pēc noklusējuma

Python 3.15.0b4 iznāca 18. jūlijā. Tā ir pēdējā plānotā šīs versijas beta, ko no EuroPython sprintiem Krakovā izlaida laidiena pārvaldnieks Hugo van Kemenade. Kopš iepriekšējās betas kodā ieviesti ap 298 labojumu, būvēšanas uzlabojumu un dokumentācijas izmaiņu.

Funkciju iesaldēšana notika jau pie pirmās betas maijā, tāpēc jaunas iespējas 3.15 vairs nenāks klāt. Ceturtās betas galvenais uzdevums ir noturēt bināro saderību. Pēc šīs betas Python komanda vairs nemaina ABI. Pēc pirmā laidiena kandidāta arī koda izmaiņas būs minimālas. Detaļas par izdevumu apkopotas oficiālajā laidiena lapā.

Slinkie importi beidzot nonāk valodā

Lielākais 3.15 jaunums ir skaidrie slinkie importi. Python vadības padome PEP 810 pieņēma 2025. gada 3. novembrī. Ideja ir vienkārša: importēto moduli neielādē uzreiz, bet tikai brīdī, kad to pirmo reizi izmanto.

Tas paātrina programmas startu un samazina atmiņas patēriņu tur, kur liela daļa importēto moduļu reāli nekad neizpildās. Komandrindas rīkam, kas importē numpy vai pandas, bet tos izmanto tikai vienā retā apakškomandā, tagad nav jāgaida smago bibliotēku ielāde katrā palaišanā. Slinko importu iezīmē ar jaunu atslēgvārdu importa priekšā, tāpēc vecais kods turpina strādāt bez izmaiņām.

Agrāks priekšlikums slinkos importus ieslēgt globāli tika noraidīts, jo tas nemanāmi mainīja visas programmas uzvedību un varēja sabojāt kodu, kas paļaujas uz importa blakusefektiem. PEP 810 to risina ar skaidru pieeju: slinks ir tikai tas imports, ko autors pats ir tā iezīmējis. Pārējie importi darbojas kā līdz šim. Tādēļ bibliotēkas var pakāpeniski pārņemt jauno uzvedību, nevis to uzspiest visiem lietotājiem uzreiz.

frozendict un UTF-8 kā noklusējums

Python iegūst iebūvētu frozendict tipu (PEP 814). Tā ir vārdnīca, kuru pēc izveides vairs nevar mainīt, tāpēc to droši lietot par atslēgu citā vārdnīcā vai kešatmiņā. Līdz šim programmētājiem šādos gadījumos nācās rakstīt pašiem savu iesaiņojumu vai lietot ārējas pakotnes.

UTF-8 kļūst par noklusējuma kodējumu (PEP 686). Līdz šim Python failu lasīšanā un rakstīšanā izmantoja operētājsistēmas lokāli, kas uz Windows nozīmēja cp1252 vai citu vietējo kodējumu. Tagad UTF-8 strādā vienādi visur, tāpēc teksta faili ar diakritiku vairs neuzvedas atšķirīgi Linux un Windows vidē. Vecās uzvedības atgriešanai paliek atsevišķs vides mainīgais.

Šo maiņu Python komanda pieņēma jau pirms vairākiem gadiem, bet apzināti atlika, lai bibliotēku un aplikāciju autoriem būtu laiks sagatavoties. Kļūda, kas atklāj slēptu paļaušanos uz vietējo kodējumu, parasti parādās tikai tad, kad kodu palaiž uz citas sistēmas. Tieši šādu problēmu jaunais noklusējums novērš, jo failu, kas rakstīts vienā mašīnā, tāpat nolasa citā.

Jauns profilētājs un ātrāks JIT

Standarta bibliotēka iegūst jaunu profilēšanas pakotni ar statistisko paraugu profilētāju Tachyon (PEP 799). Tas nolasa steka izsekumus no darbojošās programmas, nevis instrumentē katru funkcijas izsaukumu. Paraugu ņemšanas biežums sasniedz līdz miljonam reižu sekundē pie gandrīz nulles slodzes, tāpēc profilētāju var pieslēgt pat programmai, kas jau darbojas ražošanā. Rezultātus tas izvada gan kā flamegraph, gan Firefox saderīgu Gecko failu, gan dzīvu teksta skatu terminālī.

Mērķis ir panākt, lai pēc ceturtās betas nemainītos ABI un pēc pirmā laidiena kandidāta būtu pēc iespējas mazāk koda izmaiņu.

Tachyon aizvieto vajadzību pēc ārējiem rīkiem, ja jāsaprot, kur programma pavada laiku uz reāla servera. Tā kā profilētājs neinstrumentē katru izsaukumu, tas praktiski neietekmē mērāmās programmas ātrumu.

Eksperimentālais JIT kompilators kļuvis manāmi ātrāks. Uz x86-64 Linux ģeometriskais vidējais pieaugums ir 8 līdz 9 %. Uz AArch64 macOS pieaugums sasniedz 12 līdz 13 %. JIT joprojām nav ieslēgts pēc noklusējuma, tāpēc tā priekšrocības nāk tikai speciāli būvētās interpretatora versijās. Python to izstrādā kopš 3.13 un katrā laidienā slīpē kodu ģenerēšanu, lai ieguvumi būtu pietiekami stabili plašākai lietošanai.

Ko darīt pakotņu uzturētājiem

Python komanda aicina trešo pušu bibliotēku autorus jau tagad testēt kodu pret 3.15 un ziņot par kļūdām. Var arī sagatavot pirmslaidiena ratiņus (wheels), taču Python iesaka gaidīt līdz 3.15.0rc1, pirms tos publicē ražošanai, jo līdz rc1 vēl iespējamas ABI izmaiņas. Tieši bibliotēku ar C paplašinājumiem autoriem šis brīdis ir svarīgs, jo pēc rc1 binārā saskarne būs iesaldēta.

Python tur gada laidienu ritmu, tāpēc pēc 3.15 iznākšanas rudenī vecākās versijas pakāpeniski zaudēs atbalstu pēc grafika. Testēšana pret pēdējo betu tagad ir vieglākais veids, kā izvairīties no pārsteigumiem oktobrī, kad daudzi projekti sāks pāriet uz jauno versiju.

Funkciju iesaldēšana pie pirmās betas maijā nozīmē, ka viss 3.15 saraksts jau ir zināms. Tagad notiek tikai kļūdu labošana. Par to sīkāk rakstīja The Register. Pirmais laidiena kandidāts gaidāms 4. augustā, bet stabilā 3.15.0 versija plānota oktobra sākumā.

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