เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เปเบเบกเบžเบฒเบชเบฒ Ruby 3.1

Ruby 3.1.0 เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เบงเบฑเบ”เบ–เบธเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ›เบผเปเบเบผเบกเปเบฅเบฐเบฅเบงเบกเป€เบญเบปเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ Perl, Java, Python, Smalltalk, Eiffel, Ada เปเบฅเบฐ Lisp. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” BSD ("2-clause BSDL") เปเบฅเบฐ "Ruby", เป€เบŠเบดเปˆเบ‡เบซเบกเบฒเบเป€เบ–เบดเบ‡เบชเบฐเบšเบฑเบšเบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPL เปเบฅเบฐเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš GPLv3.

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ•เบปเป‰เบ™เบ•เป:

  • เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡ JIT compiler เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบซเบกเปˆ, YJIT, เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เบชเป‰เบฒเบ‡เป‚เบ”เบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เป€เบงเบ—เบตเบเบฒเบ™เบ„เป‰เบฒ e-commerce Shopify เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบฅเบดเป€เบฅเบตเปˆเบกเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบก Ruby เบ—เบตเปˆเปƒเบŠเป‰เบเบญเบšเบ‚เบญเบ‡ Rails เปเบฅเบฐเป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบซเบผเบฒเบ. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆ เบชเบณ เบ„เบฑเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ MJIT JIT เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™, เป€เบŠเบดเปˆเบ‡เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ—เบฑเบ‡ เปเบปเบ” เปเบฅเบฐเปƒเบŠเป‰เบ•เบปเบงเบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเบ™เบญเบเปƒเบ™เบžเบฒเบชเบฒ C, เปเบกเปˆเบ™เบงเปˆเบฒ YJIT เปƒเบŠเป‰ Lazy Basic Block Versioning (LBBV) เปเบฅเบฐเบกเบตเบ•เบปเบงเบชเบฑเบ‡เบฅเบงเบก JIT เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™. เบ”เป‰เบงเบ LBBV, JIT เบ—เปเบฒเบญเบดเบ”เบฅเบงเบšเบฅเบงเบกเบžเบฝเบ‡เปเบ•เปˆเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™, เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปƒเบ™เป€เบงเบฅเบฒเบ•เปเปˆเบกเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰ YJIT, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ 22% เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš railsbench, เปเบฅเบฐ 39% เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ‚เบญเบ‡เปเบซเบผเบง. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ YJIT เป„เบ”เป‰เบ–เบทเบเบˆเปเบฒเบเบฑเบ”เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš OSes เบ„เป‰เบฒเบเบ„เบท unix เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบกเบตเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ x86-64 เปเบฅเบฐเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰, เบฅเบฐเบšเบธเบ—เบธเบ‡ "--yjit" เปƒเบ™เปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡).
  • เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ MJIT JIT compiler เป€เบเบปเปˆเบฒ. เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰ Rails, เบ‚เบฐเบซเบ™เบฒเบ” cache เบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™ (--jit-max-cache) เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบˆเบฒเบ 100 เป€เบ›เบฑเบ™ 10000 เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ JIT เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒ 1000 เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ. เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Zeitwerk of Rails, เบฅเบฐเบซเบฑเบ” JIT เบˆเบฐเบšเปเปˆเบ–เบทเบเบเบปเบเป€เบฅเบตเบเบญเบตเบเบ•เปเปˆเป„เบ›เป€เบกเบทเปˆเบญ TracePoint เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบเบฒเบ™เปƒเบ™เบŠเบฑเป‰เบ™เบฎเบฝเบ™.
  • เบกเบฑเบ™เบ›เบฐเบเบญเบšเบกเบตเบ•เบปเบงเปเบเป‰เป„เบ‚ debug.gem เบ—เบตเปˆเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ, เบšเปเปˆเบŠเป‰เบฒเบฅเบปเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบตเบšเบฑเบ, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เบ”เบตเบšเบฑเบเบ‚เบฑเป‰เบ™เบชเบนเบ‡ (VSCode เปเบฅเบฐ Chrome), เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debugging multi-threaded เปเบฅเบฐ multi-process applications, เบชเบฐเบซเบ™เบญเบ‡. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ” REPL, เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเปเบšเบšเบžเบดเป€เบชเบ”, เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบซเบผเบดเป‰เบ™เบ„เบทเบ™ snippets เบฅเบฐเบซเบฑเบ”. debugger lib/debug.rb เบ—เบตเปˆเบชเบฐเป€เปœเบตเปƒเบซเป‰เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™เป„เบ”เป‰เบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง.
    เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เปเบเบกเบžเบฒเบชเบฒ Ruby 3.1
  • เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ™เบฑเป‰เบ™โ€‹เปƒเบชเปˆโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ—โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบฅเบฒเบโ€‹เบ‡เบฒเบ™โ€‹. เบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบเปƒเบŠเป‰เปเบžเบฑเบเป€เบเบฑเบ”เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”เบ—เบตเปˆเบกเบตเปƒเบ™เบ•เบปเบง เปเบฅเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ error_highlight. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ โ€œ--disable-error_highlightโ€. $ ruby โ€‹โ€‹test.rb test.rb:1:in "": undefined method "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ เป€เบˆเบปเป‰เบฒเปเบฒเบเป€เบ–เบดเบ‡เบšเป? เป€เบ—เบทเปˆเบญ
  • เป€เบ›เบทเบญเบเบซเบธเป‰เบกเบ™เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปเบšเบšเป‚เบ•เป‰เบ•เบญเบš IRB (REPL, Read-Eval-Print-Loop) เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒ (เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบžเบดเบก, เบ„เปเบฒเบŠเบตเป‰เบšเบญเบเบˆเบฐเบชเบฐเปเบ”เบ‡เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™, เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบเบฑเบš Tab เบซเบผเบท Shift+. เบ›เบธเปˆเบกเปเบ–เบš). เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบเบฒเบ™โ€‹เบชเบทเบšโ€‹เบ•เปเปˆโ€‹, เบเปˆเบญเบ‡โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบˆเบฐโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบเป‰โ€‹เบ„เบฝเบ‡โ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เป€เบญโ€‹เบเบฐโ€‹เบชเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เบเบฑเบšโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบฅเบทเบญเบโ€‹. เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ›เบธเปˆเบกเบฅเบฑเบ”เปเบ›เป‰เบ™เบžเบดเบก Alt+d เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบชเบฐเบšเบฑเบšเป€เบ•เบฑเบก.
    เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ›เปเบเบกเบžเบฒเบชเบฒ Ruby 3.1
  • syntax เบžเบฒเบชเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปˆเบฒเปƒเบ™ hash literals เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบ‚เป‰เบฒเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ—เบ™เบ—เบตเปˆเบ„เบณเบงเปˆเบฒ โ€œ{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
  • เบžเบฒเบชเบฒ annotation เบ›เบฐเป€เบžเบ” RBS, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป‚เบ›เบฅเปเบเบฅเบกเปเบฅเบฐเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเปƒเบŠเป‰เป„เบ”เป‰, เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป€เบ—เบดเบ‡เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เบฐเป€เบžเบ”เป‚เบ”เบเปƒเบŠเป‰เบชเบฑเบ™เบเบฒเบฅเบฑเบ "<", เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ™เบฒเบกเปเบเบ‡เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ—เบปเปˆเบงเป„เบ›, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบš เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”, เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบซเบกเปˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
  • เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบ›เบฐเป€เบžเบ”เบชเบฐเบ–เบดเบ”เบ‚เบญเบ‡ TypePro, เป€เบŠเบดเปˆเบ‡เบชเป‰เบฒเบ‡ RBS annotations เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, add-on เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบก TypePro เบเบฑเบšเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™ VSCode).
  • เบฅเบณเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบกเบญเบšเปเบฒเบเบซเบผเบฒเบเบญเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ "foo[0], bar[0] = baz, qux" เป„เบ”เป‰เบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ baz, qux, foo, bar, เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ foo, bar, baz, qux.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบชเปเบฒเบฅเบฑเบšเบชเบฐเบ•เบฃเบดเบ‡เป‚เบ”เบเปƒเบŠเป‰เบเบปเบ™เป„เบ VVA (Variable Width Allocation).
  • เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”เบ—เบตเปˆเบกเบตเปƒเบ™เบ•เบปเบงเปเบฅเบฐเบ—เบตเปˆเบฅเบงเบกเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เปเบžเบฑเบเป€เบเบฑเบ” net-ftp, net-imap, net-pop, net-smtp, matrix, prime เปเบฅเบฐ debug เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบ•เบปเบง.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™