Verëffentlechung vun der Python 3.8 Programmiersprache

No engem Joer an en halleft Entwécklung presentéiert grouss Programméierungssprooch Verëffentlechung Python 3.8. Korrigéiert Updates fir Python 3.8 Branche geplangt Fräisetzung bannent 18 Méint. Kritesch Schwachstelle wäerte fir 5 Joer bis Oktober 2024 fixéiert ginn. Corrective Updates fir den 3.8 Branche ginn all zwee Méint verëffentlecht, mat der éischter Korrekturverëffentlechung vu Python 3.8.1 fir Dezember geplangt.

Ënnert der dobäi Innovatiounen:

  • Ënnerstëtzung Aufgab Operatiounen bannent komplex Ausdréck. Mat dem neien ":=" Bedreiwer ass et méiglech Wäertbezuelungsoperatioune bannent aner Ausdréck auszeféieren, zum Beispill, fir Duebelfunktiounsruffen a bedingte Aussoen ze vermeiden a wann Dir Loops definéiert:

    wann (n := len(a)) > 10:
    ...

    while (block := f.read(256)) != ":
    ...

  • Ënnerstëtzung nei Syntax fir Funktiounsargumenter ze spezifizéieren. Wann Dir Argumenter während enger Funktiounsdefinitioun opzielt, kënnt Dir elo e "/" spezifizéieren fir Argumenter ze trennen déi nëmme Wäerter zougewisen kënne ginn op Basis vun der Uerdnung an där d'Wäerter während dem Funktiounsopruff opgezielt sinn, vun Argumenter déi zougewisen kënne ginn an all Uerdnung (Variabel = Wäert Syntax)). Op der praktescher Säit erlaabt déi nei Feature Funktiounen am Python fir d'Behuele vun existente Funktiounen am C komplett ze emuléieren, an och fir Bindung un spezifesch Nimm ze vermeiden, zum Beispill wann de Parameternumm geplangt ass an der Zukunft ze änneren.

    Den "/" Fändel ergänzt de virdru addéierten "*" Fändel, trennt Variabelen fir déi nëmmen eng Uerderung an der Form "Variabel = Wäert" applicabel ass. Zum Beispill, an der Funktioun "def f(a, b, /, c, d, *, e, f):" kënnen d'Variabelen "a" an "b" nëmmen an der Reiefolleg zougewisen ginn, déi d'Wäerter opgelëscht sinn ,
    Variablen "e" an "f", nëmmen duerch d'Aufgab "Variabel = Wäert", a Variabelen "c" an "d" op eng vun de folgende Weeër:

    f(10, 20, 30, 40, e=50, f=60)
    f(10, 20, s=30, d=40, e=50, f=60)

  • Dobäigesat nei C API
    fir Python Initialiséierungsparameter ze konfiguréieren, déi komplett Kontroll iwwer all erlaabt Configuratioun a suergt fortgeschratt Feeler Ëmgank Ariichtungen. Déi proposéiert API mécht et einfach Python Dolmetscher Funktionalitéit an aner C Uwendungen ze embed;

  • Ëmgesat neie Vectorcall Protokoll fir méi séier Zougang zu Objeten geschriwwen an C Sprooch. Am CPython 3.8 ass den Zougang zu Vectorcall nach ëmmer limitéiert op intern Notzung an d'Kategorie vun ëffentlech zougänglechen APIen ass am CPython 3.9 geplangt;
  • Dobäigesat rifft op Runtime Audit Hooks, déi Uwendungen a Kaderen am Python Zougang zu Low-Level Informatioun iwwer de Fortschrëtt vum Skript ubidden fir d'Aktiounen ze iwwerpréiwen (zum Beispill, Dir kënnt den Import vu Moduler verfollegen, Dateien opmaachen, mat enger Spuer, Zougang zu Netzwierk Sockets, Lafen Code duerch exec, eval an run_mod);
  • Am Modul Kiischt virgesinn Ënnerstëtzung fir de Pickle 5 Protokoll, benotzt fir serialiséieren an deserialiséieren Objeten. Pickle erlaabt Iech den Transfert vu grousse Quantitéiten un Daten tëscht Python Prozesser a Multi-Core a Multi-Node Konfiguratiounen ze optimiséieren andeems Dir d'Zuel vun de Gedächtniskopien Operatiounen reduzéiert an zousätzlech Optimiséierungstechnike benotzt wéi d'Benotzung vun Datenspezifesche Kompressiounsalgorithmen. Déi fënneft Versioun vum Protokoll ass bemierkenswäert fir d'Zousatz vun engem Out-of-Band Iwwerdroungsmodus, an deem Daten getrennt vum Main Pickle Stream iwwerdroe kënne ginn.
  • Par défaut gëtt déi véiert Versioun vum Pickle-Protokoll aktivéiert, wat, am Verglach mat der drëtter Versioun, déi virdru par défaut ugebuede gëtt, méi héich Leeschtung an eng Reduktioun vun der Gréisst vun den iwwerdroenen Donnéeën erlaabt;
  • Am Modul nozesichen Verschidde nei Features ginn agefouert:
    • Klass TypdDict fir assoziativ Arrays an deenen Typinformatioun explizit spezifizéiert ass fir d'Donnéeën, déi mat de Schlësselen assoziéiert sinn ("TypedDict('Point2D', x=int, y=int, label=str)”).
    • Typ Literal, wat Iech erlaabt e Parameter ze limitéieren oder de Wäert op e puer virdefinéiert Wäerter zréckzeginn ("Literal['connected', 'disconnected']").
    • Design"Finale", wat et méiglech mécht d'Wäerter vu Variabelen, Funktiounen, Methoden a Klassen ze definéieren déi net geännert oder nei zougewisen kënne ginn ("pi: Final[float] = 3.1415926536").
  • D'Fähigkeit bäigefüügt fir e Cache fir kompiléiert Dateien mat Bytecode ze ginn, an engem separaten FS-Bam gespäichert an aus den Verzeichnisser mam Code getrennt. De Wee fir Dateien mat Bytecode ze späicheren gëtt iwwer eng Variabel gesat PYTHONPYCACHEPREFIX oder d'Optioun "-X pycache_prefix";
  • Ëmgesat d'Kapazitéit fir Debug Builds vu Python ze kreéieren déi en ABI identesch mat der Verëffentlechung benotzen, wat Iech erlaabt Extensiounen ze lueden schrëftlech an der SI Sprooch, kompiléiert fir stabil Verëffentlechungen, an Debug Builds;
  • f-Strings (formatéiert Literatur mat 'f' Präfix) bidden Ënnerstëtzung fir den = Bedreiwer (zum Beispill "f'{expr=}'"), wat Iech erlaabt en Ausdrock an Text ze konvertéieren fir méi einfach Debugging. Zum Beispill:

    ››› Benotzer = 'eric_idle'
    ››› member_since = date(1975, 7, 31)
    ››› f'{user=} {member_since=}'
    "user='eric_idle' member_since=datetime.date(1975, 7, 31)"

  • Ausdrock "weider» erlaabt an engem Block ze benotzen endlech;
  • Neie Modul dobäi multiprocessing.shared_memory, erlaabt d'Benotzung vu gemeinsame Gedächtnissegmenter a Multiprocess Konfiguratiounen;
  • Op der Windows Plattform ass d'Asyncio Implementatioun geplënnert fir d'Klass ze benotzen ProactorEventLoop;
  • D'Performance vun der LOAD_GLOBAL Instruktioun ass ëm ongeféier 40% erhéicht ginn duerch d'Benotzung vun engem neien Objektcode-Caching-Mechanismus.

Source: opennet.ru

Setzt e Commentaire