เบ›เปˆเบญเบ 19.3.0 เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual GraalVM เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ Python, JavaScript, Ruby เปเบฅเบฐ R เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบกเบฑเบ™

เบšเปเบฅเบดเบชเบฑเบ” Oracle เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบเบฒเบ™เบ›เปˆเบญเบเป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบปเปˆเบงเป„เบ› GraalVM 19.3.0, เป€เบŠเบดเปˆเบ‡เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ JavaScript (Node.js), Python, Ruby, R, เบžเบฒเบชเบฒเปƒเบ”เบเปเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš JVM (Java, Scala, Clojure, Kotlin) เปเบฅเบฐเบžเบฒเบชเบฒเบ—เบตเปˆ LLVM bitcode เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰ (C, C++ , rust). เบชเบฒเบ‚เบฒ 19.3 เบ–เบทเบเบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เปˆเบญเบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป„เบฅเบเบฐเบเบฒเบง (LTS) เปเบฅเบฐ เป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™ เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ JDK11, เบฅเบงเบกเบ—เบฑเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” Java เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ (GraalVM Native Image). เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบญเบฐเบ™เบธเบเบฒเบ”เบžเบฒเบเปƒเบ•เป‰ GPLv2. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡ Python, JavaScript, Ruby เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฒเบชเบฒ R เป‚เบ”เบเปƒเบŠเป‰ GraalVM เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ - GraalPython, GraalJS, TruffleRuby ะธ FastR.

GraalVM เบชเบฐเบซเบ™เบญเบ‡ A compiler JIT เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เบˆเบฒเบเบžเบฒเบชเบฒ scripting เปƒเบ”เป†เปƒเบ™ JVM, เบฅเบงเบกเบ—เบฑเบ‡ JavaScript, Ruby, Python เปเบฅเบฐ R, เปเบฅเบฐเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เปƒเบ™ JVM เปเบ›เบ‡เป€เบ›เบฑเบ™ LLVM bitcode. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ GraalVM เบ›เบฐเบเบญเบšเบกเบตเบ•เบปเบงเบ”เบตเบšเบฑเบเบ—เบตเปˆเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฒเบชเบฒ, เบฅเบฐเบšเบปเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ, เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบ„เบงเบฒเบกเบˆเบณ. GraalVM เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบงเบฑเบ”เบ–เบธเปเบฅเบฐ arrays เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปƒเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™เป†. เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ JVM เบกเบต เป‚เบญเบเบฒเบ” เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ” (เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบฅเบฐ thread เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบญเบš. Substrate VM).

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ GraalJS:

  • เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš Node.js 12.10.0 เปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™;
  • เบ„เบธเบ™โ€‹เบชเบปเบกโ€‹เบšเบฑเบ”โ€‹เปเบฅเบฐโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบกเบฒเบ”โ€‹เบ•เบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบปเปˆเบงโ€‹เป‚เบฅเบโ€‹เปเบกเปˆเบ™โ€‹เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ—เปเบฒโ€‹เบ‡เบฒเบ™โ€‹เป‚เบ”เบโ€‹เบ„เปˆเบฒโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹:
    global (เปเบ—เบ™เบ—เบตเปˆเป‚เบ”เบ globalThis, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ js.global-property เป€เบžเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™), เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (js.performance), เบžเบดเบกเปเบฅเบฐ printErr (js.print);

  • เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบชเบฐเป€เบซเบ™เบต Promise.all Settled เปเบฅเบฐ nullish coalescing, เป€เบŠเบดเปˆเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เป‚เปเบ” ECMAScript 2020 (โ€œ-js.ecmascript-version=2020โ€);
  • เบญเบฑเบšเป€เบ”เบ”เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš ICU4J เป€เบ›เบฑเบ™ 64.2, ASM เป€เบ›เบฑเบ™ 7.1.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เปƒเบ™ GraalPython:

  • เป€เบžเบตเปˆเบก stubs gc.{enable,disable,isenabled}, เบ›เบฐเบ•เบดเบšเบฑเบ” charmap_build, sys.hexversion เปเบฅเบฐ _lzma;
  • เบ›เบฑเบšเบ›เบธเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Python 3.7.8;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ NumPy 1.16.4 เปเบฅเบฐ Pandas 0.25.0;
  • เป€เบžเบตเปˆเบกเป€เบงเบฅเบฒเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™;
  • socket.socket เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบกเบฒเบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ "graalpython -m http.server" เปเบฅเบฐเป‚เบซเบฅเบ” unencrypted (เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ TLS) http เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™;
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบงเบฑเบ”เบ–เบธ pandas.DataFrame.
    เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ tuples เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™ bytes.startswith,
    เบเบฒเบ™เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ‚เบญเบ‡ iterators เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ dict.__contains__ เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบก;

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš ast.PyCF_ONLY_AST, เป€เบŠเบดเปˆเบ‡ เบญเบฐเบ™เบธเบเบฒเบ” เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ pytest เป€เบฎเบฑเบ”เบงเบฝเบ;
  • เป€เบžเบตเปˆเบกเปเบฅเป‰เบง เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ PEP 498 (string interpolation in literals);
  • เบ›เบฐเบ•เบดเบšเบฑเบ” เบ—เบธเบ‡ โ€œ--python.EmulateJythonโ€ เป€เบžเบทเปˆเบญเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบซเป‰เบญเบ‡เบฎเบฝเบ™ JVM เป‚เบ”เบเปƒเบŠเป‰ syntax เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ Python เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบˆเบฑเบšเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™ 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 เบเบฑเบš wrapper เปเบฅเบฐ Kernel#spawn เบเบฑเบš :chdir;
  • เป€เบžเบตเปˆเบก rb_str_drop_bytes, เป€เบŠเบดเปˆเบ‡เบ”เบตเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒ OpenSSL เปƒเบŠเป‰เบกเบฑเบ™;
  • เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบš rails เปƒเบซเบกเปˆเปƒเบ™ Rails 6;
  • เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡, เบ—เบธเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ„เบทเบเบฑเบš MRI;
  • เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ เปƒเบ™ FastRโ€‹:

  • เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš R 3.6.1 เปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™;
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ LLVM. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบžเบฑเบเป€เบเบฑเบ” R เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡, FastR เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเป‰เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบท LLVM เบ—เบตเปˆเบกเบตเปƒเบ™ GraalVM. เป„เบŸเบฅเปŒเป„เบšเบ™เบฒเบฃเบตเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฐเบกเบตเบ—เบฑเบ‡เบฅเบฐเบซเบฑเบ”เป€เบ”เบตเบก เปเบฅเบฐ LLVM bitcode.

    เปเบžเบฑเบเป€เบเบ”เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบงเป‰เบฅเปˆเบงเบ‡เปœเป‰เบฒเบเปเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰.
    FastR เป‚เบซเบฅเบ”เปเบฅเบฐเปเบฅเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ™เบฒเบกเบชเบฐเบเบธเบ™เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบงเบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบ "--R.BackEnd=llvm", เบฅเบฐเบซเบฑเบ”เบšเบดเบ”เบˆเบฐเบ–เบทเบเปƒเบŠเป‰. backend LLVM เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เบขเปˆเบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เปเบžเบฑเบเป€เบเบฑเบ” R เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธ "--R.BackEndLLVM=pkg1,pkg2". เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบžเบฑเบเป€เบเบฑเบ”, เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป‚เบ—เบซเบฒ fastr.setToolchain("native") เบซเบผเบทเปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ $FASTR_HOME/etc/Makeconf เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡;

  • เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ™เบตเป‰, FastR เบ‚เบปเบ™เบชเบปเปˆเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™ GCC;
  • เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ„เบปเบ‡เบ—เบตเปˆ;
  • เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš vectors เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ (> 1GB);
  • เบ›เบฐเบ•เบดเบšเบฑเบ” grepRaw, เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš fixed = T.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™