甲骨文公司
GraalVM
- 確保與 Node.js 12.10.0 的兼容性;
- 預設情況下停用非標準全域屬性和函數:
global(替換為globalThis,設定js.global-property返回),效能(js.performance),print和printErr(js.print); - 實作了 Promise.allSettled 和 nullish 合併提案,可在 ECMAScript 2020 模式下使用(“-js.ecmascript-version=2020”);
- 將依賴 ICU4J 更新至 64.2,將 ASM 更新至 7.1。
- 增加了存根 gc.{enable,disable,isenabled},實作了 charmap_build、sys.hexversion 和 _lzma;
- 更新了Python 3.7.8標準庫;
- 增加了對 NumPy 1.16.4 和 Pandas 0.25.0 的支援;
- 添加了 timeit 支援;
- socket.socket 已進入允許您執行「graalpython -m http.server」並載入未加密(無 TLS)http 資源的狀態;
- 修正了顯示 pandas.DataFrame 物件的問題。
bytes.startswith 中元組的錯誤處理,
迭代器的解構賦值以及對字典使用 dict.__contains__ ; - 添加了對 ast.PyCF_ONLY_AST 的支持,其中
允許 確保 pytest 有效; - 添加
支持 PEP 498(文字中的字串內插); -
實施的 “--python.EmulateJython”標誌用於使用普通 Python 導入語法導入 JVM 類別並從 Python 程式碼捕獲 JVM 異常; - 改良的解析器效能、異常快取、
從 JVM 程式碼存取 Python 物件。 改進了 python 程式碼和本機擴充功能的效能測試結果(在 llvm 之上執行本機擴充功能意味著將位元碼 llvm 傳遞到 GraalVM 進行 JIT 編譯)。
- 為了編譯本機擴展,現在使用內建的 LLVM 工具包來建立本機程式碼和位元碼。 這意味著更多的本機擴充應該開箱即用地編譯,從而消除大多數連結問題;
- 單獨的 LLVM 安裝,用於在 TruffleRuby 中安裝本機擴充;
- 在 TruffleRuby 上安裝 C++ 擴充功能不再需要安裝 libc++ 和 libc++abi;
- 授權更新為 EPL 2.0/GPL 2.0/LGPL 2.1,與最新的 JRuby 相同;
- 新增了對 GC.stat 可選參數的支援;
- 使用包裝器實作 Kernel#load 方法,並使用 :chdir; 實作 Kernel#spawn;
- 新增了 rb_str_drop_bytes,這很棒,因為 OpenSSL 使用它;
- 包括 Rails 6 中新的 Rails 所需的預安裝 gem 的擴充;
- 為了編譯本機擴展,需要使用標誌,如 MRI 中;
- 已進行效能優化並減少記憶體消耗。
- 確保與R 3.6.1的兼容性;
- 新增了對運行基於 LLVM 的本機擴充的初步支援。 建置本機 R 套件時,FastR 配置為使用 GraalVM 的內建 LLVM 工具。 產生的二進位檔案將包含本機程式碼和 LLVM 位元程式碼。
預先安裝的軟體包也是透過這種方式建構的。
FastR 預設載入並執行本機擴充程式碼,但當使用「--R.BackEnd=llvm」選項啟動時,將使用位碼。 透過指定“--R.BackEndLLVM=pkg1,pkg2”,可以選擇性地將 LLVM 後端用於某些 R 套件。 如果安裝軟體包時遇到問題,可以透過呼叫 fastr.setToolchain("native") 或手動編輯 $FASTR_HOME/etc/Makeconf 檔案來恢復所有內容; - 在此版本中,FastR 不附帶 GCC 運行時庫;
- 修復記憶體洩漏;
- 修正了處理大型向量 (>1GB) 時的問題;
- 實作了grepRaw,但僅適用於fixed=T。
來源: opennet.ru