【八卦】ghpython為什么一直用IronPython2.7
近日我發(fā)布的python系列05集,提到ghpython中不能直接使用list.copy()函數(shù),原因是ghpython用的是IronPython2.7版本,大家會問為什么不用IronPython3.4?
在python系列01集中,我提到了IronPython 的由來,它是可以在 .NET Framework 上運行的 Python,IronPython 在首次開發(fā)時,Python 2.x 是 Python 的主導(dǎo)版本,Python 3 尚未得到廣泛采用,因此開發(fā)團(tuán)隊一直專注于python2.x的升級迭代。
IronPython2.7在2010年底就已發(fā)布,2011年逐漸成熟穩(wěn)定。同年,ghpython第一次出現(xiàn)在grasshopper當(dāng)中,那時還是rhino4時代。他們都運行在.Net FramWork平臺上,當(dāng)時的版本是4.0。
2012 年 8 月NET Framework 4.5 發(fā)布,它包含對 .NET 運行時和類庫的多項更改,這些更改不向后兼容以前版本的 .NET Framework。由此,專為 .NET Framework 4.0 構(gòu)建的 IronPython 2.7 與 .NET Framework 4.5 不兼容。 IronPython 需要進(jìn)行重大更改才能與新版本的 .NET Framework4.5 一起使用,而當(dāng)時 IronPython 項目沒有資源來承擔(dān)這項工作。
同一年,rhino4歷經(jīng)5年也發(fā)布了rhino5,不可能趕上同年發(fā)布的.Net 4.5列車,而是在6年后的2018年,rhino6才運行在.Net4.5之上。
可以在.NET4.5上運行的是IronPython3,其早在2009年前后就已發(fā)布。但由于移植它到更新的平臺來支持python3非常復(fù)雜,同時開發(fā)團(tuán)隊資源有限,其開發(fā)進(jìn)展很緩慢,直到2017年才發(fā)布了一個重要的版本IronPython3.4.。所以此時rhino,grasshopper,IronPython3.4都可以運行在.NET 4.5,具備了讓ghpython使用IronPython3.4的條件,但至今為什么還沒能實現(xiàn)?
再說ghpython,其開發(fā)時,如上所述,它僅支持IronPython2.7,這是因為更新到IronPython3.4需要對插件進(jìn)行重大更改,可能會破壞與使用IronPython2.7編寫的現(xiàn)有腳本的兼容性,此外,rhino和gh使用的許多第三方庫尚未更新支持IronPython3.4,這也可能導(dǎo)致兼容性問題。
以上,ghpython至今一直使用IronPython2.7。
注:以上主要內(nèi)容是來自chatGPT,經(jīng)作者整理所得。