Pyston 0.2發布,支持更多Python特性

jopen 10年前發布 | 7K 次閱讀 Pyston

  Pyston 是 Dropbox 發起的一個開源項目,目標是使用 LLVM 和現代 JIT 技術開發一款高性能的 Python 實現。4 月份 InfoQ 中文站曾經報道過。在經歷了 5 個月的開發之后,Pyston 0.2發布了。與最初的 0.1 版本相比,該版本包含了大量改進。盡管仍然有很多工作要做,但是語言兼容性已經有很大改觀,而且很多標準庫、某些標準擴展模塊無需修改即可運行。不過 Pyston 離真正可用還有很長的路要走。

  該版本支持的 Python 特性包括:

  • 異常,使用 C++ 風格的異常處理
  • 繼承和元類(metaclass),不過尚不支持多重繼承
  • 基本的原生 C API 支持
  • 閉包、生成器、Lambda 和生成器表達式
  • 完整的參數處理行為
  • long 和 integer 的提升(promotion)
  • 多線程支持
  • </ul>

      具體而言,如仍在繼續開發的原生C語言支持,目前能夠原生提供 CPython API 的一個子集,重新編譯一次就能運行現有的擴展。在其他技術中,開發團隊禁用了所有的引用計數操作,轉而使用保守的垃圾收集來處理內存管理。

      該版本也使用 GIL 管理線程相關的代碼。不過提供了實驗性的配置選項,支持使用讀寫鎖的一個變種。該選項去掉了 GIL,支持多個線程使用多個處理器核,但是受限于 C API 的語義,并行性還有待繼續挖掘。

      根據原來的設想,0.1 版本的目標是驗證整個 JIT 架構,0.2 改進語言兼容性,0.3 改進性能。0.1 版本已經說明,可以使用 LLVM 生成高性能代碼,但是基準測試表明,性能還是被非常簡單的垃圾收集器、較為初級的 SSA 變換實現拖了后腿。未來數月,開發團隊將集中解決這些問題,并引入一個新的分層框架,以支持更先進的類型推導、支持 Python 的高級框架內省特性。

      項目的核心人員 Kevin Modzelewski 提到:

    很多地方都可以這么說:目前還比較慢,但是我們相信可以做到更快。因此我們暫時選擇不給出基準測試數據,因為現在噪音比較多。

    </blockquote>

      未來的 0.3 版本將提供性能數據。

      另外,盡管 Python 之父 Guido van Rossum 就職于 Dropbox,但是他并沒有參與該項目的開發,不過會提供一些建議。

      該項目目前已經有 10 余位 Dropbox 之外的開發人員貢獻代碼。對構建一款高性能 Python JIT 編譯器感興趣的讀者也可以瀏覽代碼,并加入進去。

    來自: InfoQ
                        <span id="shareA4" class="fl">                            
                            </span>
     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!