PEP 200 – Python 2.0 Release Schedule
- Autor:
- Jeremy Hylton <jeremy at alum.mit.edu>
- Status:
- Final
- Typ:
- Informational
- Thema:
- Release
- Erstellt:
- 12. Juli 2000
- Python-Version:
- 2.0
- Post-History:
Inhaltsverzeichnis
- Einleitung
- Release Schedule
- Frühere Meilensteine
- Was ist Release Candidate 1?
- Richtlinien für das Einreichen von Patches und das Vornehmen von Änderungen
- Fehlgeschlagene Testfälle müssen behoben werden
- Offene Punkte – Müssen vor der finalen 2.0-Veröffentlichung gelöst werden
- Akzeptiert und in Bearbeitung
- Offen: vorgeschlagen, aber nicht akzeptiert oder abgelehnt
- Früher fehlgeschlagene Testfälle
- Offene Punkte – erledigt/behoben
- Akzeptiert und erledigt
- Verschoben
- Abgelehnt
Einleitung
Dieser PEP beschreibt den Release-Zeitplan für Python 2.0, verfolgt den Status und die Zuständigkeit der wichtigsten neuen Features, fasst die Diskussionen in Mailinglisten zusammen und liefert URLs für weitere Informationen, Patches und andere offene Punkte. Die CVS-Revisionshistorie dieser Datei enthält die definitive historische Aufzeichnung.
Release Schedule
[überarbeitet 5. Okt 2000]
- 26. Sep. 2000: 2.0 Beta 2
- 9. Okt. 2000: 2.0 Release Candidate 1 (2.0c1)
- 16. Okt. 2000: 2.0 Final
Frühere Meilensteine
- 14. Aug. 2000: Alle 2.0 PEPs fertiggestellt / Feature Freeze
- 5. Sep. 2000: 2.0 Beta 1
Was ist Release Candidate 1?
Wir glauben, dass Release Candidate 1 alle bekannten Fehler beheben wird, die wir für die finale 2.0-Version beheben wollen. Diese Version sollte etwas stabiler sein als die vorherigen Betas. Wir wünschen uns noch breitere Tests vor der finalen Veröffentlichung, deshalb produzieren wir diesen Release Candidate. Die finale Veröffentlichung wird exakt gleich sein, es sei denn, es werden kritische (oder „brown bag“) Fehler von Testern des Release Candidates gefunden.
Richtlinien für das Einreichen von Patches und das Vornehmen von Änderungen
Verwenden Sie gesunden Menschenverstand bei der Einreichung von Änderungen. Sie sollten wissen, was wir mit gesundem Menschenverstand meinen, sonst hätten wir Ihnen keine Commit-Berechtigungen gegeben <0,5 zwinker>. Einige spezifische Beispiele für gesunden Menschenverstand sind:
- Tun Sie, was der Diktator Ihnen sagt.
- Diskutieren Sie alle kontroversen Änderungen zuerst auf python-dev. Wenn Sie viele +1-Stimmen und keine -1-Stimmen erhalten, nehmen Sie die Änderung vor. Wenn Sie einige -1-Stimmen erhalten, denken Sie zweimal nach; erwägen Sie, Guido um seine Meinung zu fragen.
- Wenn die Änderung Code betrifft, den Sie beigesteuert haben, ist es wahrscheinlich sinnvoll, dass Sie ihn selbst beheben.
- Wenn die Änderung Code betrifft, den jemand anderes geschrieben hat, ist es wahrscheinlich sinnvoll, ihn oder sie zuerst zu fragen.
- Sie können den SF Patch Manager verwenden, um einen Patch einzureichen und ihn zur Überprüfung zuzuweisen.
Jedes signifikante neue Feature muss in einem PEP beschrieben und genehmigt werden, bevor es eingecheckt wird.
Jede signifikante Code-Ergänzung, wie ein neues Modul oder ein großer Patch, muss Testfälle für die Regressionstests und Dokumentation enthalten. Ein Patch sollte nicht eingecheckt werden, bis die Tests und die Dokumentation fertig sind.
Wenn Sie einen Fehler beheben, sollten Sie einen Testfall schreiben, der den Fehler gefunden hätte.
Wenn Sie einen Patch aus dem SF Patch Manager einchecken oder einen Fehler aus der Jitterbug-Datenbank beheben, stellen Sie sicher, dass Sie die Patch-/Fehlernummer in der CVS-Log-Nachricht angeben. Stellen Sie außerdem sicher, dass Sie den Status im Patch-Manager oder in der Fehlerdatenbank ändern (wenn Sie Zugriff auf die Fehlerdatenbank haben).
Es ist nicht akzeptabel, dass eingecheckter Code dazu führt, dass die Regressionstests fehlschlagen. Wenn ein Check-in einen Fehler verursacht, muss dieser innerhalb von 24 Stunden behoben werden, sonst wird er rückgängig gemacht.
Jeglicher beigesteuerte C-Code muss ANSI C sein. Wenn möglich, prüfen Sie ihn mit zwei verschiedenen Compilern, z. B. gcc und MSVC.
Jeglicher beigesteuerte Python-Code muss Guido’s Python Style Guide befolgen. https://pythonlang.de/doc/essays/styleguide.html
Es wird davon ausgegangen, dass jeder beigesteuerte Code unter einer Open-Source-Lizenz veröffentlicht wird. Steuern Sie keinen Code bei, der nicht auf diese Weise veröffentlicht werden kann.
Fehlgeschlagene Testfälle müssen behoben werden
Wir müssen Fehler in der Regressionstest-Suite schnell beheben. Änderungen sollten nicht in den CVS-Baum eingecheckt werden, es sei denn, die Regressionstests laufen mit den angewendeten Änderungen sauber durch. Wenn sie fehlschlagen, könnten Fehler im Code lauern. (Es können sowieso Fehler lauern, aber das ist eine andere Sache.) Wenn die Testfälle bekanntermaßen fehlschlagen, dienen sie keinem nützlichen Zweck.
test case platform date reported
--------- -------- -------------
test_mmap Win ME 03-Sep-2000 Windows 2b1p2 prelease
[04-Sep-2000 tim
reported by Audun S. Runde mailto:audun@mindspring.com
the mmap constructor fails w/
WindowsError: [Errno 6] The handle is invalid
since there are no reports of this failing on other
flavors of Windows, this looks like to be an ME bug
]
Offene Punkte – Müssen vor der finalen 2.0-Veröffentlichung gelöst werden
Entscheiden Sie, ob cycle-gc standardmäßig aktiviert sein soll.
Beheben Sie Kompatibilitätsprobleme zwischen dem XML-Core-Paket und dem XML-SIG XML-Paket.
Aktualisieren Sie Tools/compiler, damit es mit List Comprehensions, import as und anderen neuen Sprachfeatures kompatibel ist.
Verbessern Sie die Codeabdeckung der Test-Suite.
Fertigstellen der PEPs für die Features, die mit 2.0b1 herausgekommen sind (! traurig, aber realistisch – wir werden mit Übung besser).
Großer Aufwand, die Bug-Datenbank zu verkleinern. Ich (tim) habe das schon einmal gesehen: Wenn Sie alle offenen Bugs auf einen Bildschirm passen lassen können, werden die Leute das im Allgemeinen beibehalten. Aber lassen Sie es einen Monat lang über einen Bildschirm schwappen, und es geht den Bach runter (kein „sichtbarer Fortschritt“ in der Tat!).
Akzeptiert und in Bearbeitung
- Derzeit sind keine mehr übrig. [4. Sept. 2000 guido]
Offen: vorgeschlagen, aber nicht akzeptiert oder abgelehnt
- Es gibt wieder eine Reihe offener Patches. Wir müssen diese bald aussortieren.
Früher fehlgeschlagene Testfälle
Wenn Sie einen Test finden, der zwischen diesem Abschnitt und dem vorherigen springt, ist der getestete Code in Schwierigkeiten!
test case platform date reported
--------- -------- -------------
test_fork1 Linux 26-Jul-2000
[28-aug-2000 fixed by cgw; solution is to create copies of
lock in child process]
[19-Aug-2000 tim
Charles Waldman whipped up a patch to give child processes a new
"global lock":
http://sourceforge.net/patch/?func=detailpatch&patch_id=101226&group_id=5470
While this doesn't appear to address the symptoms we *saw*, it
*does* so far appear to be fixing the failing cases anyway
]
test_parser all 22-Aug-2000
test_posixpath all 22-Aug-2000
test_popen2 Win32 26-Jul-2000
[31-Aug-2000 tim
This died again, but for an entirely different reason: it uses a
dict to map file pointers to process handles, and calls a dict
access function during popen.close(). But .close releases threads,
which left the internal popen code accessing the dict without a
valid thread state. The dict implementation changed so that's no
longer accepted. Fixed by creating a temporary thread state in the
guts of popen's close routine, and grabbing the global lock with
it for the duration]
[20-Aug-2000 tim
changed the popen2.py _test function to use the "more" cmd
when os.name == "nt". This makes test_popen2 pass under
Win98SE.
HOWEVER, the Win98 "more" invents a leading newline out
of thin air, and I'm not sure that the other Windows flavors
of "more" also do that.
So, somebody please try under other Windows flavors!
]
[still fails 15-Aug-2000 for me, on Win98 - tim
test test_popen2 crashed -- exceptions.AssertionError :
The problem is that the test uses "cat", but there is
no such thing under Windows (unless you install it).
So it's the test that's broken here, not (necessarily)
the code.
]
test_winreg Win32 26-Jul-2000
[works 15-Aug-2000 for me, on Win98 - tim]
test_mmap Win32 26-Jul-2000
[believe that was fixed by Mark H.]
[works 15-Aug-2000 for me, on Win98 - tim]
test_longexp Win98+? 15-Aug-2000
[fails in release build,
passes in release build under verbose mode but doesn't
look like it should pass,
passes in debug build,
passes in debug build under verbose mode and looks like
it should pass
]
[18-Aug-2000, tim: can't reproduce, and nobody else
saw it. I believe there *is* a subtle bug in
regrtest.py when using -v, and I'll pursue that,
but can't provoke anything wrong with test_longexp
anymore; eyeballing Fred's changes didn't turn up
a suspect either
19-Aug-2000, tim: the "subtle bug" in regrtest.py -v is
actually a feature: -v masks *some* kinds of failures,
since it doesn't compare test output with the canned
output; this is what makes it say "test passed" even
in some cases where the test fails without -v
]
test_winreg2 Win32 26-Jul-2000
[20-Aug-2000 tim - the test has been removed from the project]
[19-Aug-2000 tim
This test will never work on Win98, because it's looking for
a part of registry that doesn't exist under W98.
The module (winreg.py) and this test case will be removed
before 2.0 for other reasons, though.
]
[still fails 15-Aug-2000 for me, on Win98 - tim
test test_winreg2 failed -- Writing: 'Test Failed: testHives',
expected: 'HKEY_PERFORMANCE_DATA\012'
]
Offene Punkte – erledigt/behoben
[4-Sep-2000 guido: Fredrik finished this on 1-Sep]
* PyErr_Format - Fredrik Lundh
Make this function safe from buffer overflows.
[4-Sep-2000 guido: Fred has added popen2, popen3 on 28-Sep]
Add popen2 support for Linux -- Fred Drake
[4-Sep-2000 guido: done on 1-Sep]
Deal with buffering problem with SocketServer
[04-Sep-2000 tim: done; installer runs; w9xpopen not an issue]
[01-Sep-2000 tim: make a prerelease available]
Windows ME: Don't know anything about it. Will the installer
even run? Does it need the w9xpopen hack?
[04-Sep-2000 tim: done; tested on several Windows flavors now]
[01-Sep-2000 tim: completed but untested except on Win98SE]
Windows installer: If HKLM isn't writable, back off to HKCU (so
Python can be installed on NT & 2000 without admin privileges).
[01-Sep-200 tim - as Guido said, runtime code in posixmodule.c doesn't
call this on NT/2000, so no need to avoid installing it everywhere.
Added code to the installer *to* install it, though.]
Windows installer: Install w9xpopen.exe only under Win95/98.
[23-Aug-2000 jeremy - tim reports "completed recently"]
Windows: Look for registry info in HKCU before HKLM - Mark
Hammond.
[20-Aug-2000 tim - done]
Remove winreg.py and test_winreg2.py. Paul Prescod (the author)
now wants to make a registry API more like the MS .NET API. Unclear
whether that can be done in time for 2.0, but, regardless, if we
let winreg.py out the door we'll be stuck with it forever, and not
even Paul wants it anymore.
[24-Aug-2000 tim+guido - done]
Win98 Guido: popen is hanging on Guido, and even freezing the
whole machine. Was caused by Norton Antivirus 2000 (6.10.20) on
Windows 9x. Resolution: disable virus protection.
Akzeptiert und erledigt
- Änderung der Bedeutung von x-Escapes - PEP 223 - Fredrik Lundh
- Hinzufügen von U1234678-Escapes in u””-Strings - Fredrik Lundh
- Unterstützung für Opcode-Argumente >
2**16- Charles Waldman SF Patch 100893 - „import as“ - Thomas Wouters Erweitern Sie den Mechanismus ‚import‘ und ‚from … import‘, um das Importieren eines Symbols unter einem anderen Namen zu ermöglichen. (Ohne ein neues Schlüsselwort hinzuzufügen.)
- List Comprehensions - Skip Montanaro Tim Peters muss noch die PEP schreiben.
- Wiederherstellung des alten Verhaltens von os.path.commonprefix Haben wir Testfälle, die auf allen Plattformen funktionieren?
- Tim O’Malleys Cookie-Modul mit guter Lizenz
- Lockstep-Iteration („zip“-Funktion) - Barry Warsaw
- SRE - Fredrik Lundh [zumindest glaube ich, dass es erledigt ist, Stand 15. August 2000 - tim]
- Fix: xrange-Ausgabeverhalten - Fred Drake Entfernen Sie den tp_print-Handler für den xrange-Typ; er erzeugte eine Listenanzeige anstelle von ‚xrange(…)‘. Der neue Code erzeugt einen minimalen Aufruf von xrange(), eingeschlossen in (
... * N), wenn N != 1. Dies macht das repr() besser lesbar und lässt es tun, was reprs angeblich tun. Es macht auch xrange-Objekte offensichtlich, wenn man im interaktiven Interpreter arbeitet. - Erweiterte print-Anweisung - Barry Warsaw PEP 214 SF Patch #100970 http://sourceforge.net/patch/?func=detailpatch&patch_id=100970&group_id=5470
- Schnittstelle zum poll-Systemaufruf - Andrew Kuchling SF Patch 100852
- Erweiterte Zuweisung - Thomas Wouters Fügen Sie += und Familie hinzu, plus Python- und C-Hooks und API-Funktionen.
- gettext.py-Modul - Barry Warsaw
Verschoben
- Erweiterte Slicing auf Listen - Michael Hudson Ermöglichen Sie Listen (und anderen integrierten Typen), erweiterte Slices zu verarbeiten.
- Komprimierung der Unicode-Datenbank - Fredrik Lundh SF Patch 100899 Zumindest für 2.0b1. Kann als Bugfix in 2.0 enthalten sein.
- Range-Literale - Thomas Wouters SF Patch 100902 Wir hatten am Ende viele Zweifel an dem Vorschlag.
- Entfernung des SET_LINENO-Opcodes - Vladimir Marangozov Kleine Optimierung durch die Verwendung von lnotab des Code-Objekts anstelle der SET_LINENO-Anweisung. Verwendet eine Code-Rewriting-Technik (die Guido missbilligt), um den Debugger zu unterstützen, der SET_LINENO verwendet.
http://starship.python.net/~vlad/lineno/ für (damals funktionierende) Patches
Diskussionen auf python-dev
- https://pythonlang.de/pipermail/python-dev/2000-April/subject.html Betreff: „Warum brauchen wir Traceback-Objekte?“
- https://pythonlang.de/pipermail/python-dev/1999-August/002252.html
- Test-Harness für C-Code - Trent Mick
Abgelehnt
- ‚indexing-for‘ - Thomas Wouters Spezielle Syntax, um Python-Code Zugriff auf den Schleifenzähler in ‚for‘-Schleifen zu geben. (Ohne ein neues Schlüsselwort hinzuzufügen.)
Quelle: https://github.com/python/peps/blob/main/peps/pep-0200.rst
Zuletzt geändert: 2025-02-01 08:59:27 GMT