Hoʻokuʻu ʻia ka ʻōlelo papahana Ruby 2.7.0

Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana i paʻiʻia hoʻokuʻu Ruby 2.7.0, he ʻōlelo hoʻolālā hoʻolālā hoʻoikaika i ka hoʻomohala papahana a hoʻokomo i nā hiʻohiʻona maikaʻi loa o Perl, Java, Python, Smalltalk, Eiffel, Ada a me Lisp. Hāʻawi ʻia ke code pāhana ma lalo o nā laikini BSD ("2-clause BSDL") a me "Ruby", e pili ana i ka mana hou loa o ka laikini GPL a kūpono loa me GPLv3. ʻO Ruby 2.7 ka hiku o ka hoʻokuʻu nui e hana ʻia ma ke ʻano o kahi kaʻina hoʻolālā i hoʻolālā ʻia e pili ana i ka hoʻokaʻawale ʻana i hoʻokahi makahiki no ka hoʻonui ʻana i nā hiʻohiʻona a me ka hoʻokuʻu ʻana i ka patch 2-3 mahina.

ka papa kuhikuhiE nā hoʻomaikaʻi:

  • Hoʻokolohua kākoʻo hoʻolike like (Kūlike like) e hoʻololi i ka mea i hāʻawi ʻia a hāʻawi i kahi waiwai inā loaʻa kahi hoʻohālikelike.

    hihia [0, [1, 2, 3]] i [a, [b, *c]] pa # => 0
    pb # => 1
    pc # => [2, 3] hopena

    hihia {a: 0, b: 1}
    i{a:0,x:1}
    : hiki ole ke loaa
    ma {a: 0, b: var}
    p var # => 1
    hopena

  • ʻO ka pūpū o nā helu helu irb (REPL, Read-Eval-Print-Loop) i kēia manawa ke hiki ke hoʻoponopono i nā laina he nui, i hoʻokō ʻia me ka waihona readline-compatible. laina, kākau ʻia ma Ruby. Ua hoʻohui pū ʻia ke kākoʻo rdoc, e ʻae iā ʻoe e ʻike i ka ʻike kuhikuhi ma nā papa i kuhikuhi ʻia, nā modules a me nā ʻano hana ma irb. Hāʻawi ʻia ka hōʻailona kala o nā laina o ke code i hōʻike ʻia ma o Binding#irb a me nā hopena o ka nānā ʻana i nā mea papa kumu.

    Hoʻokuʻu ʻia ka ʻōlelo papahana Ruby 2.7.0

  • Hoʻohui ʻia kahi ʻohi ʻōpala paʻa (Compaction GC) hiki ke hoʻokaʻawale i kahi ʻāpana o ka hoʻomanaʻo, e hoʻonā i ka hana a me ka hoʻohana ʻana i ka hoʻomanaʻo i hoʻokumu ʻia e ka puʻupuʻu hoʻomanaʻo i loaʻa i kekahi mau noi Ruby multi-threaded. E hoʻopili i nā mea ma ka puʻu noiʻi ʻia ʻO ke ala GC.compact, hiki iā ʻoe ke hōʻemi i ka nui o nā ʻaoʻao hoʻomanaʻo i hoʻohana ʻia a hoʻonui i ka puʻu no nā hana.
    CoW (kope-ma-kākau).

  • Hana ʻia hoʻomākaukau e hoʻokaʻawale i nā manaʻo e pili ana i ke kūlana ma ka papa inoa ("def foo(a,b,c)") a me nā huaʻōlelo ("def foo(key: val)"). Ua hoʻopau ʻia ka hoʻololi hoʻopaʻapaʻa ʻokoʻa e pili ana i nā huaʻōlelo a me ke kūlana a ʻaʻole e kākoʻo ʻia ma ka lālā Ruby 3.0. ʻO ka mea nui, ua hoʻopau ʻia ka hoʻohana ʻana i ka hoʻopaʻapaʻa hope ma ke ʻano he huaʻōlelo huaʻōlelo, e hāʻawi i nā ʻōlelo hoʻopaʻapaʻa e pili ana i ka huaʻōlelo ma ke ʻano he palena hash hope, a e hoʻokaʻawale i ka hoʻopaʻapaʻa hope i nā ʻāpana kūlana a me nā huaʻōlelo.

    def foo(kī: 42); hopena; foo({key: 42}) # ʻōlelo aʻo
    def foo(**kw); hopena; foo({key: 42}) # ʻōlelo aʻo
    def foo(kī: 42); hopena; foo(**{ki: 42}) # OK
    def foo(**kw); hopena; foo(**{ki: 42}) # OK

    def foo(h, **kw); hopena; foo(ki: 42) #warned
    def foo(h, kī: 42); hopena; foo(ki: 42) #warned
    def foo(h, **kw); hopena; foo({ki: 42}) # OK
    def foo(h, kī: 42); hopena; foo({ki: 42}) # OK

    def foo(h={}, kī: 42); hopena; foo("ki" => 43, kī: 42) # ʻōlelo aʻo
    def foo(h={}, kī: 42); hopena; foo({"key" => 43, kī: 42}) # ʻōlelo aʻo
    def foo(h={}, kī: 42); hopena; foo({"ki" => 43}, kī: 42) # OK

    def foo(opt={}); hopena; foo( kī: 42 ) # OK

    def foo(h, **nil); hopena; foo(ki: 1) # Haʻopaʻapaʻa
    def foo(h, **nil); hopena; foo(**{ki: 1}) # Haʻopaʻapaʻa
    def foo(h, **nil); hopena; foo("str" ​​=> 1) # Haʻopaʻapaʻa
    def foo(h, **nil); hopena; foo({ki: 1}) # OK
    def foo(h, **nil); hopena; foo({"str" ​​​​ => 1}) # OK

    h = {}; def foo(*a) a hope; foo(**h) # [] h = {}; def foo(a) a hope; foo(**h) # {} a me ka ʻōlelo aʻo
    h = {}; def foo(*a) hope; foo(h) # [{}] h = {}; def foo(a) hopena; foo(h) # {}

  • He wā kūpono me ka hoʻohana ʻana i nā inoa hoʻololi paʻamau i helu ʻia no nā ʻāpana poloka.

    [1, 2, 3].kekahi { kau i @1 } # like [1, 2, 3].kekahi { |i| kau i }

  • Kākoʻo hoʻokolohua no nā pae me ka waiwai ʻole.

    ary[..3] # like me ary[0..3] rel.where(kūʻai: ..100)

  • Hoʻohui ʻia ke ʻano Enumerable#tally, e helu ana i ka nui o nā manawa e puka ai kēlā me kēia mea.

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

  • ʻAe ʻia e kāhea i kahi ʻano pilikino me ka "self" maoli

    deffoo
    hopena
    pilikino :foo
    self.foo

  • Hoʻohui ʻia ʻo Enumerator::Lazy#eager e hana i ka helu maʻamau mai ka palaualelo (Enumerator::Lazy).

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

  • Ua hoʻomau ʻia ka hoʻomohala ʻana o kahi mea hōʻuluʻulu JIT hoʻokolohua, hiki ke hoʻomaikaʻi nui i ka hana o nā noi ma ka ʻōlelo Ruby. Ua kākau mua ʻo Ruby's JIT compiler i ka code C i ka disk, a laila kāhea i kahi mea hoʻopili C waho e hana i nā ʻōlelo kuhikuhi mīkini (kākoʻo i ke kāhea ʻana iā GCC, Clang, a me Microsoft VC++). Hoʻokomo ka mana hou i kahi ala no ka hoʻonohonoho inline inā pono, koho ʻia ka hoʻohana ʻana i nā mode optimization i ka wā o ka hōʻuluʻulu ʻana, hoʻonui ʻia ka waiwai paʻamau o "--jit-min-calls" mai 5 a 10000, a "--jit-max- cache” mai 1000 a 100 .
  • Hoʻomaikaʻi i ka hana o CGI.escapeHTML, Monitor a me MonitorMixin.
  • Module#name, true.to_s, false.to_s, and nil.to_s e hōʻoia i ka hoʻihoʻi ʻia ʻana o kahi kaula i hoʻololi ʻole ʻia no ka mea i kuhikuhi ʻia.
  • Ua hōʻemi ʻia ka nui o nā faila binary i hana ʻia e ka RubyVM::InstructionSequence#to_binary;
  • Nā mana hou o nā ʻāpana i kūkulu ʻia, me
    Pūʻulu 2.1.2, RubyGems 3.1.2,
    Racc 1.4.15,
    CSV 3.1.2, REXML 3.2.3,
    RSS 0.2.8,
    Nānā Hana Hana 1.0.3;

  • Ua neʻe nā hale waihona puke mai ka hoʻohele kumu i nā pūʻolo gem waho
    ʻO CMath (ka pōhaku makamae),
    ʻO Scanf (scanf gem),
    ʻO ka pūpū (shell gem)
    ʻO ka mea hoʻoponopono (hoʻohui i nā pōhaku),
    ThreadsWait (thwait gem),
    E2MM (e2mmap gem).

  • Hoʻopuka ʻia nā modula stdlib paʻamau ma rubygems.org:
    pae ʻāina,
    cgi,
    ʻelele
    hoʻomaka,
    upena pop,
    net smtp,
    wehe3,
    hale kūʻai,
    singleton. ʻAʻole i neʻe ʻia nā modules i rubygems.org
    mea nānā,
    manawa hoʻomaha
    mea hōʻailona
    uri,
    yaml, i hoʻouna wale ʻia me ka ruby-core.

  • Ke kūkulu nei ʻo Ruby i kēia manawa e koi i kahi mea hoʻopili C e kākoʻo ana i ka maʻamau C99.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka