เชฐเซ‚เชฌเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ 3.2

เชฐเซ‚เชฌเซ€ 3.2.0 เชฐเซ€เชฒเซ€เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชœเซ‡ เชเช• เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เช‘เชฌเซเชœเซ‡เช•เซเชŸ-เช“เชฐเชฟเชเชจเซเชŸเซ‡เชก เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เช…เชคเซเชฏเช‚เชค เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช›เซ‡ เช…เชจเซ‡ เชชเชฐเซเชฒ, เชœเชพเชตเชพ, เชชเชพเชฏเชฅเซ‹เชจ, เชธเซเชฎเซ‹เชฒเชŸเซ‹เช•, เชเชซเชฟเชฒ, เชเชกเชพ เช…เชจเซ‡ เชฒเชฟเชธเซเชชเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช•เซ‹เชก BSD (โ€œ2-เช•เซเชฒเซ‹เช BSDLโ€) เช…เชจเซ‡ โ€œเชฐเซเชฌเซ€โ€ เชฒเชพเช‡เชธเชจเซเชธ เชนเซ‡เช เชณ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ GPL เชฒเชพเชฏเชธเชจเซเชธเชจเชพเช‚ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ GPLv3 เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡.

เชฎเซเช–เซเชฏ เชธเซเชงเชพเชฐเชพเช“:

  • CRuby เชฆเซเชญเชพเชทเชฟเชฏเชพเชจเซเช‚ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚, เชœเซ‡ เชตเซ‡เชฌ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฅเชตเชพ wasmtime เชœเซ‡เชตเชพ เชธเซเชŸเซ‡เชจเซเชกเช…เชฒเซ‹เชจ เชฐเชจเชŸเชพเชˆเชฎ เชนเซ‡เช เชณ เชตเซ‡เชฌ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช‡เชจเซเชŸเชฐเชฎเซ€เชกเชฟเชฏเซ‡เชŸ เช•เซ‹เชกเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‡ เช›เซ‡. เช…เชฒเช—เชฅเซ€ เชšเชพเชฒเชคเซ€ เชตเช–เชคเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เชธเซ€เชงเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡, WASI (WebAssembly System Interface) API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช…เชจเซเชฏ เชตเชธเซเชคเซเช“เชจเซ€ เชธเชพเชฅเซ‡, WASI เชจเซ€ เชŸเซ‹เชš เชชเชฐ VFS เชฐเซ‡เชชเชฐ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชฎเช—เซเชฐ เชฐเซ‚เชฌเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชเช• เชœ wasm เชซเชพเช‡เชฒเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชชเซเชฐเชธเซเชคเซเชคเชฟเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชœ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชšเชพเชฒเชตเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชŸเซเชฐเชพเชฏเชฐเซ‚เชฌเซ€ เชœเซ‡เชตเซ€ เชคเชพเชฒเซ€เชฎ เช…เชจเซ‡ เชกเซ‡เชฎเซ‹ เชตเซ‡เชฌ เชธเซ‡เชตเชพเช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชตเชฟเช•เชพเชธเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชคเชฌเช•เซเช•เซ‡, เชชเซ‹เชฐเซเชŸ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฎเซ‚เชณเชญเซ‚เชค เช…เชจเซ‡ เชฌเซเชŸเชธเซเชŸเซเชฐเซ‡เชช เชŸเซ‡เชธเซเชŸ เชธเซเชฏเซเชŸเซเชธเชจเซ‡ เชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชฅเซเชฐเซ‡เชก API เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€. เชชเซ‹เชฐเซเชŸ เชซเชพเช‡เชฌเชฐ, เช…เชชเชตเชพเชฆเซ‹ เช…เชฅเชตเชพ เช•เชšเชฐเซ‹ เชเช•เชคเซเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.
  • เชตเชพเชฏเชœเซ‡เช†เชˆเชŸเซ€ เช‡เชจ-เชชเซเชฐเซ‹เชธเซ‡เชธ JIT เช•เชฎเซเชชเชพเชˆเชฒเชฐ, เชœเซ‡ เชฐเซ‡เชฒเซเชธ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชฐเซ‚เชฌเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชตเชงเชพเชฐเชตเชพเชจเซ€ เชชเชนเซ‡เชฒเชจเชพ เชญเชพเช—เชฐเซ‚เชชเซ‡ Shopify เชˆ-เช•เซ‹เชฎเชฐเซเชธ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเชพ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชจเซ‡ เชธเซเชฅเชฟเชฐ เช…เชจเซ‡ เชคเซˆเชฏเชพเชฐ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช‰เชคเซเชชเชพเชฆเชจ เช‰เชชเชฏเซ‹เช—. เช…เช—เชพเช‰ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ MJIT JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐเชฅเซ€ เชฎเซเช–เซเชฏ เชคเชซเชพเชตเชค, เชœเซ‡ เชธเชฎเช—เซเชฐ เชชเชฆเซเชงเชคเชฟเช“เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เช…เชจเซ‡ C เชญเชพเชทเชพเชฎเชพเช‚ เชฌเชพเชนเซเชฏ เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡ เช เช›เซ‡ เช•เซ‡ YJIT Lazy Basic Block Versioning (LBBV) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชเช•เซ€เช•เซƒเชค JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช›เซ‡. LBBV เชธเชพเชฅเซ‡, JIT เชชเซเชฐเชฅเชฎ เชชเชฆเซเชงเชคเชฟเชจเซ€ เชฎเชพเชคเซเชฐ เชถเชฐเซ‚เช†เชคเชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซเช• เชธเชฎเชฏ เชชเช›เซ€ เชฌเชพเช•เซ€เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชšเชฒ เช…เชจเซ‡ เชฆเชฒเซ€เชฒเซ‹เชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเชพ เชชเช›เซ€. YJIT Linux, MacOS, BSD เช…เชจเซ‡ เช…เชจเซเชฏ UNIX เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชชเชฐ x86-64 เช…เชจเซ‡ arm64/aarch64 เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

    เชฐเซ‚เชฌเซ€เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, 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) sum = ary เชฎเชพเช‚ เชฆเชฌเชพเชฃ เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€ [0] + เช…เชฐเซ€ [1] ^^^^^^
  • เชฆเชฒเซ€เชฒเซ‹เชจเชพ เชธเซ‡เชŸเชจเซ‡ เช…เชจเซเชฏ เชชเชฆเซเชงเชคเชฟเช“ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเชตเซ‹ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช‰เชฎเซ‡เชฐเซเชฏเซ‹: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เช›เซ‡ - เชœเซ‚เชจเชพ MJIT JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‹ เชเช• เชชเซเชฐเช•เชพเชฐ, เชฐเซ‚เชฌเซ€ เชญเชพเชทเชพเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡. เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ MJIT MJIT เชตเชฐเซเช•เชฐ เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เช…เชฒเช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡.
  • เชฌเช‚เชกเชฒเชฐ 2.4 เชฎเชพเช‚, เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€ เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเชฌเช—เซเชฐเชฌ เชตเชฐเซเชเชจ เชกเชฟเชŸเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชกเชพเชฐเซเชŸ เชญเชพเชทเชพ เชฎเชพเชŸเซ‡ เชชเชฌ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชฎเชพเช‚ เชชเชฃ เชฅเชพเชฏ เช›เซ‡. เช…เช—เชพเช‰ เชตเชชเชฐเชพเชฏเซ‡เชฒ Molinillo เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชจเซ‹ RubyGems เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ PubGrub เชฆเซเชตเชพเชฐเชพ เชชเชฃ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
  • เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชฐเชคเซเชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เช…เชจเซ‡ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชตเชฐเซเชเชจเชจเชพ เช…เชชเชกเซ‡เชŸเซ‡เชก เชตเชฐเซเชเชจ.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹