ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Oracle
GraalVM
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Node.js 12.10.0;
- ΠΠ΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅:
Π³Π»ΠΎΠ±Π°Π»Π΅Π½ (Π·Π°ΠΌΠ΅Π½Π΅Π½ Ρ 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.
Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π² Π±Π°ΠΉΡΠΎΠ²Π΅.startswith,
Π΄Π΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° dict.__contains__ Π·Π° ΡΠ΅ΡΠ½ΠΈΡΠΈ; - ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ast.PyCF_ONLY_AST, ΠΊΠΎΠ΅ΡΠΎ
ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ pytest ΡΠ°Π±ΠΎΡΠΈ; - ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΎΡ
ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° PEP 498 (ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»Π°ΡΠΈΡ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π² Π»ΠΈΡΠ΅ΡΠ°Π»ΠΈ); -
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΎ ΡΠ»Π°Π³ΡΡ β--python.EmulateJythonβ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° JVM ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° Python ΠΈ ΡΠ»Π°Π²ΡΠ½Π΅ Π½Π° JVM ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° Python; - ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ,
Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Python ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ JVM ΠΊΠΎΠ΄. ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΏΡΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π·Π° Python ΠΊΠΎΠ΄ ΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ (ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΡ Ρ llvm ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ Π±ΠΈΡΠΊΠΎΠ΄ΡΡ llvm ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° GraalVM Π·Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ).
- ΠΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ 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 Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°;
- ΠΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΡΠΊΡΠΏΠΎΡΠ΅Π½Π½ΠΈ ΠΊΠ°ΠΌΡΠ½ΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π½ΠΎΠ²ΠΈ ΡΠ΅Π»ΡΠΈ Π² Rails 6;
- ΠΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ»Π°Π³ΠΎΠ²Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠΈ MRI;
- ΠΠ°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½Π°.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ R 3.6.1;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° LLVM. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ R ΠΏΠ°ΠΊΠ΅ΡΠΈ, FastR Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ LLVM ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π½Π° GraalVM. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΊΠ°ΠΊΡΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ΄, ΡΠ°ΠΊΠ° ΠΈ LLVM Π±ΠΈΡΠΊΠΎΠ΄.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΡΡΠΎ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½.
FastR Π·Π°ΡΠ΅ΠΆΠ΄Π° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Ρ ΠΎΠΏΡΠΈΡΡΠ° β--R.BackEnd=llvmβ, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΡΠΊΠΎΠ΄. ΠΠ΅ΠΊΠ΅Π½Π΄ΡΡ Π½Π° LLVM ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π½ΠΎ Π·Π° Π½ΡΠΊΠΎΠΈ R ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ "--R.BackEndLLVM=pkg1,pkg2". ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΡΡΠ½Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ fastr.setToolchain("native") ΠΈΠ»ΠΈ ΡΡΡΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ»Π° $FASTR_HOME/etc/Makeconf; - Π ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ FastR ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° GCC;
- Π€ΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠΎΠ²Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ;
- ΠΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ Π²Π΅ΠΊΡΠΎΡΠΈ (>1GB);
- ΠΡΠ²Π΅Π΄Π΅Π½ grepRaw, Π½ΠΎ ΡΠ°ΠΌΠΎ Π·Π° fixed=T.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru