發布 Nuitka 2.0,Python 語言的編譯器

發布了 Nuitka 2.0 項目,開發了一個編譯器,用於將 Python 腳本轉換為 C 表示形式,然後可以使用 libpython 將其編譯為可執行文件,以最大程度地與 CPython 兼容(使用本機 CPython 工具來操作對象)。 與當前版本的 Python 2.6、2.7、3.3 - 3.11 完全兼容。 與 CPython 相比,編譯後的腳本在 pystone 測試中表現出 335% 的性能提升。 項目代碼在 Apache 許可下分發。

新版本的變化包括:

  • 新增了在套件配置中使用變數的功能,可讓您在編譯時從已安裝的套件中查詢值並使用這些值來定義後端。對配置中變數的支援使您能夠以標準方式解決許多先前需要連接插件的任務。
  • 新增了對使用者定義參數的支持,以影響每個套件的配置。可以使用新的 get_parameter 函數讀取參數並用於選擇模組的行為(例如,您可以設定參數以停用 Numba JIT 或 Torch JIT)。
  • 新增了選項「--include-onefile-external-data」來指定在配置中定義的資料檔案模板,但在 onefile 模式下建置時必須與可執行檔分開提供。
  • 新增了「--cf-protection」選項來設定GCC中的CFI(控制流程完整性)保護模式,該模式會阻止違反正常執行順序(控制流程)的行為。
  • 對於插件 yaml 文件,已經實現了為完整性檢查創建校驗和的功能,將來他們計劃使用該功能來組織運行時驗證。
  • 操作允許指定多個選項,並以行分隔(使用新行作為分隔符號)。例如:包含資料目錄: | a=bc=d
  • 已經實現了循環類型的分析,將來將用於實現選擇性優化。
  • 新增了最佳化以加快非共享和轉義變數的處理速度。
  • 防膨脹插件的功能已擴展,現在可用於在使用streamlit、torch、knetworkx、distributed、skimage、bitsandbytes、tf_keras、pip、networkx和pywt庫時減少資料包數量(基本上,綁定pytest、IPython、nose 、triton 和dask 被排除)。

來源: opennet.ru

添加評論