Python潮流周刊#4:Python 2023 语言峰会
△点击上方“Python猫”关注 ,回复“1”领取电子书
你好,我是猫哥。这里记录每周值得分享的 Python 及通用技术内容,本期是特别加更版,聚焦于 Python 官方 2023 年语言峰会的系列博客。
由于公众号不支持外链,文中大量链接可通过文末「阅读原文」查看。
每年在 PyCon US 开始之前,Python 核心开发者、维护者和特邀嘉宾都会聚在一起参加 Python 语言峰会:这是一个为期一天的会谈活动,讨论 Python 的未来方向。
今年的活动刚结束一个月,PSF 在本周一发布了多篇博客,回顾了峰会上的一些演讲内容。本期周刊将这些文章进一步作了摘要,分享给大家:
1、Three Talks on the C API[1]
这是关于 C API 的三场演讲。首先,Mark Shannon 和 Guido van Rossum 提及当前 C API 对第三方扩展的支持不够,经常在升级版本时破坏它们的功能。会上的结论是收集 C API 的问题清单,再制定解决方案。
另一场演讲是关于 HPy,它是一个用于编写 Python 扩展模块的新的 API,旨在解决 CPython C API 的一些限制和问题。它的好处是编写的扩展模块可以在不同的 Python 实现中运行,例如 CPython 和 PyPy。但是,演讲者想要官方将它作为推荐方案的想法没有得到支持,一方面的原因是它还不够完善,更重要的原因则是 Guido 评论的自上而下的方法行不通。HPy 似乎是挺不错的克服 C API 问题的方案,但它要取代 C API 的地位,还为时尚早。
2、Making the Global Interpreter Lock Optional[2]
我们曾多次介绍过 nogil 项目,比如在周刊第二期就分享了一篇文章。在本次峰会上,nogil 的作者 Sam Gross 介绍了过去一年的进展,给出了 nogil 在性能上取得的令人满意的数据,还提出了更明确的路线图。大家最担心的依然是它提出编译成两个发行版、以及导致的调试困难等问题。(我们曾在 2 月份的一篇文章 中讨论过)
3、Towards Native Profiling for Python[3]
Joannah Nanjekye 的演讲介绍了 Scalene,这是一个基于采样的 Python 分析器,可以在报告中区分机器代码和 Python 代码。使用 C、C++ 或 Rust 编写的 Python 扩展会被编译为机器代码,因此很难用采样的方式分析。Scalene 解决了一些技术难题,是最受欢迎的 Python 分析工具之一。演讲者试探性提出将 Scalene 的成果集成到标准库 cProfile
中,但没有得到响应。最后,这个库还被拿来跟 Python 3.12 中引入的 perf
分析器作比对。
4、What is the stdlib for?[4]
Brett Cannon 提出的问题实际是:标准库应该扮演什么样的角色?Python 在发展初期自诩“自带电池”,包含了很多标准库,但随着第三方库越来越丰富以及 PyPI 使得安装库非常便利,很多标准库就不再有价值了。与会者的共识是:标准库应该专注于帮助用户编写更好的 Python 代码。这意味正在进行的标准库“瘦身计划”不会停,同时,未来的新标准库会更加规范引入。
5、Pattern Matching, __match__, and View Patterns[5]
模式匹配语法是 3.10 版本的重大特性,但是 Sullivan 认为它的能力相当有限,因此提出了模式匹配的后续发展方向。与会者们普遍认同要增强模式匹配语法,然而,是否要引入一个新的魔术方法 __match__,或者采用别的方案,暂无定论。文中附有很多代码示例以及关于模式匹配的参考资料,对此话题感兴趣的同学可以去了解下。
6、Python on Mobile: State of the Union[6]
Russell Keith-Magee 介绍了 BeeWare,它的目标是在 Android 和 iOS 等移动平台上轻松运行 Python。项目已得到 Anaconda 的投资支持,演讲者的诉求是希望得到 CPython 的“Tier-3”支持。会上讨论了 CI 测试套对移动平台的支持、sys.platform 在移动平台应该得到什么值、以及如何在移动平台发布 CPython 二进制文件,等等。手机上的 Python,这值得期待!
7、Burnout is Real[7]
Guido 在峰会上聊了开源倦怠、解决倦怠的策略、以及如何避免倦怠等话题。很多时候,开源贡献者都是在用爱发电,然而大型开源项目还常常有复杂的场景、琐碎的讨论、多样的人际协作、时常冲突的观点或想法等,这些都容易让人疲倦、消磨人的热情。(PS.如果你关注技术新闻的话,会看到 Rust 社区最近闹得沸沸扬扬的核心开发者内讧事件。开源社区的发展也是一大难题,庆幸的是这届峰会反映出 Python 社区是在健康发展中)
8、Lightning Talks[8]
介绍了三场简短的闪电演讲,主题有:让我们支持 LLVM-BOLT 作为官方功能、在 Python 中实现延迟导入的机制、让模块支持调用(已提出 PEP-713)。
以上就是今年峰会上讨论的重大议题,可以说都是非常有意义的话题。
有不少内容其实已经有了最新进展(毕竟活动已结束一个月),还有一些可能仍需较长时间才能尘埃落定(比如 nogil 和手机上的 Python)。
这里再补充两篇文章,有关于 Fast CPython 项目的进展:《Faster CPython at PyCon, part one[9]》、《Faster CPython at PyCon, part two[10]》,Python 3.11 已经让大家看到了非常多的性能提升,未来版本更值得期待。
赞助&支持
内容创作不易,如果你觉得有帮助,请随意赞赏[11]、买杯咖啡[12]或在爱发电[13]进行支持!如果你喜欢本周刊,请转发分享给其他需要的同学~
另诚邀赞助者,欢迎通过私信联系。
关于周刊
Python 潮流周刊,精心筛选国内外的 200+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。
订阅方式:Python猫[14] | RSS[15] | 邮件[16] | Github[17] | Telegram[18] | Twitter[19]
参考资料
Three Talks on the C API: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-three.html
[2]Making the Global Interpreter Lock Optional: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-making.html
[3]Towards Native Profiling for Python: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-towards.html
[4]What is the stdlib for?: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-what-is.html
[5]Pattern Matching, __match__, and View Patterns: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-pattern.html
[6]Python on Mobile: State of the Union: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-python.html
[7]Burnout is Real: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-burnout.html
[8]Lightning Talks: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023.html
[9]Faster CPython at PyCon, part one: https://lwn.net/Articles/930705
[10]Faster CPython at PyCon, part two: https://lwn.net/Articles/931197/
[11]赞赏: https://img.pythoncat.top/wechat_code.png
[12]买杯咖啡: https://www.buymeacoffee.com/pythoncat
[13]爱发电: https://afdian.net/a/pythoncat
[14]Python猫: https://img.pythoncat.top/python_cat.jpg
[15]RSS: https://pythoncat.top/rss.xml
[16]邮件: https://pythoncat.substack.com
[17]Github: https://github.com/chinesehuazhou/python-weekly
[18]Telegram: https://t.me/pythontrendingweekly
[19]Twitter: https://twitter.com/chinesehuazhou