PyPy项目寻求赞助以增加对Apple Silicon的支持

2021-01-01 08:06:24

寻找赞助商苹果现在提供了Mac,这些Mac运行在具有最新版本的MacOS Big Sur M1的arm64变体计算机上。我们正在要求PyPy支持这种新架构。这是我们在该主题(或至少是Armin Rigo的主题)上的立场,以及如何提供帮助。

移植PyPy不仅比重新运行编译器还难,因为PyPy包含一些与体系结构有关的大细节,例如JIT编译器和外部函数接口(CFFI和ctypes)。

修复JIT编译器应该不会做太多工作:我们已经支持arm64,仅支持Linux。但是苹果公​​司将各种细节做了不同(例如召集惯例)。同样,由于调用约定,还需要修复其他一些部分,尤其是CFFI和ctypes。

解决该问题将是一项合理的工作。我会自己花一点钱去做。但是,故事还没有到此结束。显然,故事的开始将是通过SSH访问Big Sur M1机器。 (如果此时您正在考虑并确定,我可以给您ssh访问权限三个月,然后请继续阅读。)故事的下一部分是我们需要长期可用的计算机。它既可以是由第三方提供和维护的机器,也可以是足够大的钱来支持对机器的购置和我们其中一个人的日常工作。

如果我们使用提供的机器解决方案:我们需要的资源不是很多。我们的CI可能需要10 GB的磁盘空间,并需要几个小时的CPU运行时间。它应该适合8 GB的RAM。我们通常每天晚上进行一次跑步,但是如果有帮助的话,我们当然可以降低频率。但是,我们非常希望您可以在未来3-5年内对机器的维护投入一定的保证(我想,请参阅下文)。我们有太多的机器在几个月后消失了。

如果我们采用资金支持的解决方案:3-5年后,整个Mac基础可能会切换到arm64,我们将放弃对Mac的x86-64支持,并且将回到过去的情况,那里只需要一种Mac机器。同时,我们正在研究3-5年的轻量级额外维护。我们有一个人说他会这样做,但不是免费的。

如果出现这两种解决方案中的任何一种,我都会引用distutils类型的东西中可能会有一些更改以使python满意,然后进行一些打包/部署更改以支持&#34 ; universal2"架构,即将两个版本都包含在一个可执行文件中(这不仅是向clang的额外切换,因为两个版本需要不同的JIT后端,因此必须分别翻译)。

因此,现在所有因素都摆在桌面上。我们不会做的只是JIT编译器的最小修复程序。如果我们没有更远的计划。我们要么有足够的资金,也许还有支持,然后我们就可以迅速做到。或PyPy在接下来的3-5年内将不再在M1硬件上本地可用。我们期待支持M1,并将社区贡献的资源视为对确保PyPy在此硬件上的未来充满信心的投票。与我们联系:[email protected],或我们的私人邮件列表[email protected]

寻找赞助商苹果现在提供了Mac,这些Mac运行在具有最新版本的MacOS Big Sur M1的arm64变体计算机上。我们正在要求PyPy支持这种新架构。这是我们在该主题(或至少是Armin Rigo的主题)上的立场,以及如何提供帮助。

移植PyPy不仅比重新运行编译器还难,因为PyPy包含一些与体系结构有关的大细节,例如JIT编译器和外部函数接口(CFFI和ctypes)。

修复JIT编译器应该不会做太多工作:我们已经支持arm64,仅支持Linux。但是苹果公​​司将各种细节做了不同(例如召集惯例)。同样,由于调用约定,还需要修复其他一些部分,尤其是CFFI和ctypes。

解决该问题将是一项合理的工作。我会自己花一点钱去做。但是,故事还没有到此结束。显然,故事的开始将是通过SSH访问Big Sur M1机器。 (如果此时您正在考虑并确定,我可以给您ssh访问权限三个月,然后请继续阅读。)故事的下一部分是我们需要长期可用的计算机。它既可以是由第三方提供和维护的机器,也可以是足够大的钱来支持对机器的购置和我们其中一个人的日常工作。

如果我们使用提供的机器解决方案:我们需要的资源不是很多。我们的CI可能需要10 GB的磁盘空间,并需要几个小时的CPU运行时间。它应该适合8 GB的RAM。我们通常每天晚上进行一次跑步,但是如果有帮助的话,我们当然可以降低频率。但是,我们非常希望您可以在未来3-5年内对机器的维护投入一定的保证(我想,请参阅下文)。我们有太多的机器在几个月后消失了。

如果我们采用资金支持的解决方案:3-5年后,整个Mac基础可能会切换到arm64,我们将放弃对Mac的x86-64支持,并且将回到过去的情况,那里只需要一种Mac机器。同时,我们正在研究3-5年的轻量级额外维护。我们有一个人说他会这样做,但不是免费的。

如果出现这两种解决方案中的任何一种,我都会引用distutils类型的东西中可能会有一些更改以使python满意,然后进行一些打包/部署更改以支持&#34 ; universal2"架构,即将两个版本都包含在一个可执行文件中(这不仅是向clang的额外切换,因为两个版本需要不同的JIT后端,因此必须分别翻译)。

因此,现在所有因素都摆在桌面上。我们不会做的只是JIT编译器的最小修复程序。如果我们没有更远的计划。我们要么有足够的资金,也许还有支持,然后我们就可以迅速做到。或PyPy在接下来的3-5年内将不再在M1硬件上本地可用。我们期待支持M1,并将社区贡献的资源视为对确保PyPy在此硬件上的未来充满信心的投票。与我们联系:[email protected],或我们的私人邮件列表[email protected]

发表者Armin Rigo