Veröffentlichung der Programmiersprache Python 3.8

Nach anderthalb Jahren Entwicklung vorgestellt bedeutendes Release der Programmiersprache Python 3.8. Korrekturupdates fĂŒr die Python 3.8 Reihe es ist geplant werden innerhalb von 18 Monaten veröffentlicht. Kritische SicherheitsanfĂ€lligkeiten werden bis Oktober 2024 fĂŒr 5 Jahre behoben. Korrekturupdates fĂŒr die 3.8 Reihe werden alle zwei Monate erscheinen, das erste Korrekturrelease Python 3.8.1 ist fĂŒr Dezember geplant.

Unter den hinzugefĂŒgten Neuheiten:

  • Support Zuweisungsoperationen innerhalb komplexer AusdrĂŒcke. Mit dem neuen Operator «:=» ist es möglich, Zuweisungsoperationen innerhalb anderer AusdrĂŒcke auszufĂŒhren, um beispielsweise doppelte Funktionsaufrufe in bedingten Anweisungen und bei der Definition von Schleifen zu vermeiden:

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


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


  • Support neuen Syntax zur Argumentzuweisung in Funktionen. Bei der AufzĂ€hlung von Argumenten wĂ€hrend der Funktionsdefinition kann jetzt ein Marker «/» angegeben werden, der die Argumente trennt, denen Werte nur in der Reihenfolge der Angabe wĂ€hrend des Funktionsaufrufs zugewiesen werden können, von den Argumenten, die eine Zuweisung in beliebiger Reihenfolge zulassen (Syntax «variable=Wert»). Aus praktischer Sicht ermöglicht diese neue Funktion, das Verhalten bestehender Funktionen in C in Python-Funktionen vollstĂ€ndig zu emulieren und Bindungen an spezifische Namen zu vermeiden, zum Beispiel falls der Name eines Parameters in Zukunft geĂ€ndert werden soll.

    Das Flag «/» ergĂ€nzt die zuvor hinzugefĂŒgte Kennzeichnung «*», die Variablen trennt, fĂŒr die nur Zuweisungen in Form von «variable=Wert» zulĂ€ssig sind. Zum Beispiel können in der Funktion «def f(a, b, /, c, d, *, e, f):» die Variablen «a» und «b» nur in der Reihenfolge der Wertangabe zugewiesen werden,
    die Variablen «e» und «f» nur durch Zuweisungen «variable=Wert», und die Variablen «c» und «d» auf beliebige der angefĂŒhrten Weisen:

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

  • HinzugefĂŒgt neue C-API
    zur Einstellung der Initialisierungsparameter von Python, die eine vollstĂ€ndige Kontrolle ĂŒber die gesamte Konfiguration ermöglicht und erweiterte Möglichkeiten zur Fehlerbehandlung bietet. Die vorgeschlagene API erleichtert das Einbetten der FunktionalitĂ€t des Python-Interpreters in andere Anwendungen in C;
  • Implementiert neues Vectorcall-Protokoll fĂŒr einen schnelleren Zugriff auf in C geschriebene Objekte. In CPython 3.8 ist der Zugriff auf Vectorcall vorerst auf interne Nutzung beschrĂ€nkt, die Umstellung auf öffentlich verfĂŒgbare APIs ist fĂŒr CPython 3.9 geplant;
  • HinzugefĂŒgt Runtime Audit Hooks, die Anwendungen und Frameworks in der Programmiersprache Python Zugriff auf niedrigstufige Informationen ĂŒber den Verlauf der SkriptausfĂŒhrung gewĂ€hren, um eine PrĂŒfung der durchgefĂŒhrten Aktionen durchzufĂŒhren (zum Beispiel kann man den Import von Modulen, das Öffnen von Dateien, die Verwendung von Tracing, den Zugriff auf Netzsockets, das AusfĂŒhren von Code ĂŒber exec, eval und run_mod verfolgen);
  • Im Modul pickle ist sichergestellt unterstĂŒtzt das Pickle 5-Protokoll, das zur Serialisierung und Deserialisierung von Objekten verwendet wird. Pickle optimiert die Übertragung großer Datenmengen zwischen Python-Prozessen in Multi-Core- und Multi-Node-Konfigurationen, indem es die Anzahl der Speicheroperationen reduziert und zusĂ€tzliche Optimierungstechniken anwendet, wie die Verwendung von datenspezifischen Kompressionsalgorithmen. Die fĂŒnfte Version des Protokolls ist bemerkenswert durch die EinfĂŒhrung des Out-of-Band-Übertragungsmodus, bei dem Daten separat vom Haupt-Pickle-Stream ĂŒbertragen werden können.
  • StandardmĂ€ĂŸig ist die vierte Version des Pickle-Protokolls aktiviert, die im Vergleich zur vorher standardmĂ€ĂŸig angebotenen dritten Version eine höhere Leistung und eine verringerte GrĂ¶ĂŸe der ĂŒbertragenen Daten ermöglicht;
  • Im Modul typing wurden mehrere neue Möglichkeiten eingefĂŒhrt:
    • Klasse TypedDict fĂŒr assoziative Arrays, in denen fĂŒr die mit SchlĂŒsseln verknĂŒpften Daten explizit Informationen ĂŒber den Typ festgelegt werden („TypedDict(‘Point2D’, x=int, y=int, label=str)“).
    • Typ Literal, das es ermöglicht, einen Parameter oder einen RĂŒckgabewert auf mehrere vordefinierte Werte zu beschrĂ€nken („Literal[‘connected’, ‘disconnected’]“).
    • Die Konstruktion „Final“, die es ermöglicht, die Werte von Variablen, Funktionen, Methoden und Klassen zu definieren, die nicht geĂ€ndert oder neu zugewiesen werden können („pi: Final[float] = 3.1415926536“).
  • Die Möglichkeit wurde hinzugefĂŒgt, einen Cache fĂŒr kompilierten Bytecode zuzuweisen, der in einem separaten Dateisystembaum gespeichert wird und von den Codeverzeichnissen getrennt ist. Der Pfad zum Speichern von Bytecode-Dateien wird ĂŒber die Variable PYTHONPYCACHEPREFIX oder die Option „-X pycache_prefix“ festgelegt;
  • Implementiert die Möglichkeit zur Erstellung von Debug-Builds von Python, die ein identisches ABI wie die Release-Version verwenden, was es ermöglicht, in Debug-Builds Erweiterungen, die in C geschrieben sind, zu laden, die fĂŒr stabile Versionen kompiliert wurden;
  • In f-Zeilen (formatierte Literale mit dem PrĂ€fix ‚f‘) wird der Operator „=“ unterstĂŒtzt (zum Beispiel „f'{expr=}'“), der es ermöglicht, einen Ausdruck zur Textausgabe zu konvertieren, um das Debugging zu erleichtern. Zum Beispiel:

    â€șâ€șâ€ș user = ‚eric_idle‘
    â€șâ€șâ€ș member_since = date(1975, 7, 31)
    â€șâ€șâ€ș f'{user=} {member_since=}'
    „user=’eric_idle‘ member_since=datetime.date(1975, 7, 31)“

  • Der Ausdruck „continue“ darf innerhalb des Blocks finally;
  • Ein neues Modul wurde hinzugefĂŒgt multiprocessing.shared_memory, das die Verwendung von Segmenten des gemeinsamen Speichers in Multiprozesskonfigurationen ermöglicht;
  • Auf der Windows-Plattform wurde die Implementierung von asyncio auf die Verwendung der Klasse ProactorEventLoop;
  • Die Leistung der LOAD_GLOBAL-Anweisung wurde durch die Nutzung eines neuen Mechanismus zur Zwischenspeicherung des Bytecodes um etwa 40 % verbessert.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster