Mwepụta nke asụsụ mmemme Ruby 3.1

A tọhapụrụ Ruby 3.1.0, asụsụ mmemme gbadoro ụkwụ n'ihe siri ike nke na-arụ ọrụ nke ọma na mmepe mmemme ma tinye njirimara kachasị mma nke Perl, Java, Python, Smalltalk, Eiffel, Ada na Lisp. A na-ekesa koodu ọrụ ahụ n'okpuru ikikere BSD ("2-nkebi BSDL") na "Ruby", nke na-ezo aka na ụdị ikike GPL kachasị ọhụrụ yana dakọtara na GPLv3.

Isi nkwalite:

  • Agbakwunyere nnwale ọhụrụ na-arụ ọrụ JIT compiler, YJIT, nke ndị mmepe nke ụlọ ahịa e-commerce nke Shopify mepụtara dịka akụkụ nke atụmatụ iji meziwanye arụmọrụ nke mmemme Ruby nke na-eji usoro Rails na-akpọ ọtụtụ ụzọ. Isi ihe dị iche site na MJIT JIT compiler nke ejiribu mee ihe, nke dabere na nhazi usoro niile ma na-eji ihe nchịkọta mpụga na asụsụ C, bụ na YJIT na-eji Lazy Basic Block Versioning (LBBV) ma nwee ihe nchịkọta JIT agbakwunyere. Site na LBBV, JIT na-ebu ụzọ chịkọta naanị mmalite nke usoro ahụ, ma na-achịkọta nke fọdụrụ obere oge ka e mesịrị, mgbe a na-ekpebi ụdị mgbanwe na arụmụka eji eme ihe n'oge a na-egbu ya. Mgbe ị na-eji YJIT, a na-edekọ mmụba 22% na arụmọrụ mgbe ị na-agba ule railsbench, yana mmụba 39% na ule nyocha mmiri mmiri. YJIT nwere oke ugbu a na nkwado maka OSes dị ka unix na sistemụ nwere x86-64 architecture ma nwee nkwarụ site na ndabara (iji rụọ ọrụ, kọwaa ọkọlọtọ “--yjit” n'ahịrị iwu).
  • Emelitere arụmọrụ nke ochie MJIT JIT compiler. Maka oru ngo na-eji Rails, abawanyela ogo cache kacha nke ndabara (--jit-max-cache) site na ntuziaka 100 ruo 10000. Kwụsị iji JIT maka ụzọ nwere ntuziaka karịrị 1000. Iji kwado Zeitwerk of Rails, anaghịzi atụfu koodu JIT mgbe enyere TracePoint maka mmemme klaasị.
  • Ọ na-agụnye debug.gem debugger a na-edegharị kpamkpam, nke na-akwado nbibi nke dịpụrụ adịpụ, anaghị eme ka ngwa ahụ kwụsịlata, na-akwado ntinye aka na interfaces debugging dị elu (VSCode na Chrome), enwere ike iji ya mee ihe maka nhazi ngwa ngwa multi-threaded na multi-process, na-enye. ihe ngbanwe koodu REPL, na-enye ike nchọta dị elu, nwere ike ịdekọ ma megharịa snippets koodu. Ewepula ihe nbibi lib/debug.rb nke enyere na mbụ na nkesa ntọala.
    Mwepụta nke asụsụ mmemme Ruby 3.1
  • Ngosipụta nhụsianya etinyere na mperi na akụkọ ndekọ oku azụ. Enyere akara mperi site na iji ngwungwu gem arụnyere arụnyere na ndabara na njehie_highlight. Iji gbanyụọ ọkọlọtọ njehie, ị nwere ike iji ntọala "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1: na "": undefined method "time" for 1:Integer (NoMethodError) 1.oge {} ^^^^^ Ị pụtara? ugboro
  • Shei nke mkparịta ụka mkparịta ụka IRB (REPL, Read-Eval-Print-Loop) na-arụ ọrụ mmecha nke koodu etinyere na akpaghị aka (ka ị na-ede, a na-egosipụta akara ngosi yana nhọrọ maka ntinye aka na-aga n'ihu, n'etiti nke ị nwere ike iji Tab ma ọ bụ Shift + gaa n'ihu. Igodo Tab). Mgbe ịhọrọ nhọrọ ịga n'ihu, a na-egosipụta igbe mkparịta ụka dị nso nke na-egosiputa akwụkwọ metụtara ihe ahọpụtara. Enwere ike iji ụzọ mkpirisi ahụigodo Alt+d nweta akwụkwọ zuru ezu.
    Mwepụta nke asụsụ mmemme Ruby 3.1
  • Okwu syntax nke asụsụ na-enye ohere ka ịwụpụ ụkpụrụ dị na mkpụrụedemede hash na arụmụka isiokwu mgbe ị na-akpọ ọrụ. Dịka ọmụmaatụ, kama okwu "{x: x, y: y}" ị nwere ike ịkọwapụta "{x:, y:}", na kama "foo(x: x, y: y)" - foo( x:, y:)".
  • Nkwado kwụsiri ike maka matches otu ahịrị (ary => [x, y, z]), nke na-egosikwaghị ya dị ka nnwale.
  • Onye na-arụ ọrụ "^" na matches ụkpụrụ nwere ike ịnwe okwu aka ike, dịka ọmụmaatụ: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= >? [3, 5], [5, 7], [11, 13]
  • N'ụkpụrụ egwuregwu otu ahịrị, ị nwere ike hapụ akara aka: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Asụsụ nkọwa ụdị RBS, nke na-enye gị ohere ikpebi nhazi nke mmemme na ụdị eji eme ihe, agbakwunyela nkwado maka ịkọwapụta oke oke nke ụdị paramita site na iji akara “<”, agbakwunyere nkwado maka aha aha nke ụdị ụdị, nkwado emejuputa atumatu maka. nchịkọta maka ijikwa bara nnukwu uru, rụọ ọrụ nke ọma yana mejuputa ọtụtụ mbinye aka ọhụrụ maka ụlọ akwụkwọ arụnyere na ọkọlọtọ.
  • Nkwado nnwale maka gburugburu mmepe agbakwunyere agbakwunyere na ụdị nyocha ụdịdị Static TypePro, nke na-ewepụta nkọwa RBS dabere na nyocha koodu na-enweghị ụdị ozi doro anya (dịka ọmụmaatụ, edozila mgbakwunye maka ijikọ TypePro na onye editọ VSCode).
  • Agbanwela usoro nhazi ọtụtụ ọrụ. Dịka ọmụmaatụ, na mbụ a na-ahazi akụkụ nke okwu ahụ "foo[0], bar[0] = baz, qux" n'usoro baz, qux, foo, bar, ma ugbu a foo, bar, baz, qux.
  • Nkwado nnwale agbakwunyere maka oke ebe nchekwa maka eriri site na iji usoro VWA (Variable Width Allocation).
  • Ụdị modul gem arụnyere arụnyere na ndị agụnyere n'ọbá akwụkwọ ọkọlọtọ emelitere. Ngwunye net-ftp, net-map, net-pop, net-smtp, matrix, prime na debug bụ arụnyere n'ime ya.

isi: opennet.ru

Tinye a comment