āĻ°ā§āĻŦāĻŋ 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% āĻŦā§āĻĻā§āĻ§āĻŋ āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
- āĻ āĻĻāĻā§āĻˇ āĻāĻŦāĻ āĻ¸āĻŽāĻ¯āĻŧāĻ¸āĻžāĻĒā§āĻā§āĻˇ āĻ°ā§āĻā§āĻ˛āĻžāĻ° āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ā§ (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