小破站搜索云前端,查看視頻版
2024 年 7 月 7 日,據一位長期的Python觀察者爆料,Fedora 41 系統最終將停止支持 Python 2.7。這是Python 2系列的最后一個版本,Python 2.7在Fedora Linux 41中將被退役且不再替代。除了PyPy之外,Fedora 41及以后的版本將不再包含Python 2,對于依賴于python2.7的包,在運行時或構建時需要處理這個退役問題,否則它們也將被退役。GIMP 3 也將在Fedora 41中推出,以去除任何剩余的Python 2依賴。
Vue
有趣的是,對比于前端開發領域流行的開發工具 vue.js,其版本 2 向版本 3 的演進也拖延了很久的時間。并且巧合的是,同樣是 2.7 的版本,也是vue 2.x中最后一個穩定版本。不同的是vue3之于vue2采用了高度兼容的升級方式,而非python3那樣斷崖式的不兼容升級。
Vue 2 達到生命周期終點的時間是 2023 年 12 月 31 日,之后 Vue 2 將不再接收新功能、更新或修復,但仍然可以在現有的分發渠道中獲取。雖然應用程序將繼續運行,但包管理器會發出警告,提醒 Vue 2 已經不再是支持的版本。
我們之前曾制作過一期視頻(小破站搜 BV1BP4y1t7Xz),揭秘了 Vue 版本系列中那些有趣的版本命名方式,一些重要版本大多以動漫、科幻電影等命名。在 2.x 最后一個大版本,也是專注于幫助開發者從 v2 遷移到 v3 的 vue2.7 中,Vue 2.7.0 仍遵循以上傳統以 "Naruto(火影忍者)" 為代號,而 2023 年平安夜發布的 v2.7.16 的代號則是 Swan Song (絕唱),明確了 v2.x 從此達到 End Of Life(EOL)狀態的含義。對于無法立即遷移到 Vue 3 的用戶,Vue 官方也與第三方合作提供了 Never-Ending Support -- 即使在 EOL 之后也能繼續獲得 Vue 2 的更新和安全補丁。
Python
回到 Python 2 的告別,其生命周期原本預計在2015年結束,但后來延長到了2020年。Python維護者宣布,由于RHEL 7的維護結束和RHEL 8中Python 2.7應用的退役,他們將不再定期為Python 2.7回傳安全修復到RHEL。盡管如此,這個過時的包在超出其退役日期五年后仍被提供,并將持續提供直到Fedora 40的生命周期結束。除了少數最后的修復工作外,將不再進行更新和維護,這意味著“Python 2將不再接受新的bug報告、修復或更改,且不再受支持”。
關于Python 2到Python 3的遷移,盡管Python 3在過去幾年里已成為主流版本,但許多公司仍未完成過渡,仍然使用Python 2。他們普遍認為,Python 2到Python 3的遷移并不容易。特別是對于擁有龐大代碼庫、復雜邏輯和繁重決策過程的公司,代碼兼容性問題、生態系統的碎片化、venv虛擬環境增加了復雜度等,都帶來了新舊并存的困擾。在某些場景下,開發者可能需要同時維護Python 2和Python 3的代碼,這不僅增加了維護成本,也使得代碼管理和版本控制變得更加復雜。
然而不遷移到 Python 3 也要承受各種風險。其一是安全性 -- 隨著 Python 2 官方 EOL,將不再有安全更新,這可能導致安全漏洞無人修復,使運行Python 2的系統處于嚴重風險之中。此外,Python 2 的退役也可能影響吸引新人才和經驗豐富的開發人員,因為 Python 在開發者中越來越受歡迎,他們當然傾向于學習新的Python 3版本,而非退休的、不受支持的 Python 2。
盡管如此,Python 3的改進和新特性,如 Unicode 支持、更清晰的語法、性能提升以及對現代編程實踐的更好支持、更好的常見習語和模式表達、并發性、故障處理、測試和調試的改進,以及計算速度的大幅提高和其它優化,最終還是證明升級是值得的。隨著時間的推移,Python 3完全取代Python 2也只是早晚問題,你可以使用"from future import"等語法編寫Python 3友好的代碼,一些工具庫如Six庫提供了用于平滑Python 2和3之間差異的實用函數也為升級提供了便利。
Python 3逐漸成為主流,大部分庫和框架都完成了遷移,開發者也逐漸適應了新版本。現在,Python 3的廣泛采用和Python 2的退役,標志著Python社區向前邁進了一大步。
Spring Boot
其實版本 2.7 的升級魔咒還不止讓 Python 和 Vue 碰到過,比如國內但凡提起微服務架構,可能十個程序員里有九個會立馬想起 Spring Boot 來。這個 Java 框架的設計目標是簡化 Spring 應用的初始搭建以及開發過程。Spring Boot 提供了約定優于配置(Convention over Configuration)的機制,讓開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot 幾乎成為了企業級應用開發的標配。
于 2022 年 11 月正式發布的 Spring Boot 3.0 帶來了多項重要的更新和改進,包括對Java 17的強制支持、Spring Framework 6的集成、模塊化增強、Web框架更新以及數據庫訪問技術的革新。這些變化促使開發者考慮將現有項目升級,以充分利用新版本帶來的優勢。在開發者社區中,3.0 的升級當然也引起了廣泛關注和期待。不過,升級過程也面臨挑戰,一些開發者出于開發習慣,或是遺留項目的維護難度、公司組織規定等,表示 JDK8 或 JDK11 不能動就是不能動。
總結
相比之下,Vue.js 和 Spring Boot 從 2.x 到 3.x 的升級,雖然也涉及到一些重大的改變和新特性,但它們的升級路徑通常提供了較為明確的遷移指南,且社區和框架本身提供了較多的支持工具,如遷移助手和詳細的文檔,來幫助開發者平滑過渡。Vue 和 Spring Boot 的升級更多的是對現有特性的增強和對新技術棧的采納,如 Vue 3 中對 Composition API 的支持,Spring Boot 3 對 Java 17 和 Jakarta EE 的支持,這些升級雖然也需要開發者投入時間和精力進行代碼遷移,但總體上爭議和阻力小于 Python 2 到 3 的升級。
總之,太陽底下無新事,前端、后端、語言、框架,寰球共此涼熱,除了版本上的巧合因素,大致也有一些規律蘊含其中。1.x 版本青澀爛漫肆意揮灑,2.x 版本成熟穩定滿身負擔,3.x 版本百尺竿頭更進一步;你在遷移代碼,卻逐漸看清了自己。