ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ 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 ΠΈ proposal Π·Π° nullish coalescing, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ 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 ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°, ΡΠ΅ 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
