Π Π΅Π»ΠΈΠ· 19.3.0 Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ GraalVM ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Python, JavaScript, Ruby ΠΈ R Π½Π° Π΅Ρ‘ основС

Компания Oracle ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° выпуск ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ GraalVM 19.3.0, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ запуск ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° JavaScript (Node.js), Python, Ruby, R, Π»ΡŽΠ±Ρ‹Ρ… языках для JVM (Java, Scala, Clojure, Kotlin) ΠΈ языках, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM (C, C++, Rust). Π’Π΅Ρ‚ΠΊΠ° 19.3 отнСсСна ΠΊ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ выпусков с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сроком ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ (LTS) ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ JDK 11, Π² Ρ‚ΠΎΠΌ числС с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ компиляции Java-ΠΊΠΎΠ΄Π° Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ (GraalVM Native Image). Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… GraalVM Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языков Python, JavaScript, Ruby ΠΈ R — GraalPython, GraalJS, TruffleRuby ΠΈ FastR.

GraalVM прСдоставляСт JIT-компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° Π»Π΅Ρ‚Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² JVM ΠΊΠΎΠ΄ Π»ΡŽΠ±Ρ‹Ρ… скриптовых языков, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ JavaScript, Ruby, Python ΠΈ R, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² JVM, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π² Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡ‹ΠΉ GraalVM инструмСнтарий Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ нСзависимыС ΠΎΡ‚ языков программирования ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, систСму профилирования ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ распрСдСлСния памяти. GraalVM Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках, позволяя ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ массивам ΠΈΠ· ΠΊΠΎΠ΄Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках. Для языков Π½Π° Π±Π°Π·Π΅ JVM имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания скомпилированных Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ памяти (ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Substrate VM).

ИзмСнСния в GraalJS:

  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с 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