ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° , ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° JVM (Java, Scala, Clojure, Kotlin) ΠΈ Π΅Π·ΠΈΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±ΠΈΡΠΊΠΎΠ΄ LLVM (C, C++, Rust). ΠΠ΅ΡΡΠΈΡ 19.3 Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ Π²Π΅ΡΡΠΈΡ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° (LTS) ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° , Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Java-ΠΊΠΎΠ΄ Π² ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (GraalVM Native Image). ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠ° ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ Python, JavaScript, Ruby ΠΈ R, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ GraalVM β , , ΠΈ .
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
