ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ 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++ , 'Π Ρ“Π°). Π€ΠΈΠ»ΠΈΡ˜Π°Π»Π°Ρ‚Π° 19.3 Π΅ класифицирана ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΠ»Π³ΠΎΡ€ΠΎΡ‡Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° (LTS) ΠΈ ΠΈΠ·Π²ΠΎΠ½Ρ€Π΅Π΄Π΅Π½ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° 11 ΠˆΠ”Πš, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ ја ΠΈ моТноста Π·Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ Java ΠΊΠΎΠ΄ Π²ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ (GraalVM Native Image). Код Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ дистрибуирани ΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†ΠΈΡ€Π°Π½Π° спорСд GPLv2. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, Π±Π΅Π° објавСни Π½ΠΎΠ²ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° Python, JavaScript, Ruby ΠΈ R Ρ˜Π°Π·ΠΈΡ‡Π½ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ GraalVM - GraalPython, GraalJS, Π’Π°Ρ€Ρ‚ΡƒΡ„Π ΡƒΠ±ΠΈ ΠΈ FastR.

GraalVM ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° JIT ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ кој ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈ ΠΊΠΎΠ΄ ΠΎΠ΄ кој Π±ΠΈΠ»ΠΎ јазик Π·Π° ΡΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ Π»Π΅Ρ‚ Π²ΠΎ JVM, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ JavaScript, Ruby, Python ΠΈ R, Π° исто Ρ‚Π°ΠΊΠ° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ ΠΊΠΎΠ΄ Π²ΠΎ JVM ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ Π²ΠΎ Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM. АлаткитС ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ ΠΎΠ΄ GraalVM Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ Π΄Π΅Π±Π°Π³Π΅Ρ€ нСзависСн ΠΎΠ΄ Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚, систСм Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°ΡšΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°. GraalVM ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° создавањС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ со ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ˜Π°Π·ΠΈΡ†ΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π²ΠΈ Π΄Π° пристапитС Π΄ΠΎ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ ΠΈ Π½ΠΈΠ·ΠΈ ΠΎΠ΄ ΠΊΠΎΠ΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ˜Π°Π·ΠΈΡ†ΠΈ. Π—Π° Ρ˜Π°Π·ΠΈΡ†ΠΈΡ‚Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° JVM постои моТност создавањС ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½ΠΈ Π²ΠΎ машински ΠΊΠΎΠ΄ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ со ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° (ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ со ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ сС спровСдува ΠΏΡ€Π΅ΠΊΡƒ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° Подлога VM).

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ GraalJS:

  • ОбСзбСдСна Π΅ компатибилност со Node.js 12.10.0;
  • НСстандарднитС Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС стандардно ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΈ:
    global (Π·Π°ΠΌΠ΅Π½Π΅Ρ‚ΠΎ со globalThis, ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ js.global-property Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈ), пСрформанси (js.performance), print ΠΈ printErr (js.print);

  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ Promise.all РСшСн ΠΈ ΠΏΠΎΠ½ΠΈΡˆΡ‚Π΅Π½ ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ Π·Π° ΡΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅, ΠΊΠΎΠΈ сС достапни Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ 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 рСсурси;
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ°Π½Π΄ΠΈΡ‚Π΅.ΠžΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π½Π° DataFrame.
    Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° мноТСства Π²ΠΎ Π±Π°Ρ˜Ρ‚ΠΈ.ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со,
    дСструктурно Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° Π΄ΠΈΠΊ.__содрТи__ Π·Π° Ρ€Π΅Ρ‡Π½ΠΈΡ†ΠΈ;

  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ast.PyCF_ONLY_AST, ΡˆΡ‚ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΎΡΠΈΠ³ΡƒΡ€Π°Ρ˜Ρ‚Π΅ сС Π΄Π΅ΠΊΠ° pytest Ρ€Π°Π±ΠΎΡ‚ΠΈ;
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° PEP 498 (ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° Π½ΠΈΠ·ΠΈ Π²ΠΎ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΈ);
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΎΠ·Π½Π°ΠΊΠ°Ρ‚Π° β€ž--python.EmulateJythonβ€œ Π·Π° ΡƒΠ²ΠΎΠ· Π½Π° JVM класи ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° синтакса Π·Π° ΡƒΠ²ΠΎΠ· Π½Π° Python ΠΈ Ρ„Π°ΡœΠ°ΡšΠ΅ Π½Π° исклучоци Π½Π° 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 Π³ΠΎ користи;
  • Π’ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ СкстСнзии Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ инсталирани скапоцСни камСња ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° шини Π½ΠΎΠ²ΠΈ Π²ΠΎ Rails 6;
  • Π—Π° Π΄Π° сС состават ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΈ СкстСнзии, сС користат знамиња, ΠΊΠ°ΠΊΠΎ Π²ΠΎ МНР;
  • НаправСни сС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° пСрформанситС ΠΈ Π½Π°ΠΌΠ°Π»Π΅Π½Π° Π΅ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°.

ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ FastR:

  • ОбСзбСдСна Π΅ компатибилност со R 3.6.1;
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΡ€Π΅Π»ΠΈΠΌΠΈΠ½Π°Ρ€Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π½ΠΈ СкстСнзии Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° LLVM. Кога сС Π³Ρ€Π°Π΄Π°Ρ‚ домашни R ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, FastR Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Π΄Π° ја користи Π²Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° LLVM Π½Π° GraalVM. Π”ΠΎΠ±ΠΈΠ΅Π½ΠΈΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ќС содрТат ΠΈ ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ ΠΊΠΎΠ΄ ΠΈ Π±ΠΈΡ‚ΠΊΠΎΠ΄ LLVM.

    На овој Π½Π°Ρ‡ΠΈΠ½ сС Π³Ρ€Π°Π΄Π°Ρ‚ ΠΈ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ инсталиранитС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.
    FastR стандардно Π³ΠΎ Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π° ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΡƒΠ²Π°ΡšΠ΅, Π½ΠΎ ΠΊΠΎΠ³Π° ќС сС стартува со ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° β€ž--R.BackEnd=llvmβ€œ, ќС сС користи Π±ΠΈΡ‚-ΠΊΠΎΠ΄. Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π½Π° LLVM ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи сСлСктивно Π·Π° Π½Π΅ΠΊΠΎΠΈ R ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ со Π½Π°Π²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ β€ž--R.BackEndLLVM=pkg1,pkg2β€œ. Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ сè Π½Π°Π·Π°Π΄ со ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° fastr.setToolchain (β€žΠΌΠ°Ρ˜Ρ‡ΠΈΠ½β€œ) ΠΈΠ»ΠΈ Ρ€Π°Ρ‡Π½ΠΎ ΡƒΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° $FASTR_HOME/etc/Makeconf;

  • Π’ΠΎ ΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, FastR сС испорачува Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅ Π½Π° GCC;
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΡƒΠ²Π°ΡšΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°;
  • ΠŸΠΎΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° со Π³ΠΎΠ»Π΅ΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ (>1GB);
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ grepRaw, Π½ΠΎ само Π·Π° fixed=T.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€