Famoahana ny fiteny fandaharana Ruby 2.7.0

Taorian'ny taona fampandrosoana namoaka famotsorana Ruby 2.7.0, fiteny fandaharana mavitrika sy miompana amin'ny zavatra izay tena mahomby amin'ny fampivoarana fandaharana ary mampiditra ny endri-javatra tsara indrindra amin'ny Perl, Java, Python, Smalltalk, Eiffel, Ada, ary Lisp. Ny fehezan-dalΓ na momba ny tetikasa dia zaraina eo ambanin'ny fahazoan-dΓ lana BSD (β€œ2-clause BSDL”) sy β€œRuby”, izay manondro ny dikan-teny farany amin'ny fahazoan-dΓ lana GPL ary mifanaraka tanteraka amin'ny GPLv3. Ruby 2.7 no famotsorana lehibe fahafito taorian'ny dingana fampandrosoana nomanina izay maharitra herintaona hanomanana ny fanatsarana fiasa ary mamokatra famoahana fikojakojana isaky ny 2-3 volana.

tena fanatsarana:

  • Fanandramana fanohanana mifanaraka amin'ny modely (Mifanaraka amin'ny lamina), izay ahafahanao mamerina amin'ny zavatra iray ary manendry sanda raha misy mifanitsy amin'ny lamina.

    tranga [0, [1, 2, 3]] amin'ny [a, [b, *c]] pa # => 0
    pb # => 1
    pc # => [2, 3] farany

    tranga {a: 0, b: 1}
    ao amin'ny {a: 0, x: 1}
    : tsy misy
    ao amin'ny {a: 0, b: var}
    p var # => 1
    tapitra

  • Ny akoran'ny kajy interactive irb (REPL, Read-Eval-Print-Loop) ankehitriny dia manasongadina fanovana maromaro, ampiharina amin'ny alΓ lan'ny tranomboky mifanentana amin'ny readline -dalana,, voasoratra amin'ny Ruby. Ny fanohanana rdoc dia nampidirina, ahafahanao mijery fampahalalana momba ny kilasy, modules ary fomba voafaritra ao amin'ny irb. Nanome fanasongadinana loko ny andalana misy kaody aseho amin'ny alalan'ny Binding#irb sy ny valin'ny fisafoana ireo zavatra kilasy fototra.

    Famoahana ny fiteny fandaharana Ruby 2.7.0

  • Nampiana mpanangom-pako (Compaction GC) izay afaka manafoana faritra fitadidiana, mamaha ny zava-bita sy ny olan'ny fanjifana fitadidiana vokatry ny fizarazarana fahatsiarovana izay mitranga amin'ny rindranasa Ruby maromaro misy kofehy. Mametraka zavatra amin'ny antontam-bato AZO Fomba GC.compact, izay ahafahanao mampihena ny isan'ny pejy fitadidiana ampiasaina sy manatsara ny antontam-piasa.
    CoW (copy-on-write).

  • Notanterahina miomana hanasaraka hevitra mifototra amin'ny toeran'ny lisitra (β€œdef foo(a,b,c)”) sy ny teny fanalahidy (β€œdef foo(key: val)”). Ny fiovan'ny tohan-kevitra mandeha ho azy mifototra amin'ny teny fototra sy toerana dia tsy ampiasaina ary tsy ho tohanana ao amin'ny sampana Ruby 3.0. Raha ny tena izy, dia nitsahatra ny fampiasana ny tohan-kevitra farany ho toy ny mari-pamantarana teny fototra, mandalo ny tohan-kevitra mifototra amin'ny teny fototra ho toy ny mari-pamantarana tenifototra farany, ary manasaraka ny tohan-kevitra farany ho marimaritra iraisana sy teny fototra.

    def foo(key: 42); tapitra; foo({key: 42}) # nampitandremana
    def foo(**kw); tapitra; foo({key: 42}) # nampitandremana
    def foo(key: 42); tapitra; foo(**{key: 42}) # OK
    def foo(**kw); tapitra; foo(**{key: 42}) # OK

    def foo(h, **kw); tapitra; foo(key: 42) # nampitandremana
    def foo(h, lakile: 42); tapitra; foo(key: 42) # nampitandremana
    def foo(h, **kw); tapitra; foo({key: 42}) # OK
    def foo(h, lakile: 42); tapitra; foo({key: 42}) # OK

    def foo(h={}, fanalahidy: 42); tapitra; foo("key" => 43, key: 42) # nampitandremana
    def foo(h={}, fanalahidy: 42); tapitra; foo({"key" => 43, key: 42}) # nampitandremana
    def foo(h={}, fanalahidy: 42); tapitra; foo({"key" => 43}, key: 42) # OK

    def foo(opt={}); tapitra; foo( lakile: 42 ) # OK

    def foo(h, **nil); tapitra; foo(key: 1) #ArgumentError
    def foo(h, **nil); tapitra; foo(**{key: 1}) # ArgumentError
    def foo(h, **nil); tapitra; foo("str" ​​=> 1) # ArgumentError
    def foo(h, **nil); tapitra; foo({key: 1}) # OK
    def foo(h, **nil); tapitra; foo({"str" ​​=> 1}) # OK

    h = {}; def foo(*a) farany; foo(**h) # [] h = {}; def foo(a) farany; foo(**h) # {} ary fampitandremana
    h = {}; def foo(*a) farany; foo(h) # [{}] h = {}; def foo(a) farany; foo(h) # {}

  • fahafahana mampiasa anarana miovaova voaisa ho an'ny masontsivana sakana.

    [1, 2, 3].samy { mametraka @1 } # mitovy amin'ny [1, 2, 3].samy { |i| mametraka i}

  • Fanohanana andrana ho an'ny faritra tsy misy sanda voalohany.

    ary[..3] # mitovy amin'ny ary[0..3] rel.where(varotana: ..100)

  • Nampiana fomba Enumerable#tally, izay manisa ny isan'ny fisehoan'ny singa tsirairay.

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

  • Avela hiantso fomba manokana miaraka amin'ny "tena" ara-bakiteny

    def fo
    tapitra
    manokana :foo
    self.foo

  • Added Enumerator::Lazy#earger method to create a regular enumerator from a lazy enumerator (Enumerator::Lazy).

    a = %w(foo bar baz)
    e = a.lazy.map {|x| x.upcase .map {|x| x + "!" }.mazoto
    p e.class # => Mpanisa
    p e.map {|x| x +"? } #=> ["FOO!?", "BAR!?", "BAZ!?"]

  • Nitohy ny fivoaran'ny mpamoron-kira JIT andrana, izay afaka manatsara be ny fampiharana ny fampiharana amin'ny fiteny Ruby. Ny compiler JIT an'i Ruby voalohany dia manoratra kaody C amin'ny kapila, ary avy eo miantso compiler C ivelany hamorona torolalana amin'ny milina (manohana ny fiantsoana GCC, Clang, ary Microsoft VC++). Ny dikan-teny vaovao dia mametraka fomba iray amin'ny fametrahana inline raha ilaina, azo antoka ny fampiharana mifantina amin'ny fomba fanatsarana mandritra ny fanangonana, ny sandan'ny "--jit-min-calls" dia ampitomboina amin'ny 5 ka hatramin'ny 10000, ary "--jit-max- cache" manomboka amin'ny 1000 ka hatramin'ny 100 .
  • Fanatsarana ny fahombiazan'ny CGI.escapeHTML, Monitor ary MonitorMixin.
  • Ny Module#name, true.to_s, false.to_s, ary nil.to_s dia miantoka fa misy tady averina tsy miova ho an'ny zavatra voafaritra.
  • Ny haben'ny rakitra binary novokarin'ny RubyVM::InstructionSequence#to_binary; dia nahena.
  • Dikan-teny nohavaozina amin'ny singa anatiny, anisan'izany
    Bundler 2.1.2, RubyGems 3.1.2,
    Racc 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    StringScanner 1.0.3;

  • Ny tranomboky dia nafindra avy amin'ny fonosana fototra mankany amin'ny fonosana vatosoa ivelany
    CMath (vatosoa cmath),
    Scanf (vatosoa scanf),
    Shell (vatosoa akorandriaka)
    Synchronizer,
    ThreadsWait (vatosoa thwait),
    E2MM (vatosoa e2mmap).

  • Navoaka ao amin'ny rubygems.org ny maody stdlib default:
    benchmark,
    cgi,
    solontena
    getoptlong,
    net-pop,
    net-smtp
    misokatra3,
    pstore,
    singleton. monitor modules tsy nafindra tao amin'ny rubygems.org
    mpandinika
    fotoana dila
    tracer
    uri,
    yaml, izay tsy misy afa-tsy amin'ny ruby-core.

  • Ny fananganana Ruby izao dia mitaky mpanangona C izay manohana ny fenitra C99.

Source: opennet.ru

Add a comment