1. 程式人生 > >開發者請注意:Python2 的最後版本將於 4 月釋出,但它確實是在 1 月 1 日就壽命終止了!

開發者請注意:Python2 的最後版本將於 4 月釋出,但它確實是在 1 月 1 日就壽命終止了!

2020 年 1 月 1 日是 Python2 的壽命終止日,這個日期在兩年前經"Python之父" Guido van Rossum 宣佈,此後一直成為開發者社群翹首以盼的一天。

昨天就是這個大快人心的日子,各種變了花樣的喜慶報道不絕於目。調侃的玩笑也不少,比如這個:

還有這個(別信!):

然而,我今天偶然看到一位大佬的疑問,大意如下:官網釋出的 Python2 退休日期說是 4 月,那個倒計時網站是不是冒充的官方訊息?

他所說的官網訊息是這篇——

怎麼回事呢?傳了那麼久的元旦退休訊息,竟然會不準確?那麼多人在熱熱鬧鬧地慶祝著,竟然是在慶祝一個假訊息麼?

我搜索那篇文章,仔細讀了一遍,然後才注意到釋出日期是 2019 年 12 月 20 日,也就是兩週前。文中沒有提到 1 月 1 日,也沒提 4 月的具體日子。

文章屬實,但日期明顯矛盾,這是怎麼回事呢?官方應該會有所解釋吧?帶著疑問,我去翻看官方和幾個核心開發者的推特。

經過一番資料查閱,我終於搞清楚了怎麼回事,也找到了所謂的"官方解釋"。

簡單說明結論:2020-01-01 是板上釘釘的 Python2 的 EOL (end of life,壽命終止)日子,但是在這個日子前的版本釋出週期還在進行,最後一個版本按計劃是在今年 4 月的 Pycon US 大會上釋出。

Python2.7 在 2019 年的最後一個版本是 10 月 19 日釋出的 2.7.17 版本,在它之後直到2020-01-01 之間產生的所有問題,開發者們是接受的,而計劃合入的版本將是 4 月 17 日的 2.7.18 版本。

以籃球比賽中的壓哨球來類比,你就明白怎麼回事了:球離手在空中飛了三分之一路程,這時終止的哨聲吹響,最後這球中袋了當然還是有效的。

進行了三分之一的 2.7.18 版本,就像離手之球,離弦之箭,潑出之水,負責任的 Python 官方還是要認可它的。

其實,這個決定並不是最近確定的,早在 2019 年 9 月,Python2 的版本經理 Benjamin Peterson 就公佈了這個計劃,這裡是當時的郵件組截圖:

有不少開發者表示了疑義:為什麼不能把 4 月的釋出計劃提前呢?如果是 4 月釋出最後版本,為什麼不說 4 月才是 EOL 呢?為什麼容許出現兩個不一致的日期?

根據我對討論內容的理解,主要有如下原因:

  • 12 月末不是一個方便的“工作”時間(因為感恩節放假!)
  • 4 月有一年一度的社群大會,屆時大家可以集體宣洩
  • Python 1 的最後版本(1.6.1)已經有此先例

有不少開發者也表示附議,認可這個安排。詳細的討論過程在:https://dwz.cn/ECmB3cZo

如果 PSF 在釋出那篇“4 月退休”的文章時,對此安排作出解釋,也許大家就不會有那麼多困惑了,更不至於懷疑自己在傳播假訊息……

看到這,你也應該理解了來龍去脈吧?不過,我相信還是有讀者有疑問:既然早就知道會有這個尾巴要處理,為什麼不能加快進度,多投精力,爭取一分不差地在 2019-12-31 釋出最後一個版本呢?

追進度、趕 deadline、加班加點,這種事情在國內網際網路領域是司空見慣了。然而,Python 核心開發者們幾乎都是志願者,花的是業餘興趣時間,他們的主業可能都不至於 996,怎麼能指望在副業上 996 呢?!不要強人所難!

最後,不管怎麼說,Python2 確實是在 2010-01-01 就 EOL 了,此後自生自滅。

它的最後一個版本會在 4 月份釋出(只包含 1 月 1 日前的問題),我們不用著急,就讓這隻球飛一會吧,等到球落袋的時候,我們再一起,舉杯相慶!

公眾號【Python貓】, 本號連載優質的系列文章,有喵星哲學貓系列、Python進階系列、好書推薦系列、技術寫作、優質英文推薦與翻譯等等,歡迎關注哦