Udgivelse af programmeringssproget Python 3.8

Efter halvandet års udvikling præsenteret betydningsfuld udgivelse af programmeringssproget Python 3.8. Korrigerende opdateringer for Python 3.8-serien er planlagt udsendes inden for 18 måneder. Kritiske sårbarheder vil blive rettet i 5 år frem til oktober 2024. Korrigerende opdateringer for version 3.8 vil blive udgivet hver anden måned, den første korrigerende udgivelse, Python 3.8.1, er planlagt til december.

Blandt de tilføjede nyheder:

  • Support tildelingsoperationer inden for komplekse udtryk. Med den nye operator ':=' blev det muligt at udføre tildelingsoperationer inden i andre udtryk, for eksempel for at undgå dobbelt kald af funktioner i betingede udsagn og ved at definere løkker:

    if (n := len(a)) > 10:
    …

    while (block := f.read(256)) != »:
    …

  • Support den nye syntaks til at definere funktionsargumenter. Når man angiver argumenter under funktionsdefinition, kan man nu angive tegn '/', som adskiller argumenter, der kun kan tildeles baseret på rækkefølgen under funktionsopkald, fra argumenter, der tillader tildeling i vilkårlig rækkefølge (syntaks 'variabel=værdi'). Praktisk set gør denne mulighed det muligt at emulere opførelsen af eksisterende funktioner i C sprog i Python-funktioner, samt undgå binding til specifikke navne, for eksempel hvis parameterens navn planlægges at blive ændret i fremtiden.

    Flaget '/' supplerer det tidligere tilføjede tegn '*', der adskiller variabler, for hvilke kun tildeling i formen 'variabel=værdi' gælder. For eksempel i funktionen 'def f(a, b, /, c, d, *, e, f):' kan variablerne 'a' og 'b' kun tildeles i rækkefølge af de angivne værdier,
    variablerne 'e' og 'f', kun gennem tildeling 'variabel=værdi', mens variablerne 'c' og 'd' kan tildeles med begge metoder:

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

  • Tilføjet det nye C API
    til konfiguration af initialiseringsparametre for Python, der giver fuld kontrol over hele konfigurationen og tilbyder udvidede fejlhåndteringsfunktioner. Det foreslåede API gør det lettere at integrere Pythons fortolkefunktionalitet i andre C-baserede applikationer;
  • Implementeret den nye Vectorcall-protokol til hurtigere adgang til objekter skrevet i C. I CPython 3.8 er adgangen til Vectorcall endnu begrænset til intern brug, og en offentlig tilgængelig API-oversættelse er planlagt i CPython 3.9;
  • Tilføjet Runtime Audit Hooks-anmodninger, der giver Python-programmer og -rammer adgang til lavniveauoplysninger om scriptets kørselsforløb for at udføre revision af udførte handlinger (for eksempel kan man spore import af moduler, åbning af filer, brug af sporingsfunktioner, adgang til netværkssokler, udførelse af kode via exec, eval og run_mod);
  • I modulet pickle sikret understøttelse af Pickle 5-protokollen, der anvendes til serialisering og deserialisering af objekter. Pickle muliggør optimering af overførsel af store data mængder mellem Python-processer i multicore- og klusterkonfigurationer ved at reducere antallet af hukommelseskopieringsoperationer og anvende yderligere optimeringsteknikker, såsom at anvende datakravsspecifikke komprimeringsalgoritmer. Den femte version af protokollen er bemærkelsesværdig for tilføjelsen af en out-of-band transmitteringsmetode, hvor data kan overføres adskilt fra hovedpickle-strømmen.
  • Som standard er den fjerde version af Pickle-protokollen aktiveret, som i forhold til den tidligere default tredje version giver en højere ydeevne og en reduktion af størrelsen på de overførte data;
  • I modulet typing flere nye muligheder præsenteret:
    • Klasse TypedDict for associative arrays, hvor der eksplicit angives typeinformation for de data, der er knyttet til nøglerne ("TypedDict('Point2D', x=int, y=int, label=str)").
    • Type Literal, hvilket giver mulighed for at begrænse en parameter eller returneret værdi til flere foruddefinerede værdier ("Literal['connected', 'disconnected']").
    • Konstruktionen "Final", som giver mulighed for at definere værdier for variable, funktioner, metoder og klasser, der ikke kan ændres eller omdeles ("pi: Final[float] = 3.1415926536").
  • Muligheden for at tildele en cache til de kompilerede bytecode-filer, der gemmes i en separat filstruktur adskilt fra koden mapper. Stien til lagring af bytecode-filer angives via variablen PYTHONPYCACHEPREFIX eller indstillingen "-X pycache_prefix";
  • Implementeret muligheden for at oprette debug-builds af Python, der bruger den samme ABI som udgivelser, hvilket muliggør indlæsning af C-udvidelser, der er bygget til stabile versioner, i debug-builds;
  • I f-strenge (formaterede litteraler med præfikset ‘f’) er der support for operatoren «=» (f.eks. «f'{expr=}'»), som gør det muligt at konvertere et udtryk til tekst for at lette fejlfinding. For eksempel:

    ››› bruger = ‘eric_idle’
    ››› medlem_siden = date(1975, 7, 31)
    ››› f'{bruger=} {medlem_siden=}’
    «bruger=’eric_idle’ medlem_siden=datetime.date(1975, 7, 31)»

  • Udtrykket «continue» må bruges inden for blokken endelig;
  • En ny modul er tilføjet multiprocessing.shared_memory, som tillader brug af segmenter af delt hukommelse i multiprocessor konfigurationer;
  • På Windows-platformen er implementeringen af asyncio oversat til at bruge klassen ProactorEventLoop;
  • Ydeevnen af LOAD_GLOBAL-instruksen er forbedret med cirka 40% takket være en ny mekanisme til caching af objekkode.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster