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

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

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

  • เบ—เบปเบ”เบฅเบญเบ‡ เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบเบฒเบ™โ€‹เบˆเบฑเบšโ€‹เบ„เบนเปˆโ€‹เบฎเบนเบšโ€‹เปเบšเบš (เบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบฎเบนเบšเปเบšเบš), เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” iterate เปƒเบ™เป„เบฅเบเบฐเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปƒเบซเป‰เปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบกเบตเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบเบฑเบšเบฎเบนเบšเปเบšเบš.

    case [0, [1, 2, 3]] เปƒเบ™ [a, [b, *c]] pa #=> 0
    pb #=>1
    pc #=> [2, 3] เบˆเบปเบš

    เบเปเบฅเบฐเบ™เบต {a: 0, b: 1}
    เปƒเบ™{a:0,x:1}
    :เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰
    เปƒเบ™ {a: 0, b: var}
    p var #=> 1
    เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบ

  • เปเบเบฐเบ‚เบญเบ‡เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปเบšเบšเป‚เบ•เป‰เบ•เบญเบš irb (REPL, Read-Eval-Print-Loop) เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบซเบผเบฒเบเปเบ–เบง, เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš readline. relineเบ‚เบฝเบ™เปƒเบ™ Ruby. เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ rdoc เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบเปˆเบฝเบงเบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™, เป‚เบกเบ”เบนเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ irb. เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ™เบฑเป‰เบ™เบชเบตเบ‚เบญเบ‡เบชเบฒเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™ Binding #irb เปเบฅเบฐเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบเบฒเบงเบฑเบ”เบ–เบธเบŠเบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™.

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

  • เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™ (Compaction GC) เบ—เบตเปˆเบชเบฒเบกเบฒเบ” defragment เบžเบฒเบเบžเบทเป‰เบ™เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŠเป‰เบฒเปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เปเบ•เบเปเบเบเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Ruby เบซเบผเบฒเบ threaded เบšเบฒเบ‡. เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบงเบฑเบ”เบ–เบธเปƒเบชเปˆ heap เป„เบ”เป‰ เบชเบฐเป€เปœเบต เบงเบดเบ—เบตเบเบฒเบ™ GC.compact เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ heap เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™
    CoW (copy-on-write).

  • เบ›เบฐเบ•เบดเบšเบฑเบ” เบเบฒเบ™เบเบฐเบเบฝเบกเป€เบžเบทเปˆเบญเปเบเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เปเบฒเปเบซเบ™เปˆเบ‡เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ ("def foo(a,b,c)") เปเบฅเบฐเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ ("def foo(key: val)"). เบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เปเบฅเบฐเบ•เปเบฒเปเบซเบ™เปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เปเบฅเบฐเบˆเบฐเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เบชเบฒเบ‚เบฒ Ruby 3.0. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเป€เบ›เบฑเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™, เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ„เปเบฒเบ—เบตเปˆเปƒเบŠเป‰เป€เบ›เบฑเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต hash เบชเบธเบ”เบ—เป‰เบฒเบ, เปเบฅเบฐเปเบเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบชเบธเบ”เบ—เป‰เบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ„เปเบฒเบซเบฅเบฑเบ.

    def foo(เบ„เบต: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo({key: 42}) #เป€เบ•เบทเบญเบ™
    def foo(**kw); เบชเบดเป‰เบ™เบชเบธเบ”; foo({key: 42}) #เป€เบ•เบทเบญเบ™
    def foo(เบ„เบต: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo(**{key: 42}) # เบ•เบปเบเบฅเบปเบ‡
    def foo(**kw); เบชเบดเป‰เบ™เบชเบธเบ”; foo(**{key: 42}) # เบ•เบปเบเบฅเบปเบ‡

    def foo(h, **kw); เบชเบดเป‰เบ™เบชเบธเบ”; foo(key: 42) # เป€เบ•เบทเบญเบ™
    def foo(h, เบ„เบต: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo(key: 42) # เป€เบ•เบทเบญเบ™
    def foo(h, **kw); เบชเบดเป‰เบ™เบชเบธเบ”; foo({key: 42}) # เบ•เบปเบเบฅเบปเบ‡
    def foo(h, เบ„เบต: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo({key: 42}) # เบ•เบปเบเบฅเบปเบ‡

    def foo(h={}, เบซเบผเบฑเบ: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo("เบ„เบต" => 43, เบ›เบธเปˆเบก: 42) #เป€เบ•เบทเบญเบ™
    def foo(h={}, เบซเบผเบฑเบ: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo({"key" => 43, เบ„เบต: 42}) # เป€เบ•เบทเบญเบ™
    def foo(h={}, เบซเบผเบฑเบ: 42); เบชเบดเป‰เบ™เบชเบธเบ”; foo({"key" => 43}, เบ›เบธเปˆเบก: 42) # เบ•เบปเบเบฅเบปเบ‡

    def foo(opt={}); เบชเบดเป‰เบ™เบชเบธเบ”; foo(เบ„เบต: 42) # เบ•เบปเบเบฅเบปเบ‡

    def foo(h, **nil); เบชเบดเป‰เบ™เบชเบธเบ”; foo(key: 1) # ArgumentError
    def foo(h, **nil); เบชเบดเป‰เบ™เบชเบธเบ”; foo(**{key: 1}) # ArgumentError
    def foo(h, **nil); เบชเบดเป‰เบ™เบชเบธเบ”; foo("str" โ€‹โ€‹โ€‹> 1) # ArgumentError
    def foo(h, **nil); เบชเบดเป‰เบ™เบชเบธเบ”; foo({key: 1}) # เบ•เบปเบเบฅเบปเบ‡
    def foo(h, **nil); เบชเบดเป‰เบ™เบชเบธเบ”; foo({"str" โ€‹โ€‹โ€‹โ€‹=> 1}) # เบ•เบปเบเบฅเบปเบ‡

    h = {}; def foo(*a) เบชเบดเป‰เบ™เบชเบธเบ”; foo(**h) # [] h = {}; def foo(a) เบชเบดเป‰เบ™เบชเบธเบ”; foo(**h) # {} เปเบฅเบฐเบ„เบณเป€เบ•เบทเบญเบ™
    h = {}; def foo(*a) a end; foo(h) # [{}] h = {}; def foo(a) เบชเบดเป‰เบ™เบชเบธเบ”; foo(h) # {}

  • เป‚เบญเบเบฒเบ” เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เป€เบฅเบโ€‹เบŠเบทเปˆโ€‹เป‚เบ”เบโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ•เบปเบงโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบเบฒเบ™ block.

    [1, 2, 3].each { puts @1 } # เบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš [1, 2, 3].each { |i| เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบ }

  • เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบฎเบญเบ‡เบฎเบฑเบšเป„เบฅเบเบฐเบ—เบตเปˆเบšเปเปˆเบกเบตเบ„เปˆเบฒเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.

    ary[..3] # เบ„เป‰เบฒเบเบเบฑเบš ary[0..3] rel.where(เบ‚เบฒเบ: ..100)

  • Added Enumerable#tally method, เป€เบŠเบดเปˆเบ‡เบ™เบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ„เบฑเป‰เบ‡เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบเบตเบ”เบ‚เบถเป‰เบ™.

    ["a", "b", "c", "b"].tally
    #=> {"a"=>1, "b">2, "c" => 1}

  • เบเบฒเบ™เป‚เบ—เบ”เป‰เบงเบเบงเบดเบ—เบตเบชเปˆเบงเบ™เบ•เบปเบงเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เบ”เป‰เบงเบเบ•เบปเบงเปœเบฑเบ‡เบชเบท "เบ•เบปเบ™เป€เบญเบ‡".

    defoo
    เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบ
    เป€เบญเบเบฐเบŠเบปเบ™: foo
    self.foo

  • Added Enumerator::Lazy #เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบเบฐโ€‹เบ•เบทโ€‹เบฅเบทโ€‹เบฅเบปเป‰เบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบฑเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เบˆเบฒเบ enumerator lazy (Enumerator::Lazy).

    a = %w(foo bar baz)
    e = a.lazy.map {|x| x.upcase }.เปเบœเบ™เบ—เบตเปˆ {|x| x + "!" }.เบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™
    p e.class #=> Enumerator
    e.map {|x| x + "?" } #=> [โ€œFOO!?โ€, โ€œBAR!?โ€, โ€œBAZ!?โ€]

  • เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ compiler JIT เบ—เบปเบ”เบฅเบญเบ‡เป„เบ”เป‰เบชเบทเบšเบ•เปเปˆ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™เบžเบฒเบชเบฒ Ruby เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. Ruby's JIT compiler เบ—เปเบฒเบญเบดเบ”เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” C เปƒเบชเปˆเปเบœเปˆเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ—เบซเบฒ C compiler เบžเบฒเบเบ™เบญเบเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ (เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป‚เบ—เบซเบฒ GCC, Clang, เปเบฅเบฐ Microsoft VC++). เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ inline เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบเบฒเบ™เป€เบฅเบทเบญเบเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ "--jit-min-calls" เปเบกเปˆเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบˆเบฒเบ 5 เบซเบฒ 10000, เปเบฅเบฐ "--jit-max- cacheโ€ เบˆเบฒเบ 1000 เบซเบฒ 100 .
  • เบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ CGI.escapeHTML, Monitor เปเบฅเบฐ MonitorMixin.
  • Module#name, true.to_s, false.to_s, เปเบฅเบฐ nil.to_s เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบชเบฐเบ•เบฃเบดเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™เบ—เบตเปˆเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบฅเบฐเบšเบธ.
  • เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ„เบนเปˆเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ RubyVM::InstructionSequence#to_binary method เป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡;
  • เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™เบ•เบปเบง, เบฅเบงเบกเบ—เบฑเบ‡
    Bundler 2.1.2, RubyGems 3.1.2,
    Racc 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    String Scanner 1.0.3;

  • เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป„เบ”เป‰เบเป‰เบฒเบเบˆเบฒเบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เป„เบ›เบชเบนเปˆเบŠเบธเบ”เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”เบžเบฒเบเบ™เบญเบ
    CMath (เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ” cmath),
    เบชเบฐเปเบเบ™ (scanf gem),
    Shell (เปเบเป‰เบงเบ›เบฐเป€เบชเบตเบ”เปเบเบฐ)
    Synchronizer (Sync gem),
    เบเบฐเบ—เบนเป‰เบฅเปเบ–เป‰เบฒ (thwait gem),
    E2MM (e2mmap gem).

  • เป‚เบกเบ”เบนเบ™ stdlib เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบทเบเบ•เบตเบžเบดเบกเบขเบนเปˆเปƒเบ™ rubygems.org:
    เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™,
    cgi,
    เบœเบนเป‰โ€‹เปเบ—เบ™โ€‹,
    getoptlong,
    Net Pop,
    เบชเบธเบ”เบ—เบด smtp,
    เป€เบ›เบตเบ” 3,
    pstore,
    เป‚เบชเบ”เบ•เบฑเบ™. เป‚เบกเบ”เบนเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบšเปเปˆเป„เบ”เป‰เบเป‰เบฒเบเป„เบ› rubygems.org
    เบ™เบฑเบโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เบเบฒเบ™โ€‹,
    เบซเบกเบปเบ”โ€‹เป€เบงโ€‹เบฅเบฒ,
    เบ•เบดเบ”เบ•เบฒเบก,
    uri,
    yaml, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ ruby-core.

  • เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ Ruby เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก C เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C99.

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

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