Die Python Software Foundation hat bereits vor einiger Zeit die erste Beta-Version von Python 3.9 enthüllt. Mit dem Release dieser Beta stehen alle wesentlichen neuen Features der neuen Python-Version, die im Oktober 2020 zur Verfügung stehen soll, fest. Wir haben alle wesentlichen Neuerungen von Python 3.9 für Sie zusammengetragen.
Python jährlich ab 2020
Bislang wurde Python regelmäßig im Abstand von 18 Monaten weiterentwickelt. Mit Python 3.9 wird nun ein Verbesserungsvorschlag akzeptiert und umgesetzt - nämlich ein jährlicher Release-Zyklus.
Das hat einerseits weniger Features pro release zur Folge, bedeutet andererseits aber schnelleres Feedback beim Feature Testing, weniger potenzielle 'breaking changes' für jedes Release und dadurch einen erhöhten Anreiz für die Nutzer und Linux Distribution Manager, Python häufiger upzugraden. Ein weiterer, positiver Nebeneffekt: Neue Features, die erst relativ spät im Entwicklungszyklus hinzugefügt werden, können schneller zum Release gebracht werden.
Die neue Python Timeline sieht den Release von Version 3.9 für den Oktober 2020 vor. Der offizielle Startschuss für die Pre-Alpha-Entwicklung von Python 3.10 fiel bereits Mitte Mai 2020 und wird entsprechend im Oktober 2021 folgen.
Python wird schneller
Bislang konnte jede Version von Python mit Performance-Verbesserungen im Vergleich zum Vorgänger aufwarten. Python 3.9 kommt dabei mit zwei großen Neuerungen, die die Programmiersprache wesentlich performanter machen - ohne dass dazu Änderungen an bereits existierendem Code nötig wären.
Die erste Verbesserung steht mit dem in Python 3.8 eingeführten vectorcall
-Protokoll in Zusammenhang. vectorcall
minimiert beziehungsweise eliminiert temporary objects und beschleunigt dadurch viele gängige function calls. Bei Python 3.9 nutzen zahlreiche Python Built-ins range, tuple, set, frozenset, list, dict
intern vectorcall
, um schneller zu laufen.
Die zweite Performance-Verbesserung für die Coding-Sprache entsteht durch ein verbessertes Parsing des Python-Quellcodes. Der neue Parser für die CPython-Laufzeitumgebung wurde nicht darauf ausgelegt, Performance-Probleme zu beheben, sondern eher darauf, die internen Inkonsistenzen des Original-Parsers zu kaschieren. Ein positiver Nebeneffekt ist jedenfalls schnelleres Parsing - insbesondere, wenn es um große Mengen von Quellcode geht.
Python wird funktionaler
Python 3.9 bringt neue Funktionen für strings und dictionaries. Neue Funktionen zum Entfernen von Präfixen und Suffixen bei strings dürften von den Nutzern besonders freudig aufgenommen werden, schließlich kosteten vor allem solche aufwändigen, manuellen Prozesse bisher viel Zeit und Mühe.
Für dictionaries stehen mit der neuen Python-Version sogenannte union operators zur Verfügung - einer um zwei dictionaries zu einem neuen zu vereinen, ein anderer um die Inhalte eines dictionary mit denen eines anderen upzudaten.
- Produkt- & Projektmanager
Ganz generell schätzen es Entwickler nicht so besonders, wenn ihnen jemand erklären will, wie sie ihren Job zu machen haben. Weil Produkt- und Projektmanager aber oft Entwickler-Teams leiten, passiert genau das. Das kann zu Unstimmigkeiten führen. <br /><br /> Dazu hat auch David Fox von devRant eine Meinung: "Letztendlich ist es in den meisten Fällen so, dass Produkt- und Projektmanager in irgendeiner Art und Weise die 'Besitzer' von Projekten und Prozessen sind, ohne dabei die täglichen Herausforderungen und Probleme der Softwareentwickler zu kennen." - Chefs
Genau wie die Produkt- und Projektmanager sind auch Development oder Engineering Manager dafür zuständig, Teams von Entwicklern zu führen und sicherzustellen, dass Projekte rechtzeitig und unter Budget fertiggestellt werden. <br /><br /> "In einigen Unternehmen können Situationen entstehen, in denen der Chef gleichzeitig Mitglied des Entwicklerteams ist. Insbesondere wenn der Chef vorher selbst Entwickler war und nach einer Beförderung zum Chef wird, ist Konfliktpotenzial gegeben", merkt Fox an. - Recruiter
Softwareentwickler müssen gar nicht selbst aktiv nach einem Job suchen, um von Recruitern und Headhuntern belästigt zu werden - dem Fachkräftemangel sei Dank. Es dürfte sehr schwer sein, einen Developer zu finden, der noch nicht in die Fänge der Recruiter geraten ist. <br /><br /> David Fox sieht insbesondere die Hartnäckigkeit der Recruiter als Problem: "Sie rufen an, sie e-mailen und sie lassen Dich einfach nicht in Ruhe - selbst dann, wenn Du gar keinen Job suchst. Und selbst wenn man eine Anstellung sucht, neigen viele Recruiter dazu, irrelevante Jobangebote zu machen oder Stellen zu empfehlen, deren Profil überhaupt nicht passt - etwa einen Job am anderen Ende des Landes, obwohl man gar nicht bereit ist, umzuziehen." - Dokumentation
Gibt es keine Dokumentation, beschweren sich die Softwareentwickler. Wenn es zuviel ist, beschweren sie sich und wenn sie die Dokumentation selbst erledigen müssen, auch. Sogar über die Art und Weise, wie andere Leute die Dokumentationsaufgabe bewältigen, beschweren sich die Entwickler. <br /><br /> An dieser Stelle seien sich auch endlich einmal alle Entwickler einig, wie Fox betont: "Softwareentwickler wollen eine ausführliche, gut geschriebene und akkurate Dokumentation - aber selber machen wollen sie es nicht." - Meetings
Meetings sind nicht nur für alle anderen ein Problem, sondern auch für Softwareentwickler. Insbesondere dann, wenn es sich um völlig unnötige, zeitraubende und stinklangweilige Zusammenkünfte handelt. Wie Fox erzählt, sind inzwischen auch Devotionalien mit der Aufschrift 'I survived another meeting that should have been an email' erhältlich. - Coworking Spaces
Mit dem Aufstieg der Agilität sind flache Hierarchien, Collaboration und Teamwork zum Alltag in Unternehmen geworden - insbesondere für Software-Development-Teams. Gerade die können ihre Arbeit in einem Großraumbüro aber meist nur schwer oder gar nicht bewältigen - sagen zumindest die Zahlen von devRant. <br /><br /> David Fox erklärt: "Es gibt einfach zuviel Ablenkung: die Kollegen unterhalten sich, Meetings werden verpasst, Telefonanrufe überhört. Es gibt auch eine Vielzahl an Beschwerden über den Kaffee im Büro und andere Annehmlichkeiten - oder eben das Gegenteil davon." - Kollegen
Selbsterklärend: Jeder hat wohl einen Kollegen oder eine Kollegin, den beziehungsweise die er ganz besonders schätzt. Nicht. <br /><br /> Im Fall der Softwareentwickler ist die Abneigung gegenüber Kollegen meist entweder in der mangelnden Qualität ihrer Arbeit oder einem völlig aus dem Leim gegangenen Ego begründet, gibt David Fox preis. - Vorstellungsgespräche
Wenn ein Softwareentwickler auf Jobsuche ist und zum Bewerbungsgespräch geladen wird, gibt es danach meist auch etwas zu meckern: <br /><br /> "Dumme Fragen oder die Lösung von völlig praxisfernen Aufgaben im Bewerbungsgespräch stoßen den Developern ebenso sauer auf, wie ein Gesprächspartner, der überhaupt nicht weiß, was ein Entwickler eigentlich genau macht", so Fox. - Fehler & Bugs
Softwareentwickler haben tagein, tagaus mit Fehlern und Bugs zu tun. Deswegen glaubt devRant-Gründer Fox, dass Entwickler in dieser Sache anders ticken: <br /><br /> "Die meisten anderen Probleme erfahren keine positive Auflösung, aber Bugs und Fehler sind behebbar und das fühlt sich gut an." - Quality Assurance
Die Quality Assurance (QA) - oder Qualitätssicherung - ist ein kritischer Teil der Softwareentwicklung. Dennoch bemängeln Softwareentwickler an QA-Experten häufig dieselben Dinge wie an Produkt- und Projektmanagern, so Fox. <br /><br /> "Die Qualitätssicherung bekommt das Produkt oder Projekt in die Hände, wenn die Entwickler es abgeschlossen haben. Deswegen verstehen sie oft nicht, welche Hürden und Workarounds die Entwickler im Entstehungsprozess bewältigen mussten. Offensichtlich kommt es auch regelmäßig vor, dass QA-Leute die Entwickler bitten, Bereiche nochmals zu überarbeiten, die sie auch selbst bewältigen könnten."
Python wird konsistenter
Mit den letzten Versionen hat Python den Support für type hinting weiter ausgebaut - im Wesentlichen zu Gunsten von Lintern und Code Checkern. Type hinting stellt ein gutes Werkzeug dar, um die Konsistenz großer Codebasen sicherzustellen.
Zwei neue Features in Sachen type hinting halten in Python 3.9 Einzug: Type hints stehen nun auch für die Inhalte von lists oder dictionaries nativ zur Verfügung. So lassen sich lists beispielsweise als list[int]
beschreiben - ohne die typing
library nutzen zu müssen.
Die zweite Neuerung in Sachen Typing-Mechanismen sind flexible function und variable annotations. Dieses Feature erlaubt Ihnen die Nutzung von Annotated
, um zu beschreiben, dass Metadaten genutzt werden sollen, die mit Linting Tools oder in der Laufzeitumgebung überprüft werden. Annotated[int, ctype("char")]
könnte beispielsweise zum Einsatz kommen, um ein integer zu beschreiben, das als char
in C behandelt werden soll. Standardmäßig würde Python keinen Gebrauch von einer solchen Annotation machen - wohl aber Code Linter.
Python hat auch neue innere Werte
Am "Innenleben" der Programmiersprache tut sich mit Version 3.9 einiges: Die Art und Weise, in der die Modules mit der Import-Maschinerie interagieren, wurde vollständig überarbeitet. Python Extensions, die in C geschrieben sind, können nun über einen neuen Loading-Mechanismus importiert werden - was dazu führt, dass sie beim Import eher wie reguläre Python-Module behandelt werden. Zahlreiche Module in der neuen Python Standard-Bibliothek unterstützen neuerdings:
_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref
Der neue Loading-Mechanismus erlaubt nicht nur eine flexiblere Handhabung von Extension Modules, sondern ermöglicht auch weitere neue Möglichkeiten wie Advanced Hooking Behaviors.
Darüber hinaus wurde eine stable internal ABI (Application Binary Interface, Binärschnittstelle) für CPython integriert, die über die Lebensdauer von Python 3 beibehalten werden soll. Jede bisherige, große Python-Revision war mit der ABI vorheriger Versionen inkompatibel, weswegen Extension Modules für jede neue Version neu kompiliert werden mussten. Das ändert sich mit Python 3.9 - dann unterstützen die folgenden Module der Standard-Bibliothek die stable ABI:
audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.com. (fm)