Login
Newsletter
Werbung

Do, 28. Juni 2018, 14:02

Software::Entwicklung

Python 3.7 erschienen

Über 18 Monate nach Python 3.6 wurde jetzt die nächste Version veröffentlicht. Python 3.7 bringt spürbare Geschwindigkeitszuwächs, eine Reihe von Erweiterungen und zahlreiche Verbesserungen.

Python Software Foundation

Python ist eine objektorientierte Skriptsprache, die mit Perl, Ruby und ähnlichen Sprachen konkurriert. Ihre Besonderheiten sind die Verwendung von Einrückungen statt Klammern zur Definition von Kontrollstrukturen und die Möglichkeit, plattformunabhängigen Bytecode zu erzeugen.

Python 3.7 soll an einigen Stellen spürbar schneller sein als sein Vorgänger. Außerdem bringt die neue Version den Programmierern zahlreiche Änderungen, die sowohl die Sprachsyntax als auch die Standardbibliothek betreffen.

Eine bedeutende Änderung ist die verzögerte Auswertung von Typ-Annotationen, die Benutzbarkeitsprobleme mit der in der letzten Version eingeführten Funktionalität beheben soll. Die Annotationen werden jetzt erst zur Laufzeit statt zur Übersetzungszeit ausgewertet. Allerdings tritt diese Änderung nur in Kraft, wenn man einen __future__-Import nutzt. Denn die Änderung ist inkompatibel mit dem früheren Verhalten, was für bestehende Software vermieden werden sollte.

Eine C- oder POSIX-Lokalisierung wird jetzt automatisch in UTF-8 überführt, wobei mit verschiedenen Definitionen darauf Einfluss genommen werden kann, welche Lokalisierung gewählt wird. Man kann außerdem einstellen, dass immer eine UTF-8-Kodierung gewählt wird, unabhängig von der Lokalisierung.

Die neue eingebaute Funktion breakpoint macht es leichter, den Debugger zu erreichen. Der Python-Interpreter erhielt eine neue Schnittstelle für Thread-Local Storage. Die bisherige Schnittstelle blieb erhalten, wurde aber als veraltet markiert. Module können nun eine Funktion __getattr__ definieren, die von Python aufgerufen wird. Das time-Modul wurde um Funktionen mit Nanosekunden-Auflösung bereichert. Die Benutzung von veralteten Funktionen erzeugt nun wieder eine Warnung, aber nur im Hauptmodul. Bei Biblitheksmodulen werden die Warnungen unterdrückt, da sie zu zahlreich wären.

Der Interpreter erhielt direkte Unterstützung für das typing-Modul und generische Typen, was für erhebliche Beschleunigung sorgen soll. Die Entscheidung, ob ein compiliertes Modul älter ist als der Quellcode und daher neu compiliert werden muss, beruht nicht mehr auf Zeitstempeln, sondern auf einem Hash des Quellcodes.

Neu ist eine Unterstützung für Kontextvariablen, die ähnlich wie Thread-lokale Variablen verwendet werden. Die neue Annotation dataclass macht Klassen zu Datenklassen mit automatisch generierten Konstruktoren und internen Methoden. Ferner legt Python jetzt explizit fest, dass in dict-Objekten die Reihenfolge der Elemente immer der Reihenfolge der Einfügung entspricht.

Neben den neuen Funktionen gab es auch Änderungen im Verhalten bestehender Funktionen, die Änderungen an bestehenden Programmen nötig machen können, und eine Reihe veralteter Funktionen wurde gestrichen. Python-Programme müssen daher mehr oder weniger angepasst und überprüft werden, wenn sie unter Python 3.7 laufen sollen. Auch FreeBSD 9 und frühere Versionen werden nicht mehr offiziell unterstützt. Die Dokumentation von Python wurde zusätzlich in Japanisch, Französisch und Koreanisch übersetzt. Alle Einzelheiten zu den Änderungen lassen sich in den Anmerkungen zur Veröffentlichung nachlesen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung