GraalVM āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° 19.3.0 āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨, āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ, āĻ°ā§āĻŦāĻŋ āĻāĻŦāĻ‚ āĻ†āĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°ā§āĻ¨

āĻ“āĻ°āĻžāĻ•āĻ˛ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ā§‡āĻ° āĻŽā§āĻ•ā§āĻ¤āĻŋ GraalVM 19.3.0, āĻ¯āĻž JavaScript (Node.js), Python, Ruby, R, JVM-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ­āĻžāĻˇāĻž (Java, Scala, Clojure, Kotlin) āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻ­āĻžāĻˇāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ LLVM āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (C, C++) āĻ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡āĨ¤ , āĻŽāĻ°āĻŋāĻšāĻž)āĨ¤ 19.3 āĻļāĻžāĻ–āĻž āĻāĻ•āĻŸāĻŋ āĻĻā§€āĻ°ā§āĻ˜āĻŽā§‡āĻ¯āĻŧāĻžāĻĻā§€ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž (LTS) āĻ°āĻŋāĻ˛āĻŋāĻœ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻļā§āĻ°ā§‡āĻŖā§€āĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻœā§‡āĻĄāĻŋāĻ•ā§‡ 11, āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻœāĻžāĻ­āĻž āĻ•ā§‹āĻĄ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻš (GraalVM āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ‡āĻŽā§‡āĻœ)āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ•ā§‹āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻŋāĻ¤āĻ°āĻŖ GPLv2 āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸āĻĒā§āĻ°āĻžāĻĒā§āĻ¤āĨ¤ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡, GraalVM āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨, āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ, āĻ°ā§āĻŦāĻŋ āĻāĻŦāĻ‚ āĻ†āĻ° āĻ­āĻžāĻˇāĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ - GraalPython, āĻ—ā§āĻ°āĻžāĻ˛āĻœā§‡āĻāĻ¸, āĻŸā§āĻ°āĻžāĻĢāĻ˛āĻ°ā§āĻŦāĻŋ и āĻĻā§āĻ°ā§āĻ¤āĻ†āĻ°.

GraalVM āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻāĻ•āĻŸāĻŋ āĻœā§‡āĻ†āĻ‡āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻ¯āĻž āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ, āĻ°ā§āĻŦāĻŋ, āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻāĻŦāĻ‚ āĻ†āĻ° āĻ¸āĻš JVM-āĻ āĻ‰āĻĄāĻŧāĻ¤ā§‡ āĻĨāĻžāĻ•āĻž āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻĄ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ LLVM āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ JVM-āĻ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ•ā§‹āĻĄ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ GraalVM āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻ°āĻžā§āĻœāĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻˇāĻž-āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻĄāĻŋāĻŦāĻžāĻ—āĻžāĻ°, āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŽā§‡āĻŽāĻ°āĻŋ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻ• āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ GraalVM āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻŽāĻŋāĻ˛āĻŋāĻ¤ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ­āĻžāĻˇāĻžāĻ° āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ JVM-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ›ā§‡ āĻ¸ā§āĻ¯ā§‹āĻ— āĻŽā§‡āĻļāĻŋāĻ¨ āĻ•ā§‹āĻĄā§‡ āĻ¸āĻ‚āĻ•āĻ˛āĻŋāĻ¤ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻž āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ–āĻ°āĻšā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻŽā§‡āĻŽāĻ°āĻŋ āĻāĻŦāĻ‚ āĻĨā§āĻ°ā§‡āĻĄ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻŽā§‡āĻ¨ā§āĻŸ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¸āĻžāĻŦāĻ¸ā§āĻŸā§āĻ°ā§‡āĻŸ āĻ­āĻŋāĻāĻŽ).

GraalJS āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨:

  • Node.js 12.10.0 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻ…-āĻŽāĻžāĻ¨āĻ• āĻŦā§ˆāĻļā§āĻŦāĻŋāĻ• āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ…āĻ•ā§āĻˇāĻŽ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ:
    āĻ—ā§āĻ˛ā§‹āĻŦāĻžāĻ˛ (globalThis āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤, js.global-āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡), āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž (js.performance), āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸ āĻāĻŦāĻ‚ printErr (js.print);

  • āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ Promise.allSettled āĻāĻŦāĻ‚ nullish coalescing āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ, āĻ¯āĻž ECMAScript 2020 āĻŽā§‹āĻĄā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ (“-js.ecmascript-version=2020”);
  • āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž ICU4J āĻĨā§‡āĻ•ā§‡ 64.2, ASM āĻĨā§‡āĻ•ā§‡ 7.1āĨ¤

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ GraalPython āĻ:

  • āĻ¸ā§āĻŸāĻžāĻŦ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ gc.{enable,disable,isenabled}, āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ charmap_build, sys.hexversion āĻāĻŦāĻ‚ _lzma;
  • āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻĒāĻžāĻ‡āĻĨāĻ¨ 3.7.8 āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ;
  • NumPy 1.16.4 āĻāĻŦāĻ‚ āĻĒāĻžāĻ¨ā§āĻĄāĻžāĻ¸ 0.25.0 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻŸāĻžāĻ‡āĻŽāĻ‡āĻŸ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • socket.socket āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻ†āĻ¨āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ “graalpython -m http.server” āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻāĻŦāĻ‚ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻž (TLS āĻ›āĻžāĻĄāĻŧāĻž) http āĻ°āĻŋāĻ¸ā§‹āĻ°ā§āĻ¸ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ;
  • pandas.DataFrame āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
    bytes.startswith-āĻ tuples āĻāĻ° āĻ­ā§āĻ˛ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ,
    āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤ā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ­āĻžāĻ° āĻ§ā§āĻŦāĻ‚āĻ¸ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ…āĻ­āĻŋāĻ§āĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ dict.__contains__ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°;

  • ast.PyCF_ONLY_AST āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨ āĻ¯ā§‡ pytest āĻ•āĻžāĻœ āĻ•āĻ°ā§‡;
  • āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒāĻŋāĻ‡āĻĒāĻŋ 498 (āĻ˛āĻŋāĻŸāĻžāĻ°ā§‡āĻ˛ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§‹āĻ˛ā§‡āĻļāĻ¨);
  • āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ "--python.EmulateJython" āĻĒāĻ¤āĻžāĻ•āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ‡āĻŽā§āĻĒā§‹āĻ°ā§āĻŸ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ JVM āĻ•ā§āĻ˛āĻžāĻ¸ āĻ†āĻŽāĻĻāĻžāĻ¨āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ Python āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ JVM āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽāĻ—ā§āĻ˛āĻŋ āĻ§āĻ°āĻ¤ā§‡;
  • āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•ā§āĻ¯āĻžāĻļāĻŋāĻ‚,
    JVM āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻžāĨ¤ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ¯āĻŧ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ (llvm-āĻāĻ° āĻ‰āĻĒāĻ°ā§‡ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻž āĻŦā§‹āĻāĻžāĻ¯āĻŧ āĻ¯ā§‡ āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄ llvm JIT āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ GraalVM-āĻ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡)āĨ¤

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ TruffleRuby-āĻ¤ā§‡:

  • āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡, āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ LLVM āĻŸā§āĻ˛āĻ•āĻŋāĻŸ āĻāĻ–āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄ āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ āĻ¯ā§‡ āĻ†āĻ°āĻ“ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŦāĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤, āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ˛āĻŋāĻ™ā§āĻ•āĻŋāĻ‚ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻĻā§‚āĻ° āĻ•āĻ°ā§‡;
  • TruffleRuby-āĻ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ˛āĻžāĻĻāĻž LLVM āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨;
  • TruffleRuby-āĻ C++ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ° libc++ āĻāĻŦāĻ‚ libc++ abi āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡;
  • āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ EPL 2.0/GPL 2.0/LGPL 2.1, āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• JRuby-āĻāĻ° āĻŽāĻ¤ā§‹āĻ‡;
  • GC.stat-āĻ āĻāĻšā§āĻ›āĻŋāĻ• āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻĄāĻŧāĻ•ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛#āĻ˛ā§‹āĻĄ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ‚ :chdir-āĻāĻ° āĻ¸āĻžāĻĨā§‡ Kernel#spawn āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • rb_str_drop_bytes āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ•āĻžāĻ°āĻŖ OpenSSL āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡;
  • āĻ°ā§‡āĻ˛ 6-āĻ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĒā§āĻ°āĻŋ-āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻ°āĻ¤ā§āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡, āĻāĻŽāĻ†āĻ°āĻ†āĻ‡-āĻāĻ° āĻŽāĻ¤ā§‹ āĻĒāĻ¤āĻžāĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ;
  • āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ–āĻ°āĻš āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡.

āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻĢāĻžāĻ¸ā§āĻŸāĻ†āĻ°-āĻ:

  • R 3.6.1 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡;
  • LLVM-āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¨ā§‡āĻŸāĻŋāĻ­ R āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, FastR āĻ•ā§‡ GraalVM-āĻāĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ LLVM āĻŸā§āĻ˛āĻŋāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ•ā§‹āĻĄ āĻāĻŦāĻ‚ LLVM āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄ āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻĨāĻžāĻ•āĻŦā§‡āĨ¤

    āĻĒā§āĻ°āĻŋ-āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœāĻ—ā§āĻ˛āĻŋāĻ“ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
    FastR āĻ˛ā§‹āĻĄ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ•ā§‹āĻĄ āĻšāĻžāĻ˛āĻžāĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ "--R.BackEnd=llvm" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻšāĻžāĻ˛ā§ āĻšāĻ˛ā§‡, āĻŦāĻŋāĻŸāĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ LLVM āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ "--R.BackEndLLVM=pkg1,pkg2" āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ›ā§ R āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻ›ā§‡ āĻŦā§‡āĻ›ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ā§‡, āĻ†āĻĒāĻ¨āĻŋ fastr.setToolchain("āĻ¨ā§‡āĻŸāĻŋāĻ­") āĻ•āĻ˛ āĻ•āĻ°ā§‡ āĻŦāĻž $FASTR_HOME/etc/Makeconf āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¨āĻŋāĻœā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨;

  • āĻāĻ‡ āĻ°āĻŋāĻ˛āĻŋāĻœā§‡, GCC āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĢāĻžāĻ¸ā§āĻŸāĻ†āĻ° āĻļāĻŋāĻĒ;
  • āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ˛āĻŋāĻ•;
  • āĻŦāĻĄāĻŧ āĻ­ā§‡āĻ•ā§āĻŸāĻ° (>1GB) āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž;
  • grepRaw āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻŋāĻ°=T āĻāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨