De nieuwe stabiele versie van Python 3.12 arriveert en dit zijn de nieuwe functies

Python-logo

Python is een programmeertaal op hoog niveau.

Na een jaar van ontwikkeling De release van de stabiele versie werd aangekondigd en ook het begin van de alfatestfase van de programmeertaal Python 3.12 en Python 3.13 (respectievelijk). Er wordt vermeld dat deze nieuwe tak van Python 3.12 anderhalf jaar ondersteund zal worden, waarna er nog eens drie en een half jaar fixes zullen worden gegenereerd om kwetsbaarheden te elimineren.

De nieuwe versie van Python 3.12 die wordt gepresenteerd, wordt geleverd met verbeteringen in de flexibiliteit van f-snaaranalyse. Met deze verbetering nu veel beperkingen kunnen buiten beschouwing worden gelaten, omdat je nu bijvoorbeeld elke geldige expressie in Python kunt bevatten, inclusief meerregelige expressies, commentaar, backslashes en Unicode-escape-reeksen. Bovendien maken interne strings nu het hergebruik van dezelfde aanhalingstekens mogelijk, d.w.z. dubbele aanhalingstekens kunnen nu binnenin opnieuw worden gebruikt zonder dat u hoeft te veranderen naar enkele aanhalingstekens.

Bijvoorbeeld:

f"""{f'''{f'{f"{1+1}"}'}'''}"""

Het is nu mogelijk om willekeurig te nesten:

f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"

Een andere opvallende verandering is de ondersteuning voor geïsoleerde subtolken en afzonderlijke globale sloten, die bedoeld zijn om de efficiëntie van het gebruik van hulpbronnen in multicore-systemen te vergroten, aangezien CPython voor verschillende tolken binnen een proces het mogelijk maakt dat meerdere tolken tegelijkertijd in een proces draaien. Zoals het er nu uitziet, is de functie momenteel alleen beschikbaar via C-API (ondersteuning voor Python API zal verschijnen in de volgende grote tak).

Daarnaast wordt dit ook benadruktDe informatieve inhoud van foutmeldingen is vergroot en het scala aan uitzonderingen is uitgebreid, met aanbevelingen om typografische fouten te elimineren. Er worden nu bijvoorbeeld suggesties weergegeven voor het importeren van vergeten standaardbibliotheekmodules en suggesties voor het voorvoegsel “self”.

De mogelijkheid toegevoegd om het bufferprotocol in Python-code te gebruiken. Klassen die een "__buffer__()"-methode bieden, kunnen nu worden gebruikt als typen die rechtstreeks op binaire gegevens in het geheugen werken.

De module sys.monitoring wordt voorgesteld voor foutopsporing en profilering, waardoor u gebeurtenissen in CPython kunt volgen, zoals oproepen, functieretouren, uitvoering van willekeurige coderegels, uitzonderingen en overgangen met minimale overhead.

De tolk implementeert ondersteuning voor het prestatiesubsysteem van de Linux-kernel, waarmee Python-functienamen kunnen worden bepaald bij het profileren met behulp van het prestatiehulpprogramma (voorheen werden alleen C-functienamen bepaald in traces).

Wat prestatieverbeteringen betreft, wordt dat vermeld optimalisaties voortgezet, met welke Er is een totale prestatiewinst van naar schatting 5% behaald., werd ook toegevoegd experimentele ondersteuning voor de BOLT binaire optimizer aan het bouwproces, waardoor de prestaties met 1-5% toenemen, terwijl de prestaties van het asyncio-pakket aanzienlijk zijn verbeterd (sommige tests laten een versnelling van 75% zien).

Er is inline-uitbreiding van lijstbegrippen geïmplementeerd, waardoor het werken met lijstbegrippen tot wel twee keer sneller gaat (voor code die actief gebruikmaakt van lijstbegrippen toonden tests een algehele prestatieverbetering van 11%).

Om de veiligheid te verbeteren, ingebouwde implementaties van SHA1-, SHA3-, SHA2-384-, SHA2-512- en MD5-algoritmen in hashlib zijn vervangen met formeel geverifieerde opties uit het HACL*-project (ingebouwde implementaties worden alleen gebruikt als OpenSSL niet beschikbaar is).

Van de andere veranderingen die opvallen:

  • De module heeft uitgebreide ondersteuning voor Windows.
  • Python implementeert stack-overflow-beveiliging.
    De creatie van de klasse asyncio.Task is versneld.
  • De grootte van Unicode-objecten is met 8 tot 16 bytes verkleind.
  • Bewerkingen met reguliere expressies re.sub(), re.subn() en re.Pattern zijn versneld.
  • Het uitvoeren van isinstance()-controles voor sommige protocollen is 2 tot 20 keer versneld.
  • Het is aanzienlijk (in sommige tests tot 64%) dat de functies tokenize.tokenize() en tokenize.generate_tokens() zijn versneld.
  • Het laden van attributen en het aanroepen van de methode super() zijn versneld.
  • Er is een nieuwe, compactere syntaxis van typeannotaties voorgesteld voor generieke klassen en functies.
  • De webbrowsermodule ondersteunt niet langer oudere browsers, waaronder Grail, Mozaïek, Netscape, Galeon, Skipstone, Iceape, Firebird en Firefox tot versie 36.
  • Ter voorbereiding op toekomstige optimalisaties is de interne weergave van gehele getallen gewijzigd.

Last but not least is, zoals gezegd, begonnen met het alfatesten van Python 3.13, waarin een compilatiemodus verscheen CPython zonder globaal tolkslot (GIL, Global Interpreter Lock).

De tak Python 3.13 zal zeven maanden in alpha zijn, Tijdens de periode waarin nieuwe functies zullen worden toegevoegd en bugs zullen worden verholpen volgens het nieuwe ontwikkelingsschema, begint het werk aan een nieuwe branch vijf maanden vóór de release van de vorige branch en tegen de tijd dat de volgende versie de testfase alfa bereikt.

Hierna worden de bètaversies drie maanden lang getest, waarbij het toevoegen van nieuwe functionaliteiten verboden is en alle aandacht uitgaat naar het oplossen van bugs. Gedurende de laatste twee maanden vóór de vrijgave bevindt de vestiging zich in de fase van de vrijgavekandidaat, waar de definitieve stabilisatie zal plaatsvinden.

Eindelijk ja je bent geïnteresseerd om er meer over te wetenkunt u de details in het volgende link.