Te tukunga o te reo hotaka Ruby 3.1

I tukuna a Ruby 3.1.0, he reo whakahiato-a-ahanoa hihiri e tino pai ana ki te whakawhanake i te kaupapa me te whakauru i nga ahuatanga pai o Perl, Java, Python, Smalltalk, Eiffel, Ada me Lisp. Ka tohatohahia te waehere kaupapa i raro i nga raihana BSD ("2-rara BSDL") me "Ruby", e tohu ana ki te putanga hou o te raihana GPL me te tino hototahi ki te GPLv3.

Nga whakapainga matua:

  • He whakahiato hou i roto i te tukatuka JIT, YJIT, kua taapirihia, i hangaia e nga kaiwhakawhanake o te maakete e-hokohoko Shopify hei waahanga o te kaupapa ki te whakapai ake i nga mahi o nga kaupapa Ruby e whakamahi ana i te anga Rails me te karanga i nga tikanga maha. Ko te rereketanga nui mai i te MJIT JIT compiler i whakamahia i mua, i runga i te tukatuka i nga tikanga katoa me te whakamahi i te kohinga o waho i roto i te reo C, ko te YJIT te whakamahi i te Lazy Basic Block Versioning (LBBV) me te whakauru i te JIT compiler. Ma te LBBV, ka whakahiato tuatahi e JIT te timatanga o te tikanga, ka whakahiato te toenga mo etahi wa i muri mai, i muri i te whakatau i nga momo taurangi me nga tohenga i whakamahia i te wa e mahia ana. I te wa e whakamahi ana i te YJIT, he 22% te pikinga o nga mahi i tuhia i te wa e whakahaere ana i te whakamatautau railsbench, me te 39% te pikinga o te whakamatautau wai-whakawai. Ko te YJIT i tenei wa he iti ki te tautoko mo nga OS rite-unix i runga i nga punaha me te hoahoanga x86-64 ka monokia ma te taunoa (ki te whakahohe, tohua te haki "--yjit" i te rarangi whakahau).
  • He pai ake te mahi a te kaitoha MJIT JIT tawhito. Mo nga kaupapa e whakamahi ana i te Rails, kua whakanuia te rahinga keteroki morahi taunoa (--jit-max-cache) mai i te 100 ki te 10000 nga tohutohu. I mutu te whakamahi JIT mo nga tikanga neke atu i te 1000 nga tohutohu. Hei tautoko i a Zeitwerk of Rails, karekau te waehere JIT i te whakakorehia ina whakahohea a TracePoint mo nga huihuinga karaehe.
  • Kei roto i te tuhi katoa debug.gem patuiro, e tautoko ana i te patuiro mamao, e kore e whakaroa i te tono kua whakakorehia, e tautoko ana i te whakaurunga me nga atanga patuiro matatau (VSCode me Chrome), ka taea te whakamahi mo te whakakore i nga tono miro maha me te maha-tukatuka, whakarato. he atanga whakaurunga waehere REPL, e tuku ana i nga kaha ki te whai, ka taea te tuhi me te purei ano i nga waahanga waehere. Kua tangohia te kaiwhakairo lib/debug.rb i mua i te tohatoha turanga.
    Te tukunga o te reo hotaka Ruby 3.1
  • Kua whakatinanahia te whakaaturanga whakakitenga o nga hapa i roto i nga purongo tohu waea. Ka tukuna te haki i te hapa ma te whakamahi i te kete koha i roto me te taunoa-whakahohea error_highlight. Hei whakakore i te haki hapa, ka taea e koe te whakamahi i te tautuhinga "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:i roto " ": undefined tikanga "wa" mo te 1:Integer (NoMethodError) 1.time {} ^^^^^ Ko te tikanga? wā
  • Ko te anga o nga tatauranga tauwhitiwhiti IRB (REPL, Read-Eval-Print-Loop) ka whakatinana i te whakaoti aunoa o te waehere kua whakauruhia (i a koe e pato ana, ka whakaatuhia he tohu me nga whiringa mo te whakauru tonu, i waenga ka taea e koe te neke me te Ripa, Shift+ ranei. Kī ripa). Whai muri i te kowhiri i te whiringa haere tonu, ka whakaatuhia he pouaka korero tata e whakaatu ana i nga tuhinga e hono ana ki te mea kua tohua. Ka taea te whakamahi i te pokatata papapātuhi Alt+d ki te uru ki nga tuhinga katoa.
    Te tukunga o te reo hotaka Ruby 3.1
  • Ko te wetereo reo inaianei ka taea te peke i nga uara i roto i nga kupu whakamaarama me nga tohenga kupu matua ina waea ana i nga mahi. Hei tauira, hei utu mo te kii "{x: x, y: y}" ka taea e koe te tohu "{x:, y:}", me "foo(x: x, y: y)" - foo( x:, y:)".
  • Tautoko whakau mo nga whakataetae tauira raina-kotahi (ary => [x, y, z]), kua kore e tohuhia hei whakamatautau.
  • Ka taea e te kaiwhakahaere "^" i roto i nga whakataetae tauira te whakauru i nga korero tuku noa, hei tauira: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • I roto i nga whakataetae tauira raina-kotahi, ka taea e koe te whakakore i nga reu: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Ko te reo whakamohiotanga momo RBS, e taea ai e koe te whakatau i te hanganga o te hotaka me nga momo e whakamahia ana, kua taapirihia te tautoko mo te tohu i te tepe o runga o nga momo tawhā ma te whakamahi i te tohu "<", he tautoko taapiri mo nga ingoa ingoa o nga momo momo, tautoko tautoko mo Ko nga kohinga mo te whakahaere kohatu, te whakapai ake i nga mahi me te whakatinana i nga waitohu hou maha mo nga whare pukapuka kua oti te hanga me te paerewa.
  • Ko te tautoko whakamatautau mo nga taiao whanaketanga whakauru kua taapirihia ki te TypePro static type analyzer, e whakaputa ana i nga korero RBS i runga i te tātaritanga waehere me te kore korero momo korero (hei tauira, kua whakaritea he taapiri mo te whakauru i te TypePro me te ētita VSCode).
  • Kua hurihia te raupapa o te tukatuka taumahi maha. Hei tauira, i mua ko nga wahanga o te kupu “foo[0], bar[0] = baz, qux” i tukatukahia i roto i te raupapa baz, qux, foo, bar, engari inaianei foo, bar, baz, qux.
  • He tautoko whakamatautau mo te tohatoha mahara mo nga aho ma te whakamahi i te tikanga VWA (Variable Width Allocation).
  • Ko nga putanga whakahōu o nga kōwae kohatu kua oti te hanga me era kei roto i te whare pukapuka paerewa. Ko nga kohinga net-ftp, net-imap, net-pop, net-smtp, matrix, prime me te patuiro kua whakauruhia ki roto.

Source: opennet.ru

Tāpiri i te kōrero