Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Was gibt es Neues in Python 3.0

(Redakteure: Prüfen Sie NEWS.help auf Informationen zum Bearbeiten von NEWS mit ReST.)

Was gibt es Neues in Python 3.0 final

Erscheinungsdatum: 03. Dez. 2008

Core und Builtins

  • Problem #3996: Unter Windows würde die Funktion PyOS_CheckStack dazu führen, dass der Interpreter abstürzt ("Fatal Python error: Could not reset the stack!") anstatt einen MemoryError auszulösen.
  • Problem #3689: Der umgekehrte Listen-Iterator unterstützt jetzt __length_hint__ anstelle von __len__. Das Verhalten entspricht nun anderen umgekehrten Iteratoren.
  • Problem #4367: Python stürzte beim Kompilieren ab, wenn das unicodedata-Modul nicht importiert werden konnte und N-Escapes vorhanden waren.
  • Behebung des Build-Fehlers von _cursesmodule.c, der beim Bauen mit -D_FORTIFY_SOURCE=2 auftrat.

Bibliothek

  • Problem #4387: binascii weigert sich nun, str als binären Input zu akzeptieren.
  • Problem #4073: Hinzufügen der 2to3-Unterstützung zu build_scripts, Refactoring dieser Unterstützung in build_py.
  • IDLE würde eine Meldung "Unhandled server exception!" ausgeben, wenn das interne Debugging aktiviert ist.
  • Problem #4455: IDLE konnte die Fensterliste nicht anzeigen, wenn zwei Fenster denselben Titel hatten.
  • Problem #3741: DISTUTILS_USE_SDK gesetzt verursacht, dass msvc9compiler.py eine Ausnahme auslöst.
  • Problem #4433: Behebung einer Zugriffsverletzung beim Garbage Collecting von _ctypes.COMError-Instanzen.
  • Problem #4429: Behebung von UnicodeDecodeError in ctypes.
  • Problem #4373: Korrektur eines potenziellen Referenzlecks im pickle-Modul und Unterdrückung eines Fehlalarms für Referenzlecks in distutils.tests.test_build_ext.
  • Problem #4382: dbm.dumb gab die erwartete Dateikodierung für geöffnete Dateien nicht an.
  • Problem #4383: Wenn IDLE keine Verbindung zu seinem Subprozess herstellen kann, wird die Fehlermeldung nicht korrekt angezeigt.

Build

  • Problem #4407: Behebung einer Quelldatei, die den compileall-Schritt im Windows-Installer fehlschlagen ließ.

Doku

  • Problem #4449: Behebung von Multiprocessing-Beispielen
  • Problem #3799: Dokumentation, dass dbm.gnu und dbm.ndbm String-Argumente für Schlüssel und Werte akzeptieren, die vor der Speicherung in Bytes konvertiert werden.

Was gibt es Neues in Python 3.0 Release Candidate 3?

Erscheinungsdatum: 20. Nov. 2008

Core und Builtins

  • Problem #4349: sys.path enthielt ein nicht vorhandenes Plattformverzeichnis aufgrund eines fehlerhaften Makefiles.
  • Problem #3327: Keine Überallokation in der Liste modules_by_index.
  • Problem #1721812: Binäre Set-Operationen und copy() gaben den Eingabetyp anstelle des entsprechenden Basistyps zurück. Dies war falsch, da Set-Unterklassen ohne Aufruf ihrer __init__() Methode erstellt wurden. Das korrigierte Verhalten bringt Sets auf Linie mit Listen und Dictionaries.
  • Problem #4296: Korrektur von PyObject_RichCompareBool, damit "x in [x]" als True ausgewertet wird, auch wenn x sich nicht selbst gleich verhält. Dies war eine Regression gegenüber 2.6.
  • Problem #3705: Befehlszeilenargumente wurden nicht korrekt dekodiert, wenn das Terminal kein UTF8 verwendet.

Bibliothek

  • Problem #4363: Die Funktionen uuid.uuid1() und uuid.uuid4() funktionieren jetzt auch, wenn das ctypes-Modul nicht vorhanden ist.
  • Das Attribut mode von FileIO enthält jetzt immer"b".
  • Problem #3799: Korrektur von dbm.dumb, um Strings sowie Bytes für Schlüssel zu akzeptieren. String-Schlüssel werden jetzt in UTF-8 geschrieben.
  • Problem #4338: Korrektur des distutils upload-Befehls.
  • Problem #4354: Korrektur des distutils register-Befehls.
  • Problem #4116: Behebung eines Namenskonflikts in ScrolledCanvas.__init__.
  • Problem #4307: Das benannte Tupel, dasinspect.getfullargspec()zurückgibt, verwendet jetztkwonlydefaultsanstelle vonkwdefaults.
  • Problem #4296: Korrektur eines Absturzes, wenn pickle.loads eine falsch formatierte Eingabe erhält.
  • Problem #4283: Behebung eines verbleibenden Aufrufs von "iteritems" in distutils.

Build

  • Problem #4389: Hinzufügen eines Icons zum Deinstallations-Eintrag in "Programme hinzufügen/entfernen".
  • Problem #4289: Entfernen der Schaltfläche "Abbrechen" aus AdvancedDlg.
  • Problem #1656675: Registrieren eines Drop-Handlers für .py*-Dateien unter Windows.

Tools/Demos

  • Demos des socketserver-Moduls funktionieren jetzt mit Python 3.

Was gibt es Neues in Python 3.0 Release Candidate 2

Erscheinungsdatum: 05. Nov. 2008

Core und Builtins

  • Problem #4211: Das Attribut __path__ von frozen packages ist jetzt eine Liste anstelle eines Strings, wie von PEP 302 gefordert.
  • Problem #3727: poplib behoben.
  • Problem #3714: nntplib behoben, indem Bytes verwendet wird, wo es angebracht ist.
  • Problem #1210: imaplib und seine Dokumentation behoben.
  • Problem #4233: Geändertes semantisches Verhalten von_fileio.FileIO'sclose()Methode für Datei-Objekte mit closefd=False. Der Dateideskriptor bleibt weiterhin geöffnet, aber das Datei-Objekt verhält sich wie eine geschlossene Datei. DasFileIOObjekt hat auch ein neues schreibgeschütztes Attributclosefd.
  • Problem #3626: Unter Cygwin würde das Starten von Python mit einem nicht vorhandenen Skriptnamen nichts anzeigen, wenn der Dateiname nur 1 Zeichen lang ist.
  • Problem #4176: Absturz behoben beim Pickeln eines Objekts, dessen__reduce__Methode keine Iteratoren für das 4. und 5. Element zurückgibt.
  • Problem #3723: Initialisierung von Subinterpretern behoben.
  • Problem #4213: Die Dateisystemkodierung wird jetzt vom Codec-Subsystem normalisiert, z. B. wird UTF-8 in utf-8 umgewandelt.
  • Problem #4200: Das atexit-Modul wurde geändert, um seinen Zustand in seinem PyModuleDef atexitmodule zu speichern. Dies behebt einen Fehler mit mehreren Subinterpretern.
  • Problem #4237: io.FileIO() löste ungültige Warnungen aus, die durch unzureichende Initialisierung von PyFileIOObject-Strukturmitgliedern verursacht wurden.
  • Problem #4170: Das Pickeln eines collections.defaultdict-Objekts würde den Interpreter abstürzen lassen.
  • Problem #4146: Kompilierung auf OpenBSD wiederhergestellt.
  • Problem #3574: compile() behandelte Quellcode, der als Latin-1 kodiert war, falsch.
  • Probleme #2384 und #3975: Tracebacks wurden nicht korrekt gedruckt, wenn die Quelldatei einencodingHeader enthielt: Die falsche Zeile wurde angezeigt, und die Kodierung wurde nicht berücksichtigt.
  • Problem #3740: Modulzustand null-initialisiert.
  • Problem #3946: PyObject_CheckReadBuffer stürzte bei einem memoryview-Objekt ab.
  • Problem #1688: Unter Windows wurde die Eingabeaufforderung von input() nicht korrekt angezeigt, wenn sie Nicht-ASCII-Zeichen enthielt.
  • Fehler #3951: Py_USING_MEMORY_DEBUGGER sollte nicht standardmäßig aktiviert sein.

Bibliothek

  • Problem #3664: Das pickle-Modul könnte abstürzen, wenn eine Unterklasse von Pickler die Basis __init__ Methode nicht aufruft.
  • Problem #3725: telnetlib funktioniert jetzt vollständig in Bytes.
  • Problem #4072: Wiederherstellung von build_py_2to3.
  • Problem #4014: Behaupten Sie nicht mehr, dass Python einen Alpha-Release-Status hat, zusätzlich zur Behauptung, dass es ausgereift ist.
  • Problem #3187: Hinzufügen von sys.setfilesystemencoding.
  • Problem #3187: Bessere Unterstützung für "nicht dekodierbare" Dateinamen. Code von Victor Stinner, mit kleinen Anpassungen von GvR.
  • Problem #3965: Ermöglicht wiederholte Aufrufe von turtle.Screen, indem es zu einem echten Singleton-Objekt gemacht wird.
  • Problem #3911: ftplib.FTP.makeport() konnte ungültige Portnummern liefern.
  • Problem #3929: Wenn die Datenbank nicht geöffnet werden kann, würde dbm.open() fälschlicherweise eine TypeError: "'tuple' object is not callable" anstelle des erwarteten dbm.error auslösen.
  • Fehler #3884: Das turtle-Modul wieder zum Top-Level machen.
  • Problem #3547: Behebung von Bitfeldern in ctypes-Strukturen mit unterschiedlichen Integer-Größen.

Erweiterungsmodule

  • Problem #3659: Unterklassen von str funktionierten nicht als SQL-Parameter.

Build

  • Problem #4120: Ausschließen von Manifesten aus Erweiterungsmodulen in VS2008.
  • Problem #4091: Installieren Sie pythonxy.dll erneut in system32.
  • Problem #4018: Deaktivieren von "für mich" Installationen unter Vista.
  • Problem #4204: Behebung von Modul-Build-Fehlern unter FreeBSD 4.

Tools/Demos

  • Problem #3717: Korrektur von Demo/embed/demo.c.
  • Problem #4072: Hinzufügen einer distutils-Demo für build_py_2to3.

Was gibt es Neues in Python 3.0 Release Candidate 1

Erscheinungsdatum: 17. Sep. 2008

Core und Builtins

  • Problem #3827: memoryview verlor sein size-Attribut zugunsten der Verwendung von len(view).
  • Problem #3813: konnte python.exe nicht über einen symbolischen Link unter Cygwin starten.
  • Problem #3705: Absturz bei Angabe eines Nicht-ASCII-Werts in der Befehlszeile für die Parameter "-c" und "-m" behoben. Das Verhalten ist nun wie erwartet unter Linux, unter Windows tritt jedoch später ein Fehler auf.
  • Problem #3279: Der Import von site beim Interpreter schlug lautlos fehl, da das site-Modul die open-Builtin-Funktion verwendet, die zu diesem Zeitpunkt noch nicht initialisiert war.
  • Problem #3660: Korrektur eines Referenzlecks in str.encode(), wenn der Encoder kein Bytes-Objekt zurückgibt.
  • Problem #3774: Hinzufügen weiterer Prüfungen in PyTokenizer_FindEncoding zur Behandlung von Fehlerbedingungen.
  • Problem #3594: Korrektur von Parser/tokenizer.c:fp_setreadl() zum Öffnen der zu tokenisierenden Datei entweder über einen Dateipfad oder einen Dateizeiger zum Nutzen von PyTokenizer_FindEncoding().
  • Problem #3696: Fehler beim Parsen von Argumenten unter OpenBSD <= 4.4 und Cygwin. Auf diesen Systemen ist die Funktion mbstowcs() leicht fehlerhaft und muss durch strlen() ersetzt werden, um die Anzahl der Wide-Characters zu zählen, die zur Darstellung des Multi-Byte-Zeichenstrings benötigt werden.
  • Problem #3697: "Fatal Python error: Cannot recover from stack overflow" konnte unter Windows im Debug-Modus leicht auftreten, wenn der Code zur Überprüfung der Rekursionstiefe ausgeführt wurde, aufgrund einer fehlerhaften Behandlung der Rekursionstiefe, wenn USE_STACKCHEK aktiviert war.
  • Problem 3639: Das Modul _warnings konnte den Interpreter abstürzen lassen, wenn unerwartete Typen als Argumente übergeben wurden.
  • Problem #3712: Das memoryview-Objekt hatte ein Referenzleck und unterstützte keine zyklische Speicherbereinigung.
  • Problem #3668: Behebung eines Speicherlecks mit dem "s*" Argument-Parser in PyArg_ParseTuple und ähnlichen Funktionen, das auftrat, wenn das Argument für "s*" korrekt geparst wurde, das Parsen nachfolgender Argumente jedoch fehlschlug.
  • Problem #3611: Ein Ausnahme __context__ konnte in einem komplexen Muster mit einer __del__-Methode, die eine Ausnahme erneut auslöste, gelöscht werden.
  • Problem #2534: Beschleunigung von isinstance() und issubclass() um 50-70%, um die Geschwindigkeit von Python 2.5 trotz des __instancecheck__ / __subclasscheck__ Mechanismus zu erreichen. Dabei wurde ein Fehler behoben, bei dem isinstance() und issubclass(), wenn ihnen ein Tupel von Klassen als zweites Argument übergeben wurde, __instancecheck__ / __subclasscheck__ auf dem Tupel anstelle auf jedem Typobjekt nachschlugen.
  • Problem #3663: Py_None wurde beim Drucken von SyntaxErrors decref't.
  • Problem #3651: Behebung verschiedener Speicherlecks bei Verwendung der Buffer-Schnittstelle oder wenn der "s#" Code von PyArg_ParseTuple ein Bytes-Objekt erhält.
  • Problem #3657: Behebung des uninitialisierten Speicherlesens beim Pickeln von Longs. Gefunden von valgrind.
  • Anwenden von Sicherheitspatches von Apple.
  • Behebung von Abstürzen bei Speicherzuweisungsfehlern, gefunden mit failmalloc.
  • Behebung von Speicherlecks, gefunden mit valgrind, und Aktualisierung der Unterdrückungsdatei.
  • Behebung von Compiler-Warnungen im opt-Modus, die zu ungültigen Speicherlesevorgängen führten.
  • Behebung eines Problems mit falschem Namen im decimal-Modul, gemeldet von pychecker.
  • Problem #3650: Behebung eines Referenzlecks in bytes.split('x').
  • bytes(o) versucht jetzt, o.__bytes__() zu verwenden, bevor Rückfalllösungen angewendet werden.
  • Problem #1204: Das Konfigurationsskript testet nun auf zusätzliche Bibliotheken, die beim Linken gegen readline erforderlich sein können. Dies behebt Probleme mit x86_64-Builds auf einigen Plattformen (einige Linux-Varianten und OpenBSD).

C API

  • PyObject_Bytes und PyBytes_FromObject wurden hinzugefügt.

Bibliothek

  • Problem #3756: re.escape() handhabt jetzt Bytes genauso wie str.
  • Problem #3800: Fehler im filter()-bezogenen Bug in formatter.py.
  • Problem #874900: Fehler im Verhalten des threading-Moduls nach einem Fork.
  • Problem #3535: zipfile konnte einige Zip-Dateien größer als 2 GB nicht lesen.
  • Problem #3776: Markierung des bsddb-Pakets zur Entfernung in 3.0.
  • Problem #3762: platform.architecture() schlägt fehl, wenn Python über seinen symbolischen Link gestartet wird.
  • Problem #3660: Behebung eines Speicherlecks im C-Beschleuniger des pickle-Moduls.
  • Problem #3160: Der Befehl "bdist_wininst" von distutils funktionierte nicht.
  • Problem #1658: tkinter ändert die Dictionary-Größe während der Iteration sowohl in tkinter.BaseWidget als auch in tkinter.scrolledtext.ScrolledText.
  • Das bsddb-Modul (und damit das dbm.bsd-Modul) wurde entfernt. Es wird nun außerhalb der Standardbibliothek unter http://www.jcea.es/programacion/pybsddb.htm gepflegt.
  • Problem 600362: parse_qs() und parse_qsl() wurden vom cgi-Modul in das urlparse-Modul verschoben. Eine DeprecationWarning wurde im alten Modul hinzugefügt, es wird zukünftig als veraltet gelten.
  • Problem #3719: platform.architecture() schlägt fehl, wenn sich Leerzeichen im Pfad zur Python-Binärdatei befinden.
  • Problem 3602: Als Teil des Merges von r66135 wurden die Parameter von warnings.catch_warnings() als Keyword-Only gemacht. Eine DeprecationWarning wurde ebenfalls entfernt.
  • Die Deprecation-Warnungen für die camelCase-Namen der Threading-API wurden entfernt.
  • Problem #3110: multiprocessing kann unter Solaris 10 aufgrund des fehlenden SEM_VALUE_MAX nicht kompiliert werden.

Erweiterungsmodule

  • Problem #3782: os.write() darf keine Unicode-Strings akzeptieren.
  • Problem #2975: Beim Kompilieren mehrerer Erweiterungsmodule mit Visual Studio 2008 aus demselben Python-Interpreter heraus wuchsen einige Umgebungsvariablen unbegrenzt an.
  • Problem #3643: Hinzufügen weiterer Prüfungen zu _testcapi, um Abstürze durch Ausnutzung schlechter Argumentprüfungen zu verhindern.
  • bsddb-Code aktualisiert auf Version 4.7.3pre2. Dieser Code ist derselbe wie der von Python 2.6, da die Absicht ist, eine einheitliche 2.x/3.x-Codebasis zu erhalten. Der Python-Code wird automatisch mit "2to3" übersetzt. Bitte aktualisieren Sie diesen Code in Python 3.0 nicht von Hand. Aktualisieren Sie den Code für 2.6 und führen Sie dann "2to3" aus.
  • Die Module _bytesio und _stringio werden nun in die Python-Binärdatei kompiliert.
  • Probleme #3492 und #3790: Behebung der Verwendung von veränderlichen bytearray-Objekten im zlib-Modul und zipimport-Modul, wo unveränderliche Bytes hätten verwendet werden sollen.
  • Problem #3797: Korrektur der Module dbm, marshal, mmap, ossaudiodev und winreg, um Bytes-Objekte anstelle von bytearray-Objekten zurückzugeben.

Tools/Demos

  • Korrektur von Misc/gdbinit, damit es funktioniert.

Build

  • Problem #3812: Python konnte nicht erstellt werden, wenn configure --without-threads verwendet wurde.
  • Problem #3791: Entfernen des bsddb-Moduls aus dem Windows-Installer und der Kern-bsddb-Bibliothek aus den Windows-Build-Dateien.

Was gibt es Neues in Python 3.0b3?

Erscheinungsdatum: 20. Aug. 2008

Core und Builtins

  • Problem #3653: Behebung eines Absturzes, wenn sys.excepthook mit ungültigen Argumenten aufgerufen wurde.

  • Problem #2394: Implementierung eines größeren Teils der memoryview-API, mit der Einschränkung, dass derzeit nur eindimensionale, zusammenhängende Puffer unterstützt und genutzt werden. Slicing, Slice-Zuweisung und Vergleich (Gleichheit und Ungleichheit) wurden hinzugefügt. Außerdem wurde die tolist()-Methode implementiert, aber nur für Byte-Puffer. Schließlich wurde die API aktualisiert, um Bytes-Objekte zurückzugeben, wo früher bytearrays zurückgegeben wurden.

  • Problem #3560: Bereinigung der neuen C PyMemoryView-API, um die interne Benennung konsistent zu gestalten; Hinzufügen von Makros PyMemoryView_GET_BASE() und PyMemoryView_GET_BUFFER(), um nützliche Eigenschaften von Speicheransichten ohne Abhängigkeit von einer bestimmten Implementierung abzurufen; Entfernen der schlecht benannten PyMemoryView()-Funktion (PyMemoryView_GET_BUFFER() kann stattdessen verwendet werden).

  • ctypes-Funktionszeiger, die COM-Methoden sind, sind wieder ein boolescher True-Wert.

  • Problem #1819: Funktionsaufrufe mit mehreren benannten Parametern sind jetzt im Durchschnitt 35 % schneller (gemessen von pybench).

  • Die undokumentierten C-APIs PyUnicode_AsString() und PyUnicode_AsStringAndSize() wurden für den Interpreter privat gemacht, um ihre Schnittstellen für Python 3.1 verfeinern zu können.

    Wenn Sie auf die UTF-8-Darstellung eines Unicode-Objekts als Bytes-String zugreifen müssen, verwenden Sie stattdessen PyUnicode_AsUTF8String().

  • Problem #3460: Die Implementierung von PyUnicode_Join() ist 10 % bis 80 % schneller dank der strengeren Semantik von Python 3.0, die die Vermeidung aufeinanderfolgender Reallokationen des Ergebnis-Strings ermöglicht (dies betrifft auch str.join()).

Bibliothek

  • Problem #1276: Hinzufügen temporärer Aliase für CJK Mac-Kodierungen zur Behebung eines Build-Problems unter MacOS mit CJK-Locales. Es werden vier temporäre Zuordnungen zu bestehenden Legacy-Codecs hinzugefügt, die virtuell mit Mac-Kodierungen kompatibel sind. Sie werden in 3.1 durch korrekt implementierte Codecs ersetzt.
  • Problem #3614: Korrektur eines Tippfehlers in xmlrpc.client, der zu einem NameError "global name 'header' is not defined" führte.
  • Problem #2834: Aktualisieren der regulären Ausdrucksbibliothek, um den Unicode-Standards von py3k zu entsprechen. Mit anderen Worten, die Vermischung von Bytes und Unicode-Strings (sei es als Muster, Suchzeichenkette oder Ersetzungszeichenkette) löst einen TypeError aus. Außerdem wird das re.UNICODE-Flag automatisch für Unicode-Muster aktiviert und kann durch Angabe eines neuen re.ASCII-Flags deaktiviert werden; für Byte-Muster ist nur die ASCII-Übereinstimmung möglich und der Versuch, re.UNICODE für solche Muster anzugeben, löst einen ValueError aus.
  • Problem #3300: urllib.parse.[un]quote() verwendet standardmäßig UTF-8. Code von Matt Giuca. quote() kodiert die Eingabe vor dem Quoting, unquote() dekodiert nach dem Unquoting. Es gibt neue Argumente, um die Kodierungs- und Fehler-Einstellungen zu ändern. Es gibt auch neue APIs, um die Encode/Decode-Schritte zu überspringen. [un]quote_plus() sind ebenfalls betroffen.
  • Problem #2235: numbers.Number blockiert nun die Vererbung des Standard-Hashs basierend auf id(), da dieser Hash-Mechanismus für numerische Typen nicht korrekt ist. Alle konkreten numerischen Typen, die von Number erben (anstatt sich nur damit zu registrieren), müssen explizit eine Hash-Implementierung bereitstellen, damit ihre Instanzen hashbar sind.
  • Problem #2676: im E-Mail-Paket hing die Analyse des Content-Types aufgrund quadratischen oder exponentiellen Verhaltens eines regulären Ausdrucks bei pathologischem Input fest.
  • Problem #3476: Binäres Puffellesen über die neue "io"-Bibliothek ist nun Thread-sicher.
  • Problem #1342811: Behebung eines Lecks in Tkinter.Menu.delete. Menüeintrag-bezogene Befehle wurden nicht gelöscht.
  • Entfernen der TarFileCompat-Klasse aus tarfile.py.
  • Problem #2491: os.fdopen ist jetzt fast ein Alias für die eingebaute open() Funktion und akzeptiert dieselben Parameter. Es prüft nur, ob sein erstes Argument eine Ganzzahl ist.
  • Problem #3394: zipfile.writestr setzt externe Attribute, wenn ein Dateiname anstelle einer ZipInfo-Instanz übergeben wird, sodass Dateien unter Unix mit Modus 0600 anstelle von 000 extrahiert werden.
  • Problem #2523: Behebung des quadratischen Verhaltens beim Lesen einer Binärdatei ohne Angabe einer bestimmten Länge.

Erweiterungsmodule

  • Fehler #3542: Unterstützung von Unicode-Strings in _msi-Modul.

Was gibt es Neues in Python 3.0b2?

Erscheinungsdatum: 17. Juli 2008

Core und Builtins

  • Problem #3008: Der float-Typ hat eine neue Instanzmethode 'float.hex' und eine neue Klassenmethode 'float.fromhex' zur Konvertierung von Gleitkommazahlen in und aus Hexadezimalstrings.
  • Problem #3083: Hinzufügen der alternativen (#) Formatierung für bin, oct, hex Ausgabe für str.format(). Dies fügt das Präfix 0b, 0o bzw. 0x hinzu.
  • Problem #3280: Wie chr() akzeptiert das "%c"-Format jetzt Unicode-Codepunkte jenseits der Basic Multilingual Plane (über 0xffff) auf allen Konfigurationen. Auf "schmalen Unicode"-Builds ist das Ergebnis ein String aus 2 Code-Einheiten, die ein UTF-16-Surrogatpaar bilden.
  • Problem #3282: str.isprintable() sollte für undefinierte Unicode-Zeichen False zurückgeben.
  • Problem #3236: Rückgabe kleiner Longs von PyLong_FromString.
  • Ausnahmetracebacks unterstützen jetzt Ausnahmeketten.

Bibliothek

  • Entferntes sunaudio-Modul. Verwenden Sie stattdessen sunau.
  • Problem #3554: ctypes.string_at und ctypes.wstring_at riefen Python-API-Funktionen ohne GIL auf, was zu einem fatalen Fehler führen konnte, wenn sie fehlschlugen.
  • Problem #799428: Korrektur von Tkinter.Misc._nametowidget, um Tcl-Befehlsobjekte zu entpacken.
  • Entfernte "ast"-Funktionsaliase aus dem parser-Modul.
  • Problem #3313: Absturz behoben, wenn ein fehlgeschlagener dlopen()-Aufruf keine gültige dlerror()-Nachricht gesetzt hat.
  • Problem #3258: Absturz behoben, als ein ctypes POINTER-Typ auf eine unvollständige Struktur erstellt wurde.
  • Problem #2683: Inkonsistenz in subprocess.Popen.communicate() behoben: Das Argument muss nun in jedem Fall ein Bytes-Objekt sein.
  • Problem #3145: help("modules whatever") schlug fehl, als versucht wurde, den Quellcode jedes einzelnen Moduls der Standardbibliothek zu laden, einschließlich ungültiger Dateien, die in der Testsuite verwendet wurden.
  • Die Bibliothek gettext verwendet nun konsistent Unicode-Strings für Nachrichten-IDs und Nachrichten-Strings, undugettext()und ähnliche existieren nicht mehr.
  • Das traceback-Modul wurde erweitert, um verkettete Ausnahmen zu behandeln.

C API

  • Problem #3247: Die Funktion Py_FindMethod wurde entfernt. Moderne Typen sollten stattdessen den tp_methods-Slot verwenden.

Tools/Demos

  • Das Verzeichnis Mac/Demos wurde entfernt.
  • Alle Mac-Skripte wurden entfernt (einschließlich BuildApplet.py).

Was gibt es Neues in Python 3.0b1?

Erscheinungsdatum: 18. Juni 2008

Core und Builtins

  • Problem #3211: warnings.warn_explicit() schützte nicht davor, dass sein 'registry'-Argument etwas anderes als ein dict oder None ist. Auch ein Fehler bei der Fehlerbehandlung wurde behoben, als 'message' und 'category' beide auf None gesetzt waren, was zu einem Bus-Fehler führte.
  • Problem #3100: Korrektur eines Absturzes bei der Deallokation eines abgeleiteten Weakrefs, der die letzte (starke) Referenz auf sein Referenzobjekt hält.
  • Problem #2630: Implementierung von PEP 3138. repr() gibt jetzt druckbare Unicode-Zeichen unescaped zurück, um eine reine ASCII-Darstellung eines Objekts zu erhalten, verwenden Sie ascii().
  • Problem #1342: Unter Windows konnte Python nicht gestartet werden, wenn es in einem Verzeichnis mit Nicht-ASCII-Zeichen installiert war.
  • Implementierung von PEP 3121: neue API für Modulinitialisierung und -finalisierung.
  • Entfernt die bereits nicht mehr vorhandene-tOption.
  • Problem #2957: Korrektur eines ValueError "recursion limit exceeded", beim Unmarshalling vieler Code-Objekte, was beim Importieren einer großen .pyc-Datei (~1000 Funktionen) auftritt.
  • Problem #2963: Behebung eines Fusionsübersehens, das den Methodencache für alle Typen deaktivierte.
  • Problem #2964: Behebung eines fehlenden INCREF in instancemethod_descr_get.
  • Problem #2895: Kein Absturz, wenn Bytes-Objekte als Schlüsselnamen übergeben werden.
  • Problem #2798: Beim Parsen von Argumenten mit PyArg_ParseTuple erlaubt der "s"-Code jetzt jeden Unicode-String und gibt einen UTF-8-kodierten Puffer zurück, genau wie der "s#"-Code bereits tut. Der "z"-Code wurde ebenfalls korrigiert.
  • Problem #2863: Generatoren haben jetzt eingen.__name__Attribut, das gleichgen.gi_code.co_nameist, wiefunc.__name___das gleichfunc.func_code.co_nameist. Das repr() eines Generators enthält jetzt auch diesen Namen.
  • Problem #2831: enumerate() hat jetzt einstartArgument.
  • Problem #2801: Behebung eines Fehlers in der float.is_integer-Methode, bei dem manchmal fälschlicherweise ein ValueError ausgelöst wurde.
  • Die--with-toolbox-glueOption (und die zugehörige pymactoolbox.h) wurden entfernt.
  • Problem #2196: hasattr() lässt jetzt Ausnahmen, die nicht von Exception erben (KeyboardInterrupt und SystemExit), propagieren, anstatt sie zu ignorieren.
  • #3021 Die Semantik der Ausnahme-Wiederholung wurde erheblich verbessert. Allerdings können f_exc_type, f_exc_value und f_exc_traceback nicht mehr aus Python-Code aufgerufen werden.
  • Drei Mitglieder von PyNumberMethods, nb_coerce, nb_hex und nb_oct, wurden entfernt.

Erweiterungsmodule

  • Umbenannt_winregModul inwinreg.
  • Unterstützung für os.O_ASYNC und fcntl.FASYNC, wenn die Konstanten auf der Plattform vorhanden sind.
  • Unterstützung für Windows 9x wurde aus dem winsound-Modul entfernt.
  • Problem #2870: cmathmodule.c Kompilierungsfehler.

Bibliothek

  • Die Methodenis_in_tuple(), is_vararg(), undis_keywordarg()von symtable.Symbol wurden entfernt.
  • Patch #3133: http.server.CGIHTTPRequestHandler funktionierte unter Windows nicht.
  • ein neuesurllibPaket wurde erstellt. Es besteht aus Code vonurllib, urllib2, urlparse, undrobotparser. Die alten Module wurden alle entfernt. Das neue Paket hat fünf Untermoduleurllib.parse, urllib.request, urllib.response, urllib.error, undurllib.robotparser. Dieurllib.request.urlopen()Funktion verwendet den URL-Opener vonurllib2. (Beachten Sie, dass die Unittests für den Beta-Release nicht umbenannt wurden, aber sie werden in Zukunft umbenannt.)
  • rfc822 wurde zugunsten des E-Mail-Pakets entfernt.
  • mimetools wurde zugunsten des E-Mail-Pakets entfernt.
  • Patch #2849: Entfernen der Verwendung des rfc822-Moduls aus der Standardbibliothek.
  • Hinzufügen einer C-optimierten Implementierung von io.StringIO.
  • DiepickleModul verwendet nun automatisch eine optimierte C-Implementierung von Pickler und Unpickler, wenn verfügbar. DascPickleModul wird nicht mehr benötigt.
  • Entfernt diehtmllibundsgmllibModule.
  • Die veraltetenSmartCookieundSimpleCookieKlassen wurden aushttp.cookies.
  • DiecommandsModul wurde entfernt. Seine Funktionen getoutput() und getstatusoutput() wurden in dassubprocessModul verschoben.
  • DiehttpPaket wurde erstellt; es enthält das altehttplibalshttp.client, Cookiealshttp.cookies, cookielibalshttp.cookiejar, und den Inhalt der dreiHTTPServerModule alshttp.server.
  • DiexmlrpcPaket wurde erstellt; es enthält das altexmlrpclibModul alsxmlrpc.clientund den Inhalt der altenSimpleXMLRPCServerundDocXMLRPCServerModule alsxmlrpc.server.
  • DiedbmPaket wurde erstellt, das die alten Moduleanydbmundwhichdbin seinem__init__.py, und hatdbm.gnu(wargdbm), dbm.bsd(wardbhash), dbm.ndbm(wardbm) unddbm.dumb(wardumbdbm) als Untermodule.
  • DiereprModul wurde umbenannt inreprlib.
  • DiestatvfsModul wurde entfernt.
  • Problem #1713041: Korrektur der Handhabung der maximalen Tiefe in pprint.
  • Problem #2250: Ausnahmen, die während der Auswertung von Namen in rlcompleter'sCompleter.complete()Methode ausgelöst wurden, werden nun abgefangen und ignoriert.
  • Patch #2659: Hinzugefügtbreak_on_hyphensOption zurTextWrapperKlasse von textwrap.
  • Problem #2487: Ändern der Semantik von math.ldexp(x, n), wenn n zu groß ist, um in einen C long zu passen. ldexp(x, n) gibt nun Null (mit geeignetem Vorzeichen) zurück, wenn n groß und negativ ist; zuvor löste es OverflowError aus.
  • DieConfigParserModul wurde umbenannt inconfigparser.
  • Problem #2865: webbrowser.open() funktioniert wieder in einer KDE-Umgebung.
  • DiemultifileModul wurde entfernt.
  • DieSocketServerModul wurde umbenannt insocketserver.
  • Behobene die__all__Einstellung aufcollectionsumUserListundUserString.
  • Das sre-Modul wurde entfernt.
  • Das Queue-Modul wurde in queue umbenannt.
  • Das copy_reg-Modul wurde in copyreg umbenannt.
  • Das mhlib-Modul wurde entfernt.
  • Das ihooks-Modul wurde entfernt.
  • Das fpformat-Modul wurde entfernt.
  • Das dircache-Modul wurde entfernt.
  • Das Canvas-Modul wurde entfernt.
  • Das Decimal-Modul erhielt die magischen Methoden __round__, __ceil__, __floor__ und __trunc__, um Unterstützung für round, math.ceil, math.floor und math.trunc zu bieten.
  • Das user-Modul wurde entfernt.
  • Das mutex-Modul wurde entfernt.
  • Das imputil-Modul wurde entfernt.
  • os.path.walk wurde zugunsten von os.walk entfernt.
  • pdb erhielt den Befehl "until".
  • Das Modul test.test_support wurde in test.support umbenannt.
  • Die API des threading-Moduls wurde umbenannt, um PEP 8-konform zu sein. Die alten Namen sind weiterhin vorhanden, werden aber in naher Zukunft entfernt.

Tools/Demos

  • Das bgen-Tool wurde entfernt.

Build

Was gibt es Neues in Python 3.0a5?

Erscheinungsdatum: 08. Mai 2008

Core und Builtins

  • Behebung des Fehlverhaltens von PyLong_FromSsize_t auf Systemen, wo sizeof(size_t) > sizeof(long).
  • Problem #2221: Korrektur eines SystemError "error return without exception set", wenn der von exec() ausgeführte Code eine Ausnahme auslöst und sys.stdout.flush() ebenfalls einen Fehler auslöst.
  • Fehler #2565: Das repr() von Typobjekten nennt sie jetzt "class" und nicht "type" – unabhängig davon, ob es sich um eingebaute Typen handelt oder nicht.
  • Die Befehlszeilenverarbeitung wurde so umgestellt, dass Unicode-Strings so unverändert wie möglich weitergegeben werden; als Folge davon wurde die C-API im Zusammenhang mit Befehlszeilenargumenten geändert, um wchar_t zu verwenden.
  • Alle Backslashes in Raw-Strings werden buchstäblich interpretiert. Das bedeutet, dass 'u'- und 'U'-Escapes nicht speziell behandelt werden.

Erweiterungsmodule

Bibliothek

  • ctypes-Objekte unterstützen jetzt die PEP3118-Buffer-Schnittstelle.
  • Problem #2682: ctypes-Callback-Funktionen enthalten nicht mehr eine zyklische Referenz auf sich selbst.
  • Problem #2058: Entfernen des buf-Attributs und Hinzufügen von __slots__ zur TarInfo-Klasse, um die Speichernutzung von tarfile zu reduzieren.
  • Fehler #2606: Vermeiden des Aufrufs von .sort() auf einem dict_keys-Objekt.
  • Die gebündelte libffi-Kopie ist nun synchron mit der kürzlich veröffentlichten libffi3.0.5-Version, abgesehen von einigen kleinen Änderungen an Modules/_ctypes/libffi/configure.ac.

Build

  • Problem #1496032: Auf Alpha -mieee verwenden, wenn GCC der Compiler ist.
  • "make install" ist jetzt ein Alias für "make altinstall", um versehentliches Überschreiben einer Python 2.x-Installation zu verhindern. Verwenden Sie "make fullinstall", um Python 3.0 als "python" zu installieren.
  • Problem #2544: Auf HP-UX-Systemen 'gcc -shared' zum Linken verwenden, wenn GCC als Compiler verwendet wird.

Was ist neu in Python 3.0a4?

Erscheinungsdatum: 02.04.2008

Core und Builtins

  • Bug #2301: Versuchen Sie nicht, den Quellcode für Syntaxfehler in die ursprüngliche Kodierung zu dekodieren.

Erweiterungsmodule

  • Das dl-Modul wurde entfernt. Verwenden Sie stattdessen das ctypes-Modul.
  • Verwenden Sie wchar_t-Funktionen im _locale-Modul.

Bibliothek

  • Die Klasse distutils.commands.build_py.build_py_2to3 kann als Ersatz für build_py verwendet werden, um 2to3 automatisch auf zu installierende Module anzuwenden.
  • Ein neues Pickle-Protokoll (Protokoll 3) wurde mit expliziter Unterstützung für Bytes hinzugefügt. Dies ist das Standardprotokoll. Es kann absichtlich nicht von Python 2.x entpickelt werden.
  • Wenn ein von Python 2.x geschriebenes Pickle eine (8-Bit-)Str-Instanz enthält, wird diese nun in eine (Unicode-)Str-Instanz dekodiert. Die dafür verwendete Kodierung ist standardmäßig ASCII, kann aber über zwei neue Schlüsselwortargumente für die Unpickler-Klasse überschrieben werden. Zuvor hätte dies Byte-Instanzen erzeugt, was normalerweise falsch ist: Str-Instanzen werden oft zum Pickeln von Attributnamen usw. verwendet, und Text ist ohnehin häufiger als Binärdaten.
  • Standardmäßig ASCII als locale.getpreferredencoding, wenn das POSIX-System CODESET nicht unterstützt und LANG nicht gesetzt ist oder keine Ableitung einer Kodierung zulässt.
  • Problem #1202: zlib.crc32 und zlib.adler32 geben nun einen vorzeichenlosen Wert zurück.
  • Problem #719888: tokenize wurde aktualisiert, um eine Bytes-API zu verwenden. generate_tokens wurde in tokenize umbenannt und arbeitet nun mit Bytes anstelle von Zeichenketten. Eine neue Funktion detect_encoding wurde hinzugefügt, um die Kodierung von Quelldateien gemäß PEP-0263 zu bestimmen. Token-Sequenzen, die von tokenize zurückgegeben werden, beginnen immer mit einem ENCODING-Token, das die zum Dekodieren der Datei verwendete Kodierung angibt. Dieses Token wird verwendet, um die Ausgabe von untokenize zurück in Bytes zu kodieren.

Was ist neu in Python 3.0a3?

Erscheinungsdatum: 29.02.2008

Core und Builtins

  • Problem #2282: io.TextIOWrapper überschrieb seekable() nicht von io.IOBase.
  • Problem #2115: Wichtige Beschleunigung beim Setzen von __slot__-Attributen. Verhindert auch einen möglichen Absturz: Eine abstrakte Basisklasse würde versuchen, auf einen Slot eines registrierten virtuellen Unterklassen zuzugreifen.
  • repr() und str() von komplexen Zahlen mit Unendlichkeit oder NaN als Real- oder Imaginärteil behoben.
  • Alle freien Listen während eines gc.collect() der höchsten Generation leeren, um pymalloc zu ermöglichen, mehr Arenen freizugeben. Python gibt möglicherweise früher Speicher an das Betriebssystem zurück.
  • Problem #2045: Behebt eine unendliche Rekursion, die beim Drucken einer Unterklasse von collections.defaultdict ausgelöst wird, wenn deren default_factory auf eine gebundene Methode gesetzt ist.
  • Einen kleinen Speicherleck in dictobject.c behoben. Der Inhalt der freien Liste wurde beim Herunterfahren des Interpreters nicht freigegeben.
  • Begrenzen Sie die freie Liste von Methoden- und Builtin-Funktionsobjekten auf jeweils 256 Einträge.
  • Patch #1953: Hinzugefügtsys._compact_freelists()und die C-API-FunktionenPyInt_CompactFreeListundPyFloat_CompactFreeListzum Komprimieren der internen freien Listen von vorab zugewiesenen Integern und Gleitkommazahlen.
  • Bug #1983: Korrigierter Rückgabetyp von fork(), fork1() und forkpty()-Aufrufen. Python erwartete den Rückgabetyp int, aber die fork-Familie gibt pi_t zurück.
  • Problem #1678380: Behebt einen Fehler, der 0j und -0j identifiziert, wenn sie in derselben Codeeinheit vorkommen.
  • Problem #2025: tuple.count() und tuple.index()-Methoden hinzugefügt, um der collections.Sequence-API zu entsprechen.
  • Mehrfache Reinitialisierung des Python-Interpreters behoben. Die kleine Integer-Liste in longobject.c verursachte während der dritten Finalisierung einen Segfault.
  • Problem #1973: bytes.fromhex('') löste SystemError aus.
  • Problem #1771: cmp-Parameter aus sorted() und list.sort() entfernt.
  • Problem #1969: split und rsplit in bytearray sind inkonsistent.
  • map() akzeptiert nun keine None mehr für das erste Argument. Verwenden Sie stattdessen zip().
  • Problem #1769: int("- 1") ist jetzt nicht mehr erlaubt.
  • Object/longobject.c: long(float('nan')) löst einen OverflowError aus, anstatt 0 zurückzugeben.
  • Problem #1762972: __file__ zeigt auf die Quelldatei anstelle der pyc/pyo-Datei, wenn die py-Datei existiert.
  • Problem #1393: object_richcompare() gibt NotImplemented anstelle von False zurück, wenn die Objekte nicht gleich sind, um der anderen Seite eine Chance zu geben.
  • Problem #1692: Interpreter zeigte den Speicherort von SyntaxError nicht an.
  • Einige Fehlermeldungen verbessert, wenn Windows ein Erweiterungsmodul nicht laden kann. Nun erhalten wir z. B. '%1 ist keine gültige Win32-Anwendung' anstelle von 'Fehlercode 193'. Verwendet auch Unicode-Zeichenketten, um mit nicht-englischen Gebietsschemata umzugehen.
  • Problem #1587: Instancemethoden-Wrapper für PyCFunctions hinzugefügt. Die Python C-API hat einen neuen Typ *PyInstanceMethod_Type* und die Funktionen *PyInstanceMethod_Check(o)*, *PyInstanceMethod_New(func)* und *PyInstanceMethod_Function(im)*.
  • Die Konstanten gc.DEBUG_OBJECT und gc.DEBUG_INSTANCE wurden aus dem gc-Modul entfernt; gc.DEBUG_COLLECTABLE oder gc.DEBUG_UNCOLLECTABLE reichen nun aus, um die entsprechende Liste der vom Garbage Collector berücksichtigten Objekte zu drucken.
  • Problem #1573: Unsachgemäße Verwendung der nur-Schlüsselwort-Syntax lässt den Parser abstürzen.
  • Problem #1564: Die Set-Implementierung sollte PyUnicode anstelle von PyString als Spezialfall behandeln.
  • Patch #1031213: Dekodiert die Quellzeile in SyntaxErrors zurück in ihre ursprüngliche Quellkodierung.
  • inspect.getsource() enthält wieder die Decorators.
  • Bug #1713: posixpath.ismount() behauptet, ein Symlink zu einem Mountpoint sei ein Mountpoint.
  • Inkrementeller UTF-8-Sig-Dekoder behoben, der ein BOM nicht erkannte, wenn der erste an den Dekoder übergebene Block mit einem BOM begann, aber länger als 3 Bytes war.

Erweiterungsmodule

  • Code für itertools ifilter(), imap() und izip() wurde in Builtins verschoben und in filter(), map() und zip() umbenannt. Außerdem wurden izip_longest() in zip_longest() und ifilterfalse() in filterfalse() umbenannt.
  • Problem #1762972: Die Funktion reload() als imp.reload() wieder hinzugefügt.
  • Bug #2111: mmap führt einen Segfault aus, wenn versucht wird, einen mit PROT_READ geöffneten Block zu schreiben.
  • Problem #2063: Korrekte Reihenfolge von utime und stime im Ergebnis von os.times() unter Windows.

Bibliothek

  • Weakref-Wörterbücher erben nun von MutableMapping.
  • Neue Klasse UserDict im collections-Modul erstellt. Diese erbt von und entspricht der MutableMapping ABC. Außerdem wurden UserString und UserList in das collections-Modul verschoben. Die Klasse MutableUserString wurde entfernt.
  • UserDict.DictMixin entfernt. Alle Verwendungen wurden durch collections.MutableMapping ersetzt.
  • Problem #1703: getpass() sollte nach dem Schreiben der Eingabeaufforderung leeren.
  • Problem #1585: IDLE verwendet nicht existierende xrange()-Funktion.
  • Problem #1578: Probleme in win_getpass.

Build

  • Das Konfigurationsflag --enable-unicode wurde in --with-wide-unicode umbenannt, da Unicode-Zeichenketten nicht mehr deaktiviert werden können.

C API

  • Problem #1629: Py_Size, Py_Type und Py_Refcnt wurden in Py_SIZE, Py_TYPE und Py_REFCNT umbenannt.
  • Neue API PyImport_ImportModuleNoBlock(), funktioniert wie PyImport_ImportModule(), blockiert aber nicht die Import-Sperre (gibt stattdessen einen Fehler zurück).

Was ist neu in Python 3.0a2?

Erscheinungsdatum: 07.12.2007

(Hinweis: Diese Liste ist unvollständig.)

Core und Builtins

  • str8 hat nun die gleiche Konstruktionssignatur wie bytes.
  • Vergleiche zwischen str und str8 ergeben nun False/True für ==/!=. sqlite3 gibt str8 zurück, wenn es ein Objekt aus seinem __conform__-Wert neu erstellt. Das struct-Modul gibt str8 für alle zeichenkettenbezogenen Formate zurück. Dies war vor dieser Änderung der Fall, wird aber dank Zeichenkettenvergleichen, die immer False ergeben, deutlicher.
  • Ersetzt PyFile_FromFile() durch PyFile_FromFd(fd, name. mode, buffer, encoding, newline).
  • Behebt imp.find_module(), damit der Header -- coding: -- befolgt wird.
  • Änderte __file__ und co_filename zu Unicode. Die Pfadnamen werden mit Py_FileSystemDefaultEncoding und einer neuen API-Methode PyUnicode_DecodeFSDefault(char*) dekodiert.
  • io.open() und _fileio.FileIO haben ein neues Argument closefd erhalten. Ein falscher Wert deaktiviert das Schließen des Dateideskriptors.
  • Neue Option -b hinzugefügt, um Warnungen auszugeben (-bb für Fehler) über bestimmte Operationen zwischen Bytes/Puffer und Zeichenketten wie str(b'') und Vergleiche.
  • Die Standardströme sys.stdin, stdout und stderr können None sein, wenn die C-Laufzeitbibliothek einen ungültigen Dateideskriptor für die Ströme zurückgibt (fileno(stdin) < 0). Derzeit geschieht dies nur für Windows-GUI-Apps und Skripte, die mit pythonw.exe gestartet werden.
  • PCbuild9-Verzeichnis für VS 2008 hinzugefügt.
  • structmember.h WRITE_RESTRICTED wurde in PY_WRITE_RESTRICTED umbenannt, um Namenskonflikte mit VS 2008 unter Windows zu vermeiden.
  • Ungebundene Methoden sind endgültig verschwunden. ClassObject.method gibt ein normales Funktionsobjekt zurück, instance.method gibt weiterhin ein gebundenes Methodenobjekt zurück. Die API von gebundenen Methoden wurde ebenfalls bereinigt. Das Attribut im_class wurde entfernt und im_func + im_self wurden in __func__ und __self__ umbenannt. Der Factory PyMethod_New nimmt nur func und instance als Argument.
  • intobject.h wird nicht mehr von Python.h eingeschlossen. Die Überreste wurden nach longobject.h verschoben. Es existiert weiterhin, um mehrere Aliase von PyInt- zu PyLong-Funktionen zu definieren.
  • Entfernt sys.maxint, stattdessen sys.maxsize verwenden.

Erweiterungsmodule

  • Der Profiler hotshot wurde entfernt; stattdessen cProfile verwenden.

Bibliothek

  • Beim Laden einer externen Datei mit testfile() wurde das übergebene Kodierungsargument ignoriert, wenn __loader__ definiert war und die Quelle auf UTF-8 erzwungen wurde.
  • Die Methoden os.tmpnam(), os.tempnam() und os.tmpfile() wurden zugunsten des tempfile-Moduls entfernt.
  • Das 'new'-Modul wurde entfernt.
  • Alle Typen aus dem 'types'-Modul entfernt, die leicht über Builtins zugänglich sind.

Was ist neu in Python 3.0a1?

Erscheinungsdatum: 31.08.2007

Core und Builtins

  • PEP 3131: Unterstützung für Nicht-ASCII-Bezeichner.

  • PEP 3120: Standardkodierung auf UTF-8 geändert.

  • PEP 3123: Korrekte C-Vererbung für PyObject verwendet.

  • Die speziellen Methoden __oct__ und __hex__ wurden entfernt und eine eingebaute Funktion bin() hinzugefügt.

  • PEP 3127: Oktale Literale beginnen nun mit "0o". Oktale Literale im alten Stil sind ungültig. Es gibt binäre Literale mit dem Präfix "0b". Dies betrifft auch int(x, 0).

  • None, True, False sind nun Schlüsselwörter.

  • PEP 3119: isinstance() und issubclass() können überschrieben werden.

  • BaseException.message entfernt.

  • Entfernt Tupel-Parameter-Entpackung (PEP 3113).

  • Das Attribut f_restricted aus Frames entfernt. Dies führt natürlich zur Entfernung von PyEval_GetRestricted() und PyFrame_IsRestricted().

  • PEP 3132 wurde akzeptiert. Das bedeutet, dass Siea, *b = range(5)verwenden können, um 0 an a und [1, 2, 3, 4] an b zuzuweisen.

  • range() gibt nun einen Iterator anstelle einer Liste zurück. Floats sind nicht erlaubt. xrange() ist nicht mehr definiert.

  • Patch #1660500: Iterationsvariable in Listen-Comprehensions versteckt, Set-Comprehensions hinzugefügt und gemeinsamen Code verwendet, um die Kompilierung iterativer Ausdrücke zu handhaben.

  • Standardmäßig gibt != das Gegenteil von == zurück, es sei denn, letzteres gibt NotImplemented zurück.

  • Patch #1680961: sys.exitfunc wurde entfernt und durch eine private C-Level-API ersetzt.

  • PEP 3115: neue Metaklassen: Die Metaklasse wird nun als Schlüsselwortargument in der Klassendefinition angegeben, die nun die volle Syntax einer Parameterliste verwenden kann. Außerdem kann die Metaklasse eine __prepare__-Funktion implementieren, die aufgerufen wird, um das Wörterbuch für den Namensraum der neuen Klasse zu erstellen.

  • Das langjährig veraltete Argument "pend" von PyFloat_FromString() wurde entfernt.

  • Die dir()-Funktion wurde erweitert, um die __dir__()-Methode ihres Arguments aufzurufen, falls vorhanden. Andernfalls funktioniert sie wie bisher. Dies ermöglicht die Anpassung der Ausgabe von dir() im Falle von __getattr__().

  • Unterstützung für __members__ und __methods__ entfernt.

  • Indizierung/Slicing auf BaseException entfernt.

  • input() wurde zu raw_input(): Der Name input() implementiert nun die bisher als raw_input() bekannte Funktionalität; der Name raw_input() ist nicht mehr definiert.

  • Klassen, die in einer 'except'-Klausel aufgeführt sind, müssen von BaseException erben.

  • PEP 3106: dict.iterkeys(), .iteritems(), .itervalues() sind nun weg; und .keys(), .items(), .values() geben dict views zurück, die sich wie Sets verhalten.

  • PEP 3105: print ist nun eine Funktion. Außerdem (nicht in PEP) ist das 'softspace'-Attribut von Dateien weg (da print() es nicht verwendet). Eine Nebenwirkung dieser Änderung ist, dass in interaktiven Sitzungen unvollständige Ausgabefehlschriften auftreten können

    >>> print(42, end="")
    42>>>
    

    Möglicherweise können wir dies nach der Neufassung der I/O-Bibliothek beheben.

  • PEP 3102: Nur-Schlüsselwort-Argumente.

  • Int/Long-Vereinigung abgeschlossen. Der eingebaute Typ 'long' und Literale mit angehängtem 'L' oder 'l' wurden entfernt. Die Leistung ist möglicherweise suboptimal (noch nicht wirklich gemessen).

  • 'except E, V' muss nun als 'except E as V' geschrieben werden und löscht V am Ende der except-Klausel; V muss ein einfacher Name sein.

  • Funktionsannotationen gemäß PEP 3107 hinzugefügt.

  • Nonlocal-Deklaration aus PEP 3104 hinzugefügt

    >>> def f(x):
    ...     def inc():
    ...         nonlocal x
    ...         x += 1
    ...         return x
    ...     return inc
    ...
    >>> inc = f(0)
    >>> inc()
    1
    >>> inc()
    2
    
  • intern() wurde nach sys.intern() verschoben.

  • exec ist nun eine Funktion.

  • nb_nonzero wurde in nb_bool und __nonzero__ in __bool__ umbenannt.

  • Klassische Klassen gehören der Vergangenheit an. Alle Klassen sind neue Stile.

  • Ausnahmen *müssen* von BaseException abgeleitet sein.

  • Ganzzahlige Division gibt immer einen Float zurück. Die -Q-Option gibt es nicht mehr. Alle folgenden sind weg

    • PyNumber_Divide und PyNumber_InPlaceDivide
    • __div__, __rdiv__ und __idiv__
    • nb_divide, nb_inplace_divide
    • operator.div, operator.idiv, operator.__div__, operator.__idiv__ (Nur __truediv__ und __floordiv__ bleiben übrig, unsicher, wie damit umzugehen ist, wenn wir __div__ und Freunde wiederverwenden wollen. Wenn ja, wird es schwieriger, Code für beide Versionen (2.x und 3.x) zu schreiben.)
  • 'as' und 'with' sind Schlüsselwörter.

  • Absoluter Import ist das Standardverhalten für 'import foo' usw.

  • Unterstützung für die Syntax: Backticks (d. h. x), <> entfernt.

  • Diese Python-Builtins wurden entfernt: apply(), callable(), coerce(), execfile(), file(), reduce(), reload().

  • Diese Python-Methoden wurden entfernt: {}.has_key.

  • Diese Opcodes wurden entfernt: BINARY_DIVIDE, INPLACE_DIVIDE, UNARY_CONVERT.

  • C-API-Unterstützung für eingeschränkte Ausführung entfernt.

  • zip(), map() und filter() geben nun Iteratoren zurück, die sich wie ihre Gegenstücke in itertools verhalten. Dies wirkt sich auch auf das Verhalten von map() bei Sequenzen unterschiedlicher Länge aus - es stoppt nun, nachdem die kürzeste erschöpft ist.

  • Neuerungen: Set-Literale, Set-Comprehensions, Ellipsis-Literal.

  • Klassendekoratoren gemäß PEP 3129 hinzugefügt.

Erweiterungsmodule

  • Das Modul imageop wurde entfernt. Veraltet zusammen mit seinen Unit-Tests, die aufgrund der Entfernung von rgbimg und imgfile nutzlos wurden.
  • Diese Attribute aus dem Operator-Modul wurden entfernt: div, idiv, __div__, __idiv__, isCallable, sequenceIncludes.
  • Diese Attribute aus dem sys-Modul wurden entfernt: exc_clear(), exc_type, exc_value, exc_traceback.

Bibliothek

  • Das Compiler-Paket wurde entfernt. Verwendung des _ast-Moduls und eines (eventuellen) AST-zu-Bytecode-Mechanismus.
  • Diese Module wurden entfernt: audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha, stringold, strop, sunaudiodev, timing, xmllib.
  • Das Modul toaiff wurde nach Tools/Demos verschoben.
  • Veraltete IRIX-Module wurden entfernt: al/AL, cd/CD, cddb, cdplayer, cl/CL, DEVICE, ERRNO, FILE, fl/FL, flp, fm, GET, gl/GL, GLWS, IN, imgfile, IOCTL, jpeg, panel, panelparser, readcd, sgi, sv/SV, torgb, WAIT.
  • Veraltete Funktionen wurden entfernt: commands.getstatus(), os.popen*().
  • Funktionen im string-Modul entfernt, die auch String-Methoden sind; string.{letters, lowercase, uppercase} entfernt.
  • Unterstützung für lange veraltete Plattformen entfernt: plat-aix3, plat-irix5.
  • xmlrpclib.SlowParser wurde entfernt. Es basierte auf xmllib.
  • Patch #1680961: atexit wurde in C neu implementiert.
  • Neue Codecs für UTF-32, UTF-32-LE und UTF-32-BE hinzugefügt.

Build

C API

  • Diese Python-Slots wurden entfernt: __coerce__, __div__, __idiv__, __rdiv__.
  • Diese C-APIs wurden entfernt: PyNumber_Coerce(), PyNumber_CoerceEx(), PyMember_Get, PyMember_Set.
  • Diese C-Slots/Felder wurden entfernt: nb_divide, nb_inplace_divide.
  • Diese Makros wurden entfernt: staticforward, statichere, PyArg_GetInt, PyArg_NoArgs, _PyObject_Del.
  • Diese Typedefs wurden entfernt: intargfunc, intintargfunc, intobjargproc, intintobjargproc, getreadbufferproc, getwritebufferproc, getsegcountproc, getcharbufferproc, memberlist.

Tests

  • test.testall wurde entfernt, da test.regrtest es ersetzt.

Dokumentation

Mac

  • Das Modul cfmfile wurde entfernt.

Plattformen

  • Unterstützung für BeOS und AtheOS wurde entfernt (gemäß PEP 11).
  • Unterstützung für RiscOS, Irix, Tru64 wurde entfernt (angeblich).

Tools/Demos

(Informationen zu älteren Versionen finden Sie in der HISTORY-Datei.)