Mozilla在發布開源專案Pyodide 0.17版本的同時,也宣布Pyodide現在成為一個獨立的專案。Pyodide是一個包含科學堆疊,可以將Python編譯成WebAssembly的直譯器專案,適合用於想要在網頁瀏覽器中執行Python的使用案例。

Pyodide內含一個可將CPython 3.8編譯成WebAssembly的直譯器,該直譯器可讓Python程式在瀏覽器中執行,而且Pyodide還提供許多常用的Python科學套件,供開發者立刻使用,另外,Pyodide也可以使用PyPi(Python Package Index),並包含了跨語言函式介面,透過該介面能夠將Python套件生態系,開放給Javascript和瀏覽器介面使用。

而現在Pyodide已經成為一個獨立的專案,以單獨的GitHub組織來存放,由貢獻者團隊進行維護,專案的文件則在pyodide.org提供。當初Pyodide是Mozilla的一個內部專案,是為了要在Iodide中使用Python,試圖在網頁上建立互動式科學運算環境,官方提到,從發布以來,Pyodide就受到廣泛社群的注意,專案持續開發中,而且也有許多Mozilla外的專案正在使用。

目前核心團隊已經完成透明治理的規則訂定,並且也規畫好未來發展的路線圖,歡迎開發者在新的GitHub儲存庫中參與貢獻。

而Pyodide 0.17的主要更新則有三點,徹底重新設計中央API、類型轉換改進以及消除錯誤與記憶體洩漏問題。官方對類型轉換模組進行了大幅度的改善,目的是要讓Python和Javascript之間的物件轉換,可以產生相同的物件,也就是說,他們希望Python->JS->Python和JS->Python->JS的轉換,其開始與結束產生的物件都相同,雖然有一些不可避免的設計折衷,因此會有一些例外,但是現在大致上都會相同。

官方解釋,Pyodide的一大優勢,就是Python和Javascript之間的跨語言函式介面,該介面可以消除使用兩個不同語言的麻煩。所有I/O都需要透過一般的網頁API,因此要讓Python程式碼可以利用瀏覽器的優勢,就需要能夠支援像是由Python產生資料,並且由HTML5 Canvas渲染資料,或是在Python中實作事件處理程式這樣的案例。

過去Pyodide的痛點在於,當物件在Python和Javascript之間傳遞一輪之後,回傳的物件是不一樣的東西,而這並不是用戶期望的結果。物件往返轉換的問題,是由於Python類型隱式轉換到JavaScript造成,官方提到,雖然隱式轉換方便使用,但是系統常產生意料之外的結果。為了改進這些問題,官方做了一些調整,在字串、數字、布林和None都還是使用隱式轉換,而其他的物件則使用代理來幫助轉換,使用顯式轉換方法來將代理轉換成為原生類型。


熱門新聞

Advertisement