ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle Π²ΡΠΏΡΡΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π»ΡΠ±ΡΡ ΡΠ·ΡΠΊΠ°Ρ Π΄Π»Ρ JVM (Java, Scala, Clojure, Kotlin) ΠΈ ΡΠ·ΡΠΊΠ°Ρ , Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄ LLVM (C, C++, Rust). ΠΠ΅ΡΠΊΠ° 19.3 ΠΎΡΠ½Π΅ΡΠ΅Π½Π° ΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠΎΠ² Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ (LTS) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Java-ΠΊΠΎΠ΄Π° Π² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ (GraalVM Native Image). ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΡΡΠ΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ GraalVM ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² Python, JavaScript, Ruby ΠΈ R β , , ΠΈ .
GraalVM JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π° Π»Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² JVM ΠΊΠΎΠ΄ Π»ΡΠ±ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ JavaScript, Ruby, Python ΠΈ R, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ Π² JVM, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΉ Π² Π±ΠΈΡΠΊΠΎΠ΄ LLVM. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ GraalVM ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. GraalVM Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΠ»Ρ ΡΠ·ΡΠΊΠΎΠ² Π½Π° Π±Π°Π·Π΅ JVM ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ (ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ).
:
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Node.js 12.10.0;
- ΠΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
global (Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° globalThis, Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° js.global-property), performance (js.performance), print ΠΈ printErr (js.print); - Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Promise.allSettled ΠΈ nullish coalescing proposal, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ECMAScript 2020 (Β«βjs.ecmascript-version=2020Β»);
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ICU4J Π΄ΠΎ 64.2, ASM Π΄ΠΎ 7.1.
Π² GraalPython:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π·Π°Π³Π»ΡΡΠΊΠΈ 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Β» Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° JVM-ΠΊΠ»Π°ΡΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Python-ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° import ΠΈ Π»ΠΎΠ²Π»ΠΈ JVM-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° Python;
- Π£Π»ΡΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ°, ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ,
Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Python ΠΈΠ· JVM-ΠΊΠΎΠ΄Π°. Π£Π»ΡΡΡΠ΅Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠ΄Π° python ΠΈ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ (ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ²Π΅ΡΡ llvm ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ bitcode llvm ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ GraalVM Π΄Π»Ρ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ).
Π² TruffleRuby:
- ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ LLVM, ΡΠΎΠ·Π΄Π°ΡΡΠΈΠΉ ΠΈ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΈ Π±ΠΈΡΠΊΠΎΠ΄. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ;
- ΠΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° LLVM Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π² TruffleRuby;
- ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ C++ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° TruffleRuby ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° libc++ ΠΈ libc++abi;
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΎ EPL 2.0/GPL 2.0/LGPL 2.1, ΠΊΠ°ΠΊ ΠΈ Π² Π½Π΅Π΄Π°Π²Π½Π΅ΠΌ JRuby;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² GC.stat;
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ Kernel#load Ρ ΠΎΠ±ΡΡΡΠΊΠΎΠΉ ΠΈ Kernel#spawn Ρ :chdir;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ rb_str_drop_bytes, Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΌ, ΡΡΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ OpenSSL;
- ΠΠΊΠ»ΡΡΠ΅Π½Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ gem-ΠΎΠ², Π½ΡΠΆΠ½ΡΠ΅ Π΄Π»Ρ rails new Π² Rails 6;
- ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ ΡΠ»Π°Π³ΠΈ, ΠΊΠ°ΠΊ Π² MRI;
- ΠΠ½Π΅ΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
Π² FastR:
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ R 3.6.1;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π°ΡΠΈΠ²Π½ΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ LLVM. ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² R FastR ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² GraalVM ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ LLVM. Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ LLVM-Π±ΠΈΡΠΊΠΎΠ΄.
ΠΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
FastR Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠ΅Π½ Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«βR.BackEnd=llvmΒ», Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΡΠΊΠΎΠ΄. LLVM Π±ΡΠΊΡΠ½Π΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ R ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠΊΠ°Π·ΡΠ²Π°Ρ Β«βR.BackEndLLVM=pkg1,pkg2Β». Π ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ Π²ΡΡ Π½Π°Π·Π°Π΄, Π²ΡΠ·Π²Π°Π² fastr.setToolchain(Β«nativeΒ») ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ΄ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π² ΡΠ°ΠΉΠ» $FASTR_HOME/etc/Makeconf; - Π ΡΡΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ FastR ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ GCC runtime;
- ΠΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ;
- ΠΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈ (>1GB);
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ grepRaw, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ fixed=T.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
