āĻ°ā§āĻŦāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻžāĻ° āĻĒā§āĻ°āĻ•āĻžāĻļ 3.2

āĻ°ā§āĻŦāĻŋ 3.2.0 āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻ•āĻŸāĻŋ āĻ—āĻ¤āĻŋāĻļā§€āĻ˛ āĻŦāĻ¸ā§āĻ¤ā§-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻž āĻ¯āĻž āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡ āĻ…āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻĻāĻ•ā§āĻˇ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°ā§āĻ˛, āĻœāĻžāĻ­āĻž, āĻĒāĻžāĻ‡āĻĨāĻ¨, āĻ¸ā§āĻŽāĻ˛āĻŸāĻ•, āĻ†āĻ‡āĻĢā§‡āĻ˛, āĻ…ā§āĻ¯āĻžāĻĄāĻž āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ¸ā§āĻĒā§‡āĻ° āĻ¸ā§‡āĻ°āĻž āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ•ā§‹āĻĄ āĻŦāĻŋāĻāĻ¸āĻĄāĻŋ ("2-āĻ•ā§āĻ˛āĻœ BSDL") āĻāĻŦāĻ‚ "āĻ°ā§āĻŦāĻŋ" āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž GPL āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ GPLv3 āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖāĨ¤

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋ:

  • CRuby āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°ā§‡āĻŸāĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻĒā§‹āĻ°ā§āĻŸ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ“āĻ¯āĻŧā§‡āĻŦ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻž āĻ“āĻ¯āĻŧāĻžāĻ¸āĻāĻŽāĻŸāĻžāĻ‡āĻŽā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻ°āĻžāĻ¨āĻŸāĻžāĻ‡āĻŽā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ WebAssembly āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻ•ā§‹āĻĄā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, WASI (WebAssembly System Interface) API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻœāĻŋāĻ¨āĻŋāĻ¸ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡, WASI-āĻāĻ° āĻ‰āĻĒāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ VFS āĻ°â€ā§āĻ¯āĻžāĻĒāĻžāĻ° āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ†āĻ›ā§‡, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ°ā§āĻŦāĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ•āĻ• wasm āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻĒā§āĻ°āĻļāĻŋāĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĄā§‡āĻŽā§‹ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ¯ā§‡āĻŽāĻ¨ TryRuby āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§‡āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡, āĻĒā§‹āĻ°ā§āĻŸ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻāĻŦāĻ‚ āĻŦā§āĻŸāĻ¸ā§āĻŸā§āĻ°ā§āĻ¯āĻžāĻĒ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ¸ā§āĻ¯ā§āĻŸ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻĨā§āĻ°ā§‡āĻĄ API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻŦāĻ¨ā§āĻĻāĻ°āĻŸāĻŋ āĻĢāĻžāĻ‡āĻŦāĻžāĻ°, āĻŦā§āĻ¯āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ, āĻŦāĻž āĻ†āĻŦāĻ°ā§āĻœāĻ¨āĻž āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ•ā§‡āĻ“ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤
  • āĻ“āĻ¯āĻŧāĻžāĻ‡āĻœā§‡āĻ†āĻ‡āĻŸāĻŋ āĻ‡āĻ¨-āĻĒā§āĻ°āĻ¸ā§‡āĻ¸ āĻœā§‡āĻ†āĻ‡āĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ°, āĻļāĻĒāĻŋāĻĢāĻžāĻ‡ āĻ‡-āĻ•āĻŽāĻžāĻ°ā§āĻ¸ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡āĻ° āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻĻā§‡āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ°ā§āĻŦāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻā§āĻ¯ā§‹āĻ—ā§‡āĻ° āĻ…āĻ‚āĻļ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¯āĻž āĻ°ā§‡āĻ˛ āĻĢā§āĻ°ā§‡āĻŽāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ•āĻ˛ āĻ•āĻ°ā§‡, āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻŦāĻ˛ā§‡ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĨ¤ āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ MJIT JIT āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻŽā§‚āĻ˛ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯, āĻ¯āĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ C āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, YJIT Lazy Basic Block Versioning (LBBV) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¨ā§āĻŦāĻŋāĻ¤ JIT āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ LBBV āĻāĻ° āĻ¸āĻžāĻĨā§‡, JIT āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻļā§āĻ°ā§āĻ¤ā§‡ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§‡ āĻŦāĻžāĻ•āĻŋāĻŸāĻž āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°ā§‡, āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻāĻŦāĻ‚ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ§āĻ°āĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡āĨ¤ YJIT x86-64 āĻāĻŦāĻ‚ arm64/aarch64 āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ Linux, MacOS, BSD āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ UNIX āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§āĨ¤

    āĻ°ā§āĻŦāĻŋāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, YJIT āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ°āĻžāĻ¸ā§āĻŸ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ rustc 1.58.0+ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨, āĻ¤āĻžāĻ‡ YJIT āĻŦāĻŋāĻ˛ā§āĻĄ āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻ…āĻ•ā§āĻˇāĻŽ āĻāĻŦāĻ‚ āĻāĻšā§āĻ›āĻŋāĻ•āĨ¤ YJIT āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ yjit-āĻŦā§‡āĻžā§āĻš āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ¯āĻŧ 41% āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

    āĻ°ā§āĻŦāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻžāĻ° āĻĒā§āĻ°āĻ•āĻžāĻļ 3.2

  • āĻ…āĻĻāĻ•ā§āĻˇ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¯āĻŧāĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇ āĻ°ā§‡āĻ—ā§āĻ˛āĻžāĻ° āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ā§‡ (ReDoS) āĻŦāĻšāĻŋāĻ°āĻžāĻ—āĻ¤ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ†āĻ•ā§āĻ°āĻŽāĻŖ āĻ…āĻ¸ā§āĻŦā§€āĻ•āĻžāĻ°ā§‡āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¸ā§āĻ°āĻ•ā§āĻˇāĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŽā§āĻ¯āĻžāĻšāĻŋāĻ‚ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ, āĻ¯āĻž āĻŽā§āĻ–āĻ¸ā§āĻĨ āĻ•ā§ŒāĻļāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, ‘/^a*b?a*$/ =~ “a” * 50000 + “x”’ āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻŸāĻŋāĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ 10 āĻĨā§‡āĻ•ā§‡ 0.003 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ•āĻŽāĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¨āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ā§‡āĻ° āĻ–āĻ°āĻš āĻšāĻ˛ āĻŽā§‡āĻŽāĻ°āĻŋ āĻ–āĻ°āĻš āĻŦā§ƒāĻĻā§āĻ§āĻŋ, āĻ¯āĻžāĻ° āĻ–āĻ°āĻš āĻ‡āĻ¨āĻĒā§āĻŸ āĻĄā§‡āĻŸāĻžāĻ° āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 10 āĻ—ā§āĻŖ āĻŦā§‡āĻļāĻŋāĨ¤ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ‡āĻŽāĻ†āĻ‰āĻŸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, "Regexp.timeout = 1.0") āĻ¯āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ°ā§‡āĻ—ā§āĻ˛āĻžāĻ° āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•āĨ¤
  • āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸_āĻ¸āĻžāĻœā§‡āĻ¸ā§āĻŸ āĻŽā§‹āĻĄāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻŦāĻž āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋ "āĻļā§‡āĻˇ" āĻ…āĻ­āĻŋāĻŦā§āĻ¯āĻ•ā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ•āĻžāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻŖāĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°ā§‡ā§ˇ āĻ…āĻ¤ā§āĻ˛āĻ¨ā§€āĻ¯āĻŧ `āĻļā§‡āĻˇ', āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ (`do', `def`, `if`, āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)? 1 āĻļā§āĻ°ā§‡āĻŖā§€āĻ° āĻ•ā§āĻ•ā§āĻ° > 2 āĻĄāĻŋāĻĢāĻŦāĻžāĻ°ā§āĻ• > 3 āĻļā§‡āĻˇ 4 āĻļā§‡āĻˇ
  • āĻĒā§āĻ°āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāĻ¤ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻŽā§‹āĻĄā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ: test.rb:2: `+'-āĻ: nil āĻ•ā§‡ āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻž (TypeError) āĻ¯ā§‹āĻ—āĻĢāĻ˛ = ary-āĻ āĻœā§‹āĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻž [ā§Ļ] + āĻ†āĻ°āĻŋ [ā§§] ^^^^^^
  • āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻ°ā§āĻ—ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ¸ā§‡āĻŸ āĻ°āĻŋāĻĄāĻžāĻ‡āĻ°ā§‡āĻ•ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ - āĻĒā§āĻ°āĻžāĻ¨ā§‹ MJIT JIT āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ°ā§‚āĻĒ, āĻ°ā§āĻŦāĻŋ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻžāĨ¤ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§āĻ¨ āĻ¯ā§‡ MJIT āĻāĻ•āĻŸāĻŋ MJIT āĻ•āĻ°ā§āĻŽā§€ āĻĨā§āĻ°ā§‡āĻĄā§‡ āĻšāĻ˛āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻšāĻ˛ā§‡āĨ¤
  • Bundler 2.4-āĻ, āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ PubGrub āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĄāĻŋāĻŸā§‡āĻ•ā§āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻĄāĻžāĻ°ā§āĻŸ āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻŦ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻĒā§‚āĻ°ā§āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ Molinillo āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ RubyGems-āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ…āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻ†āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ PubGrub āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤
  • āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ°āĻ¤ā§āĻ¨ āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻž āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤āĨ¤

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

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