路线图v2#
重要
我们在寻找 sponsors and supporters for urllib3 v2.0 on Open Collective 。我们的小团队有很多工作要做,我们希望确保开发可以按时完成,同时也要公平地补偿贡献者在大型版本中所需的额外工作,比如 v2.0
。
中提供的其他信息 赞助商和支持者 我们文档的一部分。
🚀 功能API兼容性#
我们在维持 99%功能API兼容性 使迁移成为大多数用户的一个简单选择。从v1.x迁移到v2.x应该是您完成的最简单的主要版本升级。
大多数更改都是对默认配置、支持的Python版本和内部实现细节的更改。所以除非你在一个特定的情况下,你应该注意到没有变化!🎉
v1.26.x安全和错误修复#
感谢来自 Tidelift 我们可以继续支持v1.26.x版本,同时提供安全性和bug修复,以备将来使用💖
如果您的组织依赖于urllib3并希望继续提供支持,您可以了解有关 Tidelift Subscription for Enterprise .
🔐 默认的现代安全#
HTTPS需要TLS 1.2+#
超过95%的网站支持TLS1.2或更高版本。现在,我们可以轻松地将默认的最低TLS版本切换为1.2,以确保在不中断服务的情况下为用户提供高安全性。
默认情况下删除TLS 1.0和1.1意味着,如果将来发现TLS 1.0或1.1中的漏洞,您将不会容易受到TLS降级攻击。免费提供额外的安全保障!通过删除tls1.0和tls1.1,我们还收紧了我们需要支持的密码列表,以确保在网络上传输的数据具有高安全性。
如果您仍然需要在应用程序中使用tls1.0或1.1,您仍然可以升级到v2.0,您只需要设置 ssl_version
以继续使用旧版TLS版本。
停止验证证书中的CommonName#
正在删除长期不推荐的支持 commonName
证书上只支持验证的字段 subjectAltName
使我们与浏览器和其他HTTP客户端库保持一致,并提高用户的安全性。
通过SSLContext验证证书#
默认情况下,证书验证由urllib3处理以支持旧版Python版本,但是现在我们可以依赖Python的证书验证了!这将加快验证证书的速度,并意味着在Python或OpenSSL中对证书验证所做的任何改进都将立即可用。
✨ 针对Python3.6优化+#
在v2.0中,我们将特别针对cpython3.6+和pypy7.0+(与cpython3.6兼容)并放弃对Python版本2.7和3.5的支持。
通过删除过期的Python版本,我们可以通过使用新的特性来优化python3.6+的代码库,从而提高性能并减少为支持遗留版本而需要执行的代码量。
🔮 追踪#
目前,使用urllib3,很难深入了解HTTP客户端的性能以及连接信息的外观。在v2.0中,我们将向HTTP响应对象添加跟踪和遥测信息,包括:
连接ID
由DNS解析的IP地址
请求方法、目标和标头
TLS版本和密码
证书指纹、subjectAltName和有效性信息
DNS、请求数据、响应的第一个字节的计时
📜 Type-Hinted APIs#
最后,您将能够使用urllib3对代码运行Mypy或其他类型检查程序。这也意味着对于支持类型提示的ide,您将从auto-complete获得更好的建议。别再和 **kwargs
你说什么?
我们还将添加API接口,以确保在对接口进行子分类时,只使用受支持的公共API,以确保兼容性,并将故障降至最低。
🎁 ...还有更多功能!#
顶层
urllib3.request()
API有可能替代HTTP实现
翻译指南
支持Z标准压缩
流动
multipart/form-encoded
请求数据更强大和可配置的重试逻辑
如果在urllib3v2.0中您没有看到某个特性,但是您希望在urllib3v2.0中看到这个特性,那么在提出特性建议时就存在一个开放的GitHub问题。
📅 发布和迁移计划#
我们的目标是所有人 v2.x
将在中发布的功能 mid-to-late 2021 .
以下是发布v2.0之前的发布和迁移计划:
发展
v2.x
打破改变开始了。释放
v1.26.0
的不推荐警告v2.0.0
打破改变。这将是v1.x
溪流。释放
v2.0.0-alpha1
一旦所有突破性的改变都完成了。在此阶段,我们将等待用户报告问题、错误和意外中断,以确保发布v2.0.0
进展顺利。剩余开发
v2.x
功能开始。释放
v2.0.0
与v2.0.0-alpha1
.释放
v2.1.0
有剩余的v2.x
特征。
内的弃用警告 v1.26.x
默认情况下会选择加入。
更详细的应用程序迁移指南即将发布。
包维护人员#
由于这是近9年来的第一个主要版本,一些用户可能会对新的urllib3主要版本感到措手不及。我们试图通过 v2.x
API兼容 v1.x
.
如果您的应用程序或库使用urllib3,并且您希望特别小心不要破坏您的用户,您可以这样固定urllib3,直到您确保与 v2.x
:
# 'install_requires' or 'requirements.txt'
"urllib3>=1.25,<2"
我们非常感谢测试兼容性并提供反馈 v2.0.0-alpha1
一旦释放。