【八卦】ghpython为什么一直用IronPython2.7
近日我发布的python系列05集,提到ghpython中不能直接使用list.copy()函数,原因是ghpython用的是IronPython2.7版本,大家会问为什么不用IronPython3.4?
在python系列01集中,我提到了IronPython 的由来,它是可以在 .NET Framework 上运行的 Python,IronPython 在首次开发时,Python 2.x 是 Python 的主导版本,Python 3 尚未得到广泛采用,因此开发团队一直专注于python2.x的升级迭代。
IronPython2.7在2010年底就已发布,2011年逐渐成熟稳定。同年,ghpython第一次出现在grasshopper当中,那时还是rhino4时代。他们都运行在.Net FramWork平台上,当时的版本是4.0。
2012 年 8 月NET Framework 4.5 发布,它包含对 .NET 运行时和类库的多项更改,这些更改不向后兼容以前版本的 .NET Framework。由此,专为 .NET Framework 4.0 构建的 IronPython 2.7 与 .NET Framework 4.5 不兼容。 IronPython 需要进行重大更改才能与新版本的 .NET Framework4.5 一起使用,而当时 IronPython 项目没有资源来承担这项工作。
同一年,rhino4历经5年也发布了rhino5,不可能赶上同年发布的.Net 4.5列车,而是在6年后的2018年,rhino6才运行在.Net4.5之上。
可以在.NET4.5上运行的是IronPython3,其早在2009年前后就已发布。但由于移植它到更新的平台来支持python3非常复杂,同时开发团队资源有限,其开发进展很缓慢,直到2017年才发布了一个重要的版本IronPython3.4.。所以此时rhino,grasshopper,IronPython3.4都可以运行在.NET 4.5,具备了让ghpython使用IronPython3.4的条件,但至今为什么还没能实现?
再说ghpython,其开发时,如上所述,它仅支持IronPython2.7,这是因为更新到IronPython3.4需要对插件进行重大更改,可能会破坏与使用IronPython2.7编写的现有脚本的兼容性,此外,rhino和gh使用的许多第三方库尚未更新支持IronPython3.4,这也可能导致兼容性问题。
以上,ghpython至今一直使用IronPython2.7。
注:以上主要内容是来自chatGPT,经作者整理所得。