Python 通過(guò)從標(biāo)準(zhǔn)庫(kù)中刪除“dead batteries”提案
由 Python 貢獻(xiàn)者 Christian Heimes 和 Brett Cannon 提出的一項(xiàng),從 Python 標(biāo)準(zhǔn)庫(kù)中刪除過(guò)時(shí)的和未維護(hù)的模塊的 Python Enhancement Proposal (PEP) 594 已被批準(zhǔn)通過(guò)。該提案最初于 2019 年提交,但直到近日才(3 月 11 日)被批準(zhǔn)用于 Python 3.11。有了這個(gè) PEP,Python 3.11 會(huì)將某些模塊標(biāo)記為已棄用,Python 3.12 將是最后一個(gè)版本包括這些模塊。在 Python 3.13 中,不推薦使用的模塊將被完全刪除。
此 PEP 提出了一個(gè)要從標(biāo)準(zhǔn)庫(kù)中刪除的標(biāo)準(zhǔn)庫(kù)模塊清單。這些模塊大多是歷史數(shù)據(jù)格式(例如 Commodore 和 SUN 文件格式)、API 和早已被取代的操作系統(tǒng)(例如 Mac OS 9),或者具有安全隱患和更好替代方案(例如密碼和登錄)的模塊。
一直以來(lái),Python 都有著“batteries included”的理念;其目標(biāo)是提供一個(gè)通用的標(biāo)準(zhǔn)庫(kù)來(lái)處理許多常見的開發(fā)任務(wù),用戶不必為了編寫簡(jiǎn)單的 Web 服務(wù)器或解析電子郵件而弄清楚如何下載和安裝單獨(dú)的包。
但隨著時(shí)代的變遷,PyPI(née Cheeseshop)、setuptools 和 pip 的引入,下載和安裝包變得簡(jiǎn)單直接。Python 如今也擁有了豐富而充滿活力的第三方包生態(tài)系統(tǒng)。另一方面,Python 的標(biāo)準(zhǔn)庫(kù)堆滿了雜亂無(wú)章的、不必要的功能重復(fù)和可有可無(wú)的特性?;诖?,官方認(rèn)為:
任何額外的模塊都會(huì)增加 Python 核心開發(fā)團(tuán)隊(duì)的維護(hù)成本。團(tuán)隊(duì)資源有限,減少的維護(hù)成本可以騰出開發(fā)時(shí)間用于其他改進(jìn)。
標(biāo)準(zhǔn)庫(kù)中的模塊通常受到青睞,并被視為問(wèn)題的實(shí)際解決方案。大多數(shù)用戶只有在有令人信服的理由時(shí)才會(huì)選擇第三方模塊來(lái)替換 stdlib 模塊,例如, 用lxml替代xml。刪除未維護(hù)的 stdlib 模塊增加了社區(qū)貢獻(xiàn)的模塊被廣泛使用的機(jī)會(huì)。
一個(gè)精簡(jiǎn)的標(biāo)準(zhǔn)庫(kù)有利于資源有限的平臺(tái),例如只有幾百 KB 存儲(chǔ)空間的設(shè)備(如 BBC Micro:bit)。BeeWare 或 WebAssembly(如 pyodide)等移動(dòng)平臺(tái)上的 Python 也因下載量減少而受益。
此 PEP 中被棄用的模塊要么是因?yàn)樗鼈兊囊瞥亲顩]有爭(zhēng)議的,要么是最有益的。例如,爭(zhēng)議最小的有 30 年前的多媒體格式,如 sunau 音頻格式,在 80 年代末期被用于 SPARC 和 NeXT 工作站。crypt模塊具有根本缺陷,可以在標(biāo)準(zhǔn)庫(kù)之外更好地解決。
此外,該 PEP 也指定了一些模塊為未計(jì)劃刪除的模塊。有些模塊已經(jīng)被廢棄了幾個(gè)版本,或者乍一看沒有必要。然而,將這些模塊保留在標(biāo)準(zhǔn)庫(kù)中是有好處的,這主要是針對(duì)那些不能從 PyPI 安裝軟件包的環(huán)境;包括 ftplib、optparse、 getopt 以及 wave 模塊。
CPython 核心開發(fā)人員 Gregory P. Smith 在批準(zhǔn) PEP 的討論線程中表示,PEP-594 從 Python 標(biāo)準(zhǔn)庫(kù)中刪除了一組沒有爭(zhēng)議的、非常老的、沒有維護(hù)的或過(guò)時(shí)的庫(kù)。Python 指導(dǎo)委員會(huì)希望這個(gè) PEP 是個(gè)一次性事件,而未來(lái)的廢棄將以不同的方式處理。
“解決圍繞我們?nèi)绾伍L(zhǎng)期定義 stdlib 的持續(xù)討論并不妨礙這個(gè) PEP。對(duì)我們來(lái)說(shuō),每隔幾個(gè)版本就對(duì) stdlib 的內(nèi)容進(jìn)行一次定期審查似乎是值得的,這樣我們就可以避免積累這么多的 dead batteries,但這超出了這個(gè)特定 PEP 的范圍?!?/p>
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Python 通過(guò)從標(biāo)準(zhǔn)庫(kù)中刪除“dead batteries”提案
本文地址:https://www.oschina.net/news/186855/python-removes-dead-batteries-from-stdlib