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

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

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

  • เชเช• เชจเชตเซเช‚ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เช‡เชจ-เชชเซเชฐเซ‹เชธเซ‡เชธ JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐ, YJIT เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡เชจเซ‡ Shopify เช‡-เช•เซ‹เชฎเชฐเซเชธ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเชจเชพ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชฐเซ‡เชฒเซเชธ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เช…เชจเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชฐเซ‚เชฌเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชจเซ€ เชชเชนเซ‡เชฒเชจเชพ เชญเชพเช—เชฐเซ‚เชชเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช…เช—เชพเช‰ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ MJIT JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐเชฅเซ€ เชฎเซเช–เซเชฏ เชคเชซเชพเชตเชค, เชœเซ‡ เชธเชฎเช—เซเชฐ เชชเชฆเซเชงเชคเชฟเช“เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เช…เชจเซ‡ C เชญเชพเชทเชพเชฎเชพเช‚ เชฌเชพเชนเซเชฏ เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡ เช เช›เซ‡ เช•เซ‡ YJIT Lazy Basic Block Versioning (LBBV) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชเช•เซ€เช•เซƒเชค JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช›เซ‡. LBBV เชธเชพเชฅเซ‡, JIT เชชเซเชฐเชฅเชฎ เชชเชฆเซเชงเชคเชฟเชจเซ€ เชฎเชพเชคเซเชฐ เชถเชฐเซ‚เช†เชคเชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซเช• เชธเชฎเชฏ เชชเช›เซ€ เชฌเชพเช•เซ€เชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‡ เช›เซ‡, เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชšเชฒ เช…เชจเซ‡ เชฆเชฒเซ€เชฒเซ‹เชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเชพ เชชเช›เซ€. YJIT เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชฐเซ‡เชฒเซเชธเชฌเซ‡เชจเซเชš เชŸเซ‡เชธเซเชŸ เชšเชฒเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ 22% เชตเชงเชพเชฐเซ‹ เชจเซ‹เช‚เชงเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เชฒเชฟเช•เซเชตเชฟเชก-เชฐเซ‡เชจเซเชกเชฐ เชŸเซ‡เชธเซเชŸเชฎเชพเช‚ 39% เชตเชงเชพเชฐเซ‹ เชจเซ‹เช‚เชงเชพเชฏเซ‹ เชนเชคเซ‹. YJIT เชนเชพเชฒเชฎเชพเช‚ x86-64 เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชตเชพเชณเซ€ เชธเชฟเชธเซเชŸเชฎเซ‹ เชชเชฐ เชฏเซเชจเชฟเช•เซเชธ-เชœเซ‡เชตเซ€ OS เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชชเซ‚เชฐเชคเซเช‚ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡ เช…เชจเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช…เช•เซเชทเชฎ เช›เซ‡ (เชธเช•เซเชฐเชฟเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏเชฎเชพเช‚ "--yjit" เชซเซเชฒเซ‡เช—เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹).
  • เชœเซ‚เชจเชพ MJIT JIT เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซเช‚ เชฌเชนเซ‡เชคเชฐ เชชเซเชฐเชฆเชฐเซเชถเชจ. เชฐเซ‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชฎเชพเชŸเซ‡, เชกเชฟเชซเซ‹เชฒเซเชŸ เชฎเชนเชคเซเชคเชฎ เช•เซ‡เชถ เช•เชฆ (-jit-max-cache) 100 เชฅเซ€ เชตเชงเชพเชฐเซ€เชจเซ‡ 10000 เชธเซ‚เชšเชจเชพเช“ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. 1000 เชฅเซ€ เชตเชงเซ เชธเซ‚เชšเชจเชพเช“เชตเชพเชณเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชฎเชพเชŸเซ‡ JIT เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซเชฏเซเช‚. เชฐเซ‡เชฒเซเชธเชจเชพ Zeitwerk เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชตเชฐเซเช— เช‡เชตเซ‡เชจเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชŸเซเชฐเซ‡เชธเชชเซ‹เช‡เชจเซเชŸ เชธเช•เซเชทเชฎ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ JIT เช•เซ‹เชกเชจเซ‡ เช›เซ‹เชกเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ‹ เชจเชฅเซ€.
  • เชคเซ‡เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชชเซเชจเชƒเชฒเซ‡เช–เชฟเชค debug.gem เชกเซ€เชฌเช—เชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชฐเซ€เชฎเซ‹เชŸ เชกเซ€เชฌเช—เซ€เช‚เช—เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชกเซ€เชฌเช— เช•เชฐเซ‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เช…เชฆเซเชฏเชคเชจ เชกเซ€เชฌเช—เซ€เช‚เช— เชˆเชจเซเชŸเชฐเชซเซ‡เชธ (VSCode เช…เชจเซ‡ Chrome) เชธเชพเชฅเซ‡ เชธเช‚เช•เชฒเชจเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเซ‡ เช›เซ‡, เชฎเชฒเซเชŸเซ€-เชฅเซเชฐเซ‡เชกเซ‡เชก เช…เชจเซ‡ เชฎเชฒเซเชŸเซ€-เชชเซเชฐเซ‹เชธเซ‡เชธ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. REPL เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ, เช…เชฆเซเชฏเชคเชจ เชŸเซเชฐเซ‡เชธเชฟเช‚เช— เช•เซเชทเชฎเชคเชพเช“ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เช•เซ‹เชก เชธเซเชจเชฟเชชเซ‡เชŸเซเชธ เชฐเซ‡เช•เซ‹เชฐเซเชก เช…เชจเซ‡ เชฐเชฟเชชเซเชฒเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เช—เชพเช‰ เช“เชซเชฐ เช•เชฐเชพเชฏเซ‡เชฒ เชกเซ€เชฌเช—เชฐ lib/debug.rb เชจเซ‡ เช†เชงเชพเชฐ เชตเชฟเชคเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡.
    เชฐเซ‚เชฌเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ 3.1
  • เช•เซ‰เชฒ เชฌเซ‡เช• เชŸเซเชฐเซ‡เชธ เชฐเชฟเชชเซ‹เชฐเซเชŸเซเชธเชฎเชพเช‚ เชญเซ‚เชฒเซ‹เชจเซเช‚ เชตเชฟเชเซเชฏเซเช…เชฒ เชนเชพเช‡เชฒเชพเช‡เชŸเชฟเช‚เช— เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเซเช‚. เชฌเชฟเชฒเซเชŸ-เช‡เชจ เช…เชจเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ-เชธเช•เซเชทเชฎ เชฐเชคเซเชจ เชชเซ‡เช•เซ‡เชœ error_highlight เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชญเซ‚เชฒ เชซเซเชฒเซ‡เช—เชฟเช‚เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชญเซ‚เชฒ เชซเซเชฒเซ‡เช—เชฟเช‚เช—เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ "--disable-error_highlight" เชธเซ‡เชŸเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. $ ruby โ€‹โ€‹test.rb test.rb:1: "" เชฎเชพเช‚: 1 เชฎเชพเชŸเซ‡ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชชเชฆเซเชงเชคเชฟ "เชธเชฎเชฏ": เชชเซ‚เชฐเซเชฃเชพเช‚เช• (NoMethodError) 1.time {} ^^^^^ เชถเซเช‚ เชคเชฎเชพเชฐเซ‹ เชฎเชคเชฒเชฌ เชนเชคเซ‹? เชตเช–เชค
  • เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เช—เชฃเชคเชฐเซ€เช“เชจเซเช‚ เชถเซ‡เชฒ IRB (REPL, Read-Eval-Print-Loop) เชฆเชพเช–เชฒ เช•เชฐเซ‡เชฒ เช•เซ‹เชกเชจเซ€ เชธเซเชตเชšเชพเชฒเชฟเชค เชชเซ‚เชฐเซเชฃเชคเชพเชจเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡ (เชœเซ‡เชฎ เชคเชฎเซ‡ เชŸเชพเช‡เชช เช•เชฐเซ‹ เช›เซ‹, เช‡เชจเชชเซเชŸ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชธเชพเชฅเซ‡ เชเช• เชธเช‚เช•เซ‡เชค เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชœเซ‡เชจเซ€ เชตเชšเซเชšเซ‡ เชคเชฎเซ‡ Tab เช…เชฅเชตเชพ Shift+ เชธเชพเชฅเซ‡ เช–เชธเซ‡เชกเซ€ เชถเช•เซ‹ เช›เซ‹. เชŸเซ‡เชฌ เช•เซ€). เชšเชพเชฒเซ เชตเชฟเช•เชฒเซเชช เชชเชธเช‚เชฆ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชจเชœเซ€เช•เชฎเชพเช‚ เชเช• เชธเช‚เชตเชพเชฆ เชฌเซ‹เช•เซเชธ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชœเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เช†เช‡เชŸเชฎ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เช•เซ€เชฌเซ‹เชฐเซเชก เชถเซ‹เชฐเซเชŸเช•เชŸ Alt+d เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเช‚เชชเซ‚เชฐเซเชฃ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.
    เชฐเซ‚เชฌเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเชจเซเช‚ เชชเซเชฐเช•เชพเชถเชจ 3.1
  • เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ เชนเชตเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชนเซ‡เชถ เชฒเชฟเชŸเชฐเชฒเซเชธ เช…เชจเซ‡ เช•เซ€เชตเชฐเซเชก เชฆเชฒเซ€เชฒเซ‹เชฎเชพเช‚เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เช›เซ‹เชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, "{x: x, y: y}" เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซ‡ เชฌเชฆเชฒเซ‡ เชนเชตเซ‡ เชคเชฎเซ‡ "{x:, y:}" เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชจเซ‡ "foo(x: x, y: y)" - foo( x:, y:)"
  • เชธเชฟเช‚เช—เชฒ-เชฒเชพเช‡เชจ เชชเซ‡เชŸเชฐเซเชจ เชฎเซ‡เชšเซ‹ เชฎเชพเชŸเซ‡ เชธเซเชฅเชฟเชฐ เชธเชฎเชฐเซเชฅเชจ (ary => [x, y, z]), เชœเซ‡ เชนเชตเซ‡ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เชคเชฐเซ€เช•เซ‡ เชซเซเชฒเซ‡เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจเชฅเซ€.
  • เชชเซ‡เชŸเชฐเซเชจ เชฎเซ‡เชšเซ‹เชฎเชพเช‚ "^" เช“เชชเชฐเซ‡เชŸเชฐ เชนเชตเซ‡ เชฎเชจเชธเซเชตเซ€ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชธเชฎเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • เชธเชฟเช‚เช—เชฒ-เชฒเชพเช‡เชจ เชชเซ‡เชŸเชฐเซเชจ เชฎเซ‡เชšเซ‹เชฎเชพเช‚, เชคเชฎเซ‡ เช•เซŒเช‚เชธเชจเซ‡ เช›เซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • เช†เชฐเชฌเซ€เชเชธ เชŸเชพเชˆเชช เชเชจเซ‹เชŸเซ‡เชถเชจ เชฒเซ‡เช‚เช—เซเชตเซ‡เชœ, เชœเซ‡ เชคเชฎเชจเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชชเซเชฐเช•เชพเชฐเซ‹ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฆเซ‡ เช›เซ‡, เชคเซ‡เชฎเชพเช‚ โ€œ<โ€ เชšเชฟเชนเซเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเช•เชพเชฐ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธเชจเซ€ เช‰เชชเชฒเซ€ เชฎเชฐเซเชฏเชพเชฆเชพ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡เชจเชฐเชฟเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เช‰เชชเชจเชพเชฎเซ‹ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช‰เชฎเซ‡เชฐเซเชฏเซ‹ เช›เซ‡. เชฐเชคเซเชจเซ‹เชจเชพ เชธเช‚เชšเชพเชฒเชจ เชฎเชพเชŸเซ‡ เชธเช‚เช—เซเชฐเชน, เชธเซเชงเชพเชฐเซ‡เชฒ เชชเซเชฐเชฆเชฐเซเชถเชจ เช…เชจเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เช…เชจเซ‡ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชจเชตเชพ เชนเชธเซเชคเชพเช•เซเชทเชฐเซ‹เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเซ‹.
  • TypePro เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเช‡เชช เชตเชฟเชถเซเชฒเซ‡เชทเช•เชฎเชพเช‚ เชธเช‚เช•เชฒเชฟเชค เชตเชฟเช•เชพเชธ เชตเชพเชคเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เชธเชฎเชฐเซเชฅเชจ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ เชธเซเชชเชทเซเชŸ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชตเชฟเชจเชพ เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฐ เช†เชงเชพเชฐเชฟเชค RBS เชเชจเซ‹เชŸเซ‡เชถเชจเซเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, VSCode เชเชกเชฟเชŸเชฐ เชธเชพเชฅเซ‡ TypePro เชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเชก-เช“เชจ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡).
  • เชฌเชนเซเชตเชฟเชง เชธเซ‹เช‚เชชเชฃเซ€เช“ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ‹ เช•เซเชฐเชฎ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เช—เชพเช‰ "foo[0], bar[0] = baz, qux" เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเชพ เช˜เชŸเช•เซ‹เชจเซ‡ baz, qux, foo, bar เช•เซเชฐเชฎเชฎเชพเช‚ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชนเชคเซ€, เชชเชฐเช‚เชคเซ เชนเชตเซ‡ foo, bar, baz, qux.
  • VWA (เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒ เชตเชฟเชกเซเชฅ เชเชฒเซ‹เช•เซ‡เชถเชจ) เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—เซเชธ เชฎเชพเชŸเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชซเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เชธเชฎเชฐเซเชฅเชจ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚.
  • เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชฐเชคเซเชจ เชฎเซ‹เชกเซเชฏเซเชฒเซ‹ เช…เชจเซ‡ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชตเชฐเซเชเชจเชจเชพ เช…เชชเชกเซ‡เชŸเซ‡เชก เชตเชฐเซเชเชจ. เชจเซ‡เชŸ-เชเชซเชŸเซ€เชชเซ€, เชจเซ‡เชŸ-เช‡เชฎเซ‡เชช, เชจเซ‡เชŸ-เชชเซ‹เชช, เชจเซ‡เชŸ-เชเชธเชเชฎเชŸเซ€เชชเซ€, เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ, เชชเซเชฐเชพเช‡เชฎ เช…เชจเซ‡ เชกเซ€เชฌเช— เชชเซ‡เช•เซ‡เชœเซ‹ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เช›เซ‡.

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

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