Sgaoileadh cànan prògramadh Ruby 2.7.0

Às deidh bliadhna de leasachadh foillsichte leigeil ma sgaoil Ruby 2.7.0, cànan prògramaidh fiùghantach stèidhichte air cuspair a tha air leth èifeachdach ann an leasachadh phrògraman agus a’ toirt a-steach na feartan as fheàrr de Perl, Java, Python, Smalltalk, Eiffel, Ada agus Lisp. Tha còd a’ phròiseict air a chuairteachadh fo cheadan BSD (“2-clàs BSDL”) agus “Ruby”, a tha a’ toirt iomradh air an dreach as ùire den chead GPL agus a tha gu tur co-chòrdail ri GPLv3. Is e Ruby 2.7 an seachdamh prìomh fhoillseachadh a thèid a thoirt a-mach mar phàirt de phròiseas leasachaidh dealbhaichte a tha a’ toirt a-steach bliadhna a chuir an dàrna taobh airson leasachaidhean feart agus sgaoileadh paiste 2-3 mìosan.

prìomh leasachaidhean:

  • deuchainneach taic co-fhreagairt pàtran (Co-fhreagairt pàtran) ath-aithris thairis air an nì a chaidh a thoirt seachad agus luach a shònrachadh ma tha maids pàtrain ann.

    cùis [0, [1, 2, 3]] ann an [a, [b, *c]] pa #=> 0
    pb #=> 1
    pc #=> [2, 3] crioch

    cùis {a: 0, b: 1}
    ann an{a:0,x:1}
    : do-ruigsinn
    ann an {a: 0, b: var}
    p var #=> 1
    deireadh

  • Tha comas aig an t-slige de àireamhachadh eadar-ghnìomhach irb (REPL, Read-Eval-Print-Loop) deasachadh ioma-loidhne a chuir an gnìomh a’ cleachdadh leabharlann a tha co-chosmhail ri leughadh. loidhnesgrìobhte ann an Ruby. Tha taic airson rdoc air a bhith amalaichte, a leigeas le bhith coimhead air fiosrachadh iomraidh mu chlasaichean, mhodalan agus mhodhan ainmichte ann an irb. Thathas a’ toirt seachad soilleireachadh dathte de loidhnichean le còd air a shealltainn tro Binding#irb agus toraidhean bho bhith a’ sgrùdadh nithean bun-chlas.

    Sgaoileadh cànan prògramadh Ruby 2.7.0

  • Chuir sinn ris neach-cruinneachaidh sgudail teann (Compaction GC) as urrainn milleadh a dhèanamh air sgìre cuimhne, fuasgladh fhaighinn air duilgheadasan coileanadh slaodach agus barrachd caitheamh cuimhne mar thoradh air briseadh cuimhne a bhios a’ tachairt nuair a bhios cuid de thagraidhean Ruby ioma-snàthainn ag obair. Gus stuthan a phacadh air a 'chrann air a mholadh Modh GC.compact gus an àireamh de dhuilleagan cuimhne a thathas a’ cleachdadh a lughdachadh agus an tiùrr airson gnìomhachd a bharrachadh
    CoW (leth-bhreac-air-sgrìobhadh).

  • Air a dhèanamh ag ullachadh gus argamaidean a sgaradh stèidhichte air suidheachadh air an liosta ("def foo (a, b, c)") agus prìomh fhaclan ("def foo (iuchair: val)"). Cha deach tionndadh argamaid fèin-ghluasadach stèidhichte air prìomh fhaclan agus suidheachadh a mholadh agus cha tèid taic a thoirt dha ann am meur Ruby 3.0. Gu sònraichte, chaidh a dhiùltadh an argamaid mu dheireadh a chleachdadh mar pharaimearan prìomh fhaclan, gus argamaidean stèidhichte air prìomh fhacal a thoirt seachad mar am paramadair hash mu dheireadh, agus an argamaid mu dheireadh a roinn ann am paramadairean suidheachaidh agus prìomh fhacal.

    def foo (iuchrach: 42); crioch ; foo ({iuchair: 42}) #rabhadh
    def foo(**kw); crioch ; foo ({iuchair: 42}) #rabhadh
    def foo (iuchrach: 42); crioch ; foo (**{iuchair: 42}) # Ceart gu leòr
    def foo(**kw); crioch ; foo (**{iuchair: 42}) # Ceart gu leòr

    def foo(h, **kw); crioch ; foo (iuchrach: 42) #rabhadh
    def foo (h, iuchair: 42); crioch ; foo (iuchrach: 42) #rabhadh
    def foo(h, **kw); crioch ; foo ({iuchair: 42}) # Ceart gu leòr
    def foo (h, iuchair: 42); crioch ; foo ({iuchair: 42}) # Ceart gu leòr

    def foo(h ={}, iuchair: 42); crioch ; foo("key" => 43, iuchair: 42) #warned
    def foo(h ={}, iuchair: 42); crioch ; foo({ "key" => 43, iuchair: 42}) # rabhadh
    def foo(h ={}, iuchair: 42); crioch ; foo({ "key" => 43}, iuchair: 42) # Ceart gu leòr

    def foo(opt={}); crioch ; foo (iuchair: 42 ) # Ceart gu leòr

    def foo(h, **nil); crioch ; foo(iuchrach: 1) # ArgumentError
    def foo(h, **nil); crioch ; foo (**{iuchair: 1}) # ArgumentError
    def foo(h, **nil); crioch ; foo("str" ​​=> 1) # ArgumentError
    def foo(h, **nil); crioch ; foo ({iuchair: 1}) # Ceart gu leòr
    def foo(h, **nil); crioch ; foo({ "str" ​​=> 1}) # Ceart gu leòr

    h = {}; def foo(*a) deireadh; foo(**h) # [] h = {}; def foo(a) deireadh; foo(**h) # {} agus rabhadh
    h = {}; def foo(*a) deireadh; foo(h) # [{}] h = {}; def foo(a) deireadh; foo(h) # {}

  • Comas a’ cleachdadh ainmean caochlaideach àireamhaichte airson paramadairean bloca.

    [1, 2, 3].each { a' cur @1 } # mar [1, 2, 3].each { |i| a' cur i }

  • Taic deuchainneach airson raointean gun luach tùsail.

    ary[..3] # co-ionann ri ary[0..3] rel.where (reic: ..100)

  • Chuir sinn ris an dòigh Àireamhach # cunntas, a tha a’ cunntadh cia mheud uair a bhios gach eileamaid a’ tachairt.

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

  • Gairm modh prìobhaideach ceadaichte le litireil “fèin”.

    deffoo
    deireadh
    prìobhaideach: foo
    fèin.foo

  • Àireamhair air a chur ris::Dòigh leisg#deònach airson àireamhachd cunbhalach a ghineadh bho àireamhachd leisg (àireamhaiche :: leisg).

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

  • Tha leasachadh inneal-cruinneachaidh JIT deuchainneach air leantainn, a dh’ fhaodadh coileanadh thagraidhean ann an cànan Ruby a leasachadh gu mòr. Bidh an neach-cruinneachaidh JIT a chaidh a mholadh ann an Ruby an-toiseach a’ sgrìobhadh còd C gu diosc, agus às deidh sin bidh e a’ gairm inneal-cruinneachaidh C taobh a-muigh gus stiùireadh inneal a ghineadh (tha GCC, Clang agus Microsoft VC ++ a’ faighinn taic). Bidh an dreach ùr a’ cur an gnìomh dòigh airson cleachdadh in-loidhne ma tha sin riatanach, cleachdadh roghnach de mhodhan optimization aig àm cur ri chèile, tha luach bunaiteach “--jit-min-calls” air àrdachadh bho 5 gu 10000, agus “--jit-max-cache” bho 1000 gu 100.
  • Coileanadh nas fheàrr de CGI.escapeHTML, Monitor agus MonitorMixin.
  • Nì modal#name, true.to_s, false.to_s, agus nil.to_s cinnteach gun tèid sreang a thilleadh nach eil air atharrachadh airson an nì ainmichte.
  • Chaidh meud nam faidhlichean dà-chànanach a ghineadh leis an dòigh RubyVM::InstructionSequence#to_binary a lùghdachadh;
  • Tionndaidhean ùraichte de cho-phàirtean togte, a’ toirt a-steach
    Bundler 2.1.2, RubyGems 3.1.2,
    Racc 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    Sganadair sreang 1.0.3;

  • Ghluais leabharlannan bho sgaoileadh bunaiteach gu pasganan gem taobh a-muigh
    CMath (cmath gem),
    Scanf (scanf gem),
    Slige (shell gem),
    Synchronizer (sync gem),
    ThreadsWait (thwait gem),
    E2MM (seud e2mmap).

  • Tha na modalan stdlib bunaiteach air am foillseachadh air rubygems.org:
    slat-tomhais,
    cgi,
    riochdaire,
    tog,
    lìon pop,
    lìon smtp,
    fosgailte 3,
    pstore,
    singilte. Sùil a chumail air modalan nach deach a ghluasad gu rubygems.org
    neach-amhairc,
    A’ gabhail fois,
    lorgair,
    ur,
    yaml, nach eil air an cur air falbh ach le ruby-core.

  • Feumaidh Building Ruby a-nis inneal-cruinneachaidh C a bheir taic do inbhe C99.

Source: fosgailtenet.ru

Cuir beachd ann