рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 2.7.0 рдХреЛ рд░рд┐рд▓реАрдЬ

рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐ рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬ рд░реБрдмреА реи.2.7.0, рдПрдХ рдЧрддрд┐рд╢реАрд▓, рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рдЬреБрди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдХрд╛рд╕рдорд╛ рдЕрддреНрдпрдзрд┐рдХ рдХреБрд╢рд▓ рдЫ рд░ Perl, Java, Python, Smalltalk, Eiffel, Ada, рд░ Lisp рдХреЛ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб BSD ("2-рдЦрдгреНрдб BSDL") рд░ "рд░реБрдмреА" рдЗрдЬрд╛рдЬрддрдкрддреНрд░рд╣рд░реВ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ GPL рдЗрдЬрд╛рдЬрддрдкрддреНрд░рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ рд░ GPLv3 рд╕рдБрдЧ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЙрдкрдпреБрдХреНрдд рдЫред Ruby 2.7 рдпреЛрдЬрдирд╛рдмрджреНрдз рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрдЫрд┐рдХреЛ рд╕рд╛рддреМрдВ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рд╣реЛ рдЬрд╕рд▓реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реБрдзрд╛рд░рд╣рд░реВ рддрдпрд╛рд░ рдЧрд░реНрди рдПрдХ рд╡рд░реНрд╖ рд▓рд┐рдиреНрдЫ рд░ рдкреНрд░рддреНрдпреЗрдХ 2-3 рдорд╣рд┐рдирд╛рдорд╛ рдорд░реНрдордд рд░рд┐рд▓реАрдЬрд╣рд░реВ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫред

рдореБрдЦреНрдп рд╕реБрдзрд╛рд░рд╣рд░реВ:

  • рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди (рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди), рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджрд┐рдЗрдПрдХреЛ рд╡рд╕реНрддреБрдорд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рд░ рдврд╛рдБрдЪрд╛рд╕рдБрдЧ рдорд┐рд▓реНрджреЛ рдЫ рднрдиреЗ рдорд╛рди рддреЛрдХреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

    рдХреЗрд╕ [0, [1, 2, 3]] [a, [b, *c]] pa #=> 0 рдорд╛
    pb #=> рез
    pc #=> [реи, рей] рдЕрдиреНрддреНрдп

    рдХреЗрд╕ {a: 0, b: 1}
    {a: 0, x: 1} рдорд╛
    : рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп
    {a: 0, b: var} рдорд╛
    p var #=> рез
    рдЕрдиреНрдд

  • рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЧрдгрдирд╛ irb (REPL, Read-Eval-Print-Loop) рдХреЛ рд╢реЗрд▓рд▓реЗ рдЕрдм рдмрд╣реБ-рд▓рд╛рдЗрди рд╕рдореНрдкрд╛рджрди рд╕реБрд╡рд┐рдзрд╛ рджрд┐рдиреНрдЫ, рд░рд┐рдбрд▓рд╛рдЗрди-рдХрдореНрдкреНрдпрд╛рдЯрд┐рдмрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫред рд░рд┐рд▓рд╛рдЗрди, рд░реБрдмреА рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛред rdoc рд╕рдорд░реНрдерди рдПрдХреАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рддрдкрд╛рдИрдВрд▓рд╛рдИ irb рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдХреНрд╖рд╛рд╣рд░реВ, рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рд░ рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рд╕рдиреНрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рд╣реЗрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред Binding#irb рд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рдирд┐рд░реАрдХреНрд╖рдгрдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рдорд╛рд░реНрдлрдд рджреЗрдЦрд╛рдЗрдПрдХреЛ рдХреЛрдбрдХреЛ рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рд░рдВрдЧ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдЩ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛред

    рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 2.7.0 рдХреЛ рд░рд┐рд▓реАрдЬ

  • рдПрдХ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ (рдХрдореНрдкреНрдпрд╛рдХреНрд╢рди GC) рдердкрд┐рдпреЛ рдЬрд╕рд▓реЗ рдореЗрдореЛрд░реАрдХреЛ рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ рдбрд┐рдлреНрд░реЗрдЧреНрдореЗрдиреНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫ, рдореЗрдореЛрд░реА рдЦрдгреНрдбреАрдХрд░рдгрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдкреНрд░рджрд░реНрд╢рди рд░ рдореЗрдореЛрд░реА рдЦрдкрдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИ рдЬреБрди рдХреЗрд╣реА рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд░реБрдмреА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд╣реБрдиреНрдЫред рдвреЗрд░рдорд╛ рд╡рд╕реНрддреБрд╣рд░реВ рдкреНрдпрд╛рдХ рдЧрд░реНрди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд GC.compact рд╡рд┐рдзрд┐, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдШрдЯрд╛рдЙрди рд░ рд╕рдЮреНрдЪрд╛рд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд┐рдк рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
    CoW (рдкреНрд░рддрд┐рд▓рд┐рдкрд┐-рдЕрди-рд░рд╛рдЗрдЯ)ред

  • рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪреА рд╕реНрдерд┐рддрд┐ ("def foo(a,b,c)") рд░ рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВ ("def foo (key: val)") рдорд╛ рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХрд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрди рддрдпрд╛рд░реА рдЧрд░реНрджреИред рдХреБрдЮреНрдЬреА рд╢рдмреНрджрд╣рд░реВ рд░ рд╕реНрдерд┐рддрд┐рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддрд░реНрдХ рд░реВрдкрд╛рдиреНрддрд░рдг рд╣рдЯрд╛рдЗрдПрдХреЛ рдЫ рд░ рд░реБрдмреА 3.0 рд╢рд╛рдЦрд╛рдорд╛ рд╕рдорд░реНрдерди рдЧрд░рд┐рдиреЗ рдЫреИрдиред рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛, рдпрд╕рд▓реЗ рдЕрдиреНрддрд┐рдо рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрд▓рд╛рдИ рдХрд┐рд╡рд░реНрдб рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдЕрдиреНрддрд┐рдо рд╣реНрдпрд╛рд╕ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдХрд┐рд╡рд░реНрдб-рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрджреИ, рд░ рдЕрдиреНрддрд┐рдо рддрд░реНрдХрд▓рд╛рдИ рдкреЛрдЬрд┐рд╢рдирд▓ рд░ рдХрд┐рд╡рд░реНрдб рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реЗрдХреЛ рдЫред

    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("key" => 43, key: 42) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЗрдпреЛ
    def foo(h={}, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo({"key" => 43, key: 42}) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЗрдпреЛ
    def foo(h={}, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo({"key" => 43}, key: 42) # рдареАрдХ рдЫ

    def foo(opt={}); рдЕрдиреНрддреНрдп; foo (рдХреБрдЮреНрдЬреА: 42) # рдареАрдХ рдЫ

    def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo(key: 1) #ArgumentError
    def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo(**{key: 1}) # ArgumentError
    def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo("str" тАЛтАЛ=> 1) # ArgumentError
    def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo({key: 1}) # рдареАрдХ рдЫ
    def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo({"str" тАЛтАЛ=> 1}) # рдареАрдХ рдЫ

    h = {}; def foo(*a) a end; foo(**h) # [] h = {}; def foo(a) a end; foo(**h) # {} рд░ рдЪреЗрддрд╛рд╡рдиреА
    h = {}; def foo (*a) рдЕрдиреНрддреНрдп; foo(h) # [{}] h = {}; def foo (a) рдЕрдиреНрддреНрдп; foo(h) # {}

  • рдЕрд╡рд╕рд░ рдмреНрд▓рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдирдореНрдмрд░ рдЧрд░рд┐рдПрдХреЛ рдЪрд░ рдирд╛рдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред

    [рез, реи, рей]редрдкреНрд░рддреНрдпреЗрдХ { @1 рд░рд╛рдЦреНрдЫ } # рдЙрд╕реНрддреИ [рез, реи, рей]редрдкреНрд░рддреНрдпреЗрдХ { |i| рд░рд╛рдЦреНрдЫреБ }

  • рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдорд╛рди рдмрд┐рдирд╛ рджрд╛рдпрд░рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдердиред

    ary[..3] # ary [0..3] rel.where (рдмрд┐рдХреНрд░реА: ..100) рд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ

  • рдЧрдгрдирдпреЛрдЧреНрдп #tally рд╡рд┐рдзрд┐ рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред

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

  • рд╢рд╛рдмреНрджрд┐рдХ "рд╕реНрд╡" рдХреЛ рд╕рд╛рде рдПрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐ рдХрд▓ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ

    def foo
    рдЕрдиреНрдд
    рдирд┐рдЬреА: foo
    self.foo

  • рдердкрд┐рдПрдХреЛ рдЧрдгрдХ::Lazy#eager рд╡рд┐рдзрд┐ рдЕрд▓реНрдЫреА рдЧрдгрдирд╛рдХрд░реНрддрд╛ (рдЧрдгрдХ::Lazy) рдмрд╛рдЯ рдирд┐рдпрдорд┐рдд рдЧрдгрдирд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиред

    a = %w (foo bar baz)
    e = a.lazy.map {|x| x.upcase }.рдирдХреНрд╕рд╛ {|x| x + "!" }. рдЙрддреНрд╕реБрдХ
    p e.class #=> рдЧрдгрдирд╛рдХрд░реНрддрд╛
    p e.map {|x| x + "?" } #=> [тАЬFOO!?тАЭ, тАЬBAR!?тАЭ, тАЬBAZ!?тАЭ]

  • рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ JIT рдХрдореНрдкрд╛рдЗрд▓рд░рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рдЫ, рдЬрд╕рд▓реЗ рд░реВрдмреА рднрд╛рд╖рд╛рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рдирд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫред рд░реБрдмреАрдХреЛ JIT рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдкрд╣рд┐рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ C рдХреЛрдб рд▓реЗрдЦреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдореЗрд╕рд┐рди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдмрд╛рд╣реНрдп C рдХрдореНрдкрд╛рдЗрд▓рд░рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдЫ (рдЬреАрд╕реАрд╕реА, рдХреНрд▓реНрдпрд╛рдЩреНрдЧ, рд░ Microsoft VC++ рдХрд▓ рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ)ред рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛ рдЗрдирд▓рд╛рдЗрди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рд╕рдВрдХрд▓рдирдХреЛ рдХреНрд░рдордорд╛ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдореЛрдбрд╣рд░реВрдХреЛ рдЫрдиреМрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, "--jit-min-calls" рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди 5 рдмрд╛рдЯ 10000 рдорд╛ рдмрдврд╛рдЗрдПрдХреЛ рдЫ, рд░ "--jit-max- рдХреНрдпрд╛рд╕" 1000 рджреЗрдЦрд┐ 100 рд╕рдореНрдоред
  • CGI.escapeHTML, Monitor рд░ MonitorMixin рдХреЛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рджрд░реНрд╢рдиред
  • Module#name, true.to_s, false.to_s, рд░ nil.to_s рд▓реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд╕реНрддреБрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реНрдЯреНрд░рд┐рдЩ рдлрд░реНрдХрд╛рдЗрдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫред
  • RubyVM::InstructionSequence#to_binary; рд╡рд┐рдзрд┐рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЗрдПрдХреЛ рдЫред
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ, рд╕рд╣рд┐рдд
    рдмрдиреНрдбрд▓рд░ реи.рез.реи, рд░реБрдмреАрдЬреЗрдореНрд╕ рей.рез.реи,
    Racc 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS реж.реи.рео,
    StringScanner 1.0.3;

  • рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд▓рд╛рдИ рдЖрдзрд╛рд░ рдкреНрдпрд╛рдХреЗрдЬрдмрд╛рдЯ рдмрд╛рд╣реНрдп рд░рддреНрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛ рд╕рд╛рд░рд┐рдПрдХреЛ рдЫ
    CMath (cmath рд░рддреНрди),
    Scanf (scanf рд░рддреНрди),
    рд╢реЗрд▓ (рд╢реЗрд▓ рдордгрд┐)
    рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд░ (рд╕рд┐рдВрдХ рдордгрд┐),
    рдереНрд░реЗрдбреНрд╕ рд╡реЗрдЯ (рдерд╡реЗрдЯ рдордгрд┐),
    E2MM (e2mmap рд░рддреНрди)ред

  • рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд stdlib рдореЛрдбреНрдпреБрд▓рд╣рд░реВ rubygems.org рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЫрдиреН:
    рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ,
    cgi,
    рдкреНрд░рддрд┐рдирд┐рдзрд┐
    рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо,
    рдиреЗрдЯ-рдкрдк,
    net-smtp
    рдЦреБрд▓рд╛ рей,
    pstore,
    рд╕рд┐рдВрдЧрд▓рдЯрдиред рдореЛрдирд┐рдЯрд░ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ rubygems.org рдорд╛ рд╕рд╛рд░рд┐рдпреЛ
    рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ,
    рд╕рдордп рд╕рдХрд┐рдпреЛ
    рдЯреНрд░реЗрд╕рд░
    рдЙрд░реА,
    yaml, рдЬреБрди рд░реБрдмреА-рдХреЛрд░рдорд╛ рдорд╛рддреНрд░ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред

  • рд░реБрдмреА рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЕрдм C99 рдорд╛рдирдХрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ C рдХрдореНрдкрд╛рдЗрд▓рд░ рдЪрд╛рд╣рд┐рдиреНрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди