Kutulutsidwa kwa chilankhulo cha pulogalamu ya Ruby 3.1

Ruby 3.1.0 inatulutsidwa, chinenero chowongolera chokhazikika pa chinthu chomwe chimagwira ntchito bwino pakupanga mapulogalamu ndipo chimaphatikizapo zinthu zabwino kwambiri za Perl, Java, Python, Smalltalk, Eiffel, Ada ndi Lisp. Khodi ya polojekitiyi imagawidwa pansi pa ziphaso za BSD ("2-clause BSDL") ndi "Ruby", zomwe zikutanthauza mtundu waposachedwa wa laisensi ya GPL ndipo imagwirizana kwathunthu ndi GPLv3.

Kusintha kwakukulu:

  • Kuyesa kwatsopano mu-process JIT compiler, YJIT, yawonjezedwa, yopangidwa ndi opanga Shopify e-commerce platform monga gawo la njira yopititsira patsogolo ntchito za mapulogalamu a Ruby omwe amagwiritsa ntchito Rails framework ndikuyitana njira zambiri. Kusiyanitsa kwakukulu kuchokera ku compiler ya MJIT JIT yomwe idagwiritsidwa ntchito kale, yomwe imachokera pakukonza njira zonse ndikugwiritsa ntchito makina opangira kunja kwa chinenero cha C, ndikuti YJIT imagwiritsa ntchito Lazy Basic Block Versioning (LBBV) ndipo imakhala ndi JIT compiler yophatikizika. Ndi LBBV, JIT imayamba kupanga zoyambira zokha za njirayo, ndikuphatikiza zina pambuyo pake, pambuyo poti mitundu yamitundu ndi mikangano yogwiritsidwa ntchito yatsimikiziridwa pakuphedwa. Mukamagwiritsa ntchito YJIT, kuwonjezeka kwa 22% kwa magwiridwe antchito kunalembedwa poyesa mayeso a railsbench, ndi 39% kuwonjezeka kwa mayeso amadzimadzi. YJIT pano ili ndi malire pakuthandizira ma OS ngati unix pamakina okhala ndi x86-64 zomangamanga ndipo imayimitsidwa mwachisawawa (kuyambitsa, tchulani mbendera ya "-yjit" pamzere wolamula).
  • Kuchita bwino kwa compiler yakale ya MJIT JIT. Kwa mapulojekiti ogwiritsira ntchito Rails, kukula kwa cache (--jit-max-cache) kwawonjezeka kuchoka pa 100 mpaka 10000 malangizo. Anasiya kugwiritsa ntchito JIT panjira zokhala ndi malangizo opitilira 1000. Kuthandizira Zeitwerk of Rails, JIT code sichimatayidwanso TracePoint ikayatsidwa pazochitika zamakalasi.
  • Zimaphatikizanso debug.gem debugger yolembedwanso kwathunthu, yomwe imathandizira kuwongolera kwakutali, sikuchepetsa ntchito yomwe yasinthidwa, imathandizira kuphatikizika ndi zolumikizira zapamwamba (VSCode ndi Chrome), zitha kugwiritsidwa ntchito pochotsa maulalo amitundu yambiri komanso njira zambiri, imapereka mawonekedwe a REPL code execution, amapereka luso lapamwamba lotsatirira, amatha kujambula ndi kuseweretsanso mawu achinsinsi. Debugger yomwe idaperekedwa kale lib/debug.rb yachotsedwa pagawo loyambira.
    Kutulutsidwa kwa chilankhulo cha pulogalamu ya Ruby 3.1
  • Kukhazikitsa zowunikira zowona za zolakwika mu malipoti a call back trace. Kuyika chizindikiro cholakwa kumaperekedwa pogwiritsa ntchito phukusi la gem lomwe lakhazikitsidwa ndi lokhazikika error_highlight. Kuti mulepheretse kuyika zolakwika, mutha kugwiritsa ntchito "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in " ": njira yosadziwika "nthawi" ya 1:Integer (NoMethodError) 1.time {} ^^^^^ Mukutanthauza? nthawi
  • IRB (REPL, Read-Eval-Print-Loop) imagwiritsa ntchito kumaliza khodi yomwe mwalowa (pamene mukulemba, lingaliro likuwonetsedwa ndi zosankha zopititsira patsogolo, zomwe mungathe kusuntha ndi Tab kapena Shift + Tab kiyi). Pambuyo posankha njira yopititsira patsogolo, bokosi la zokambirana likuwonetsedwa pafupi lomwe likuwonetsa zolemba zogwirizana ndi chinthu chosankhidwa. Njira yachidule ya kiyibodi Alt+d ingagwiritsidwe ntchito kupeza zolemba zonse.
    Kutulutsidwa kwa chilankhulo cha pulogalamu ya Ruby 3.1
  • Chilankhulo cha chilankhulo tsopano chimalola kuti ma hash literals ndi mawu osakira adumphe poyimba ntchito. Mwachitsanzo, m’malo mwa mawu akuti “{x: x, y: y}” mungathe kutchula “{x:, y:}”, ndipo m’malo mwa “foo(x: x, y: y)” - foo( x:, y:)".
  • Thandizo lokhazikika la mafananidwe a mzere umodzi (ary => [x, y, z]), zomwe sizikutchulidwanso ngati zoyesera.
  • "^" wogwiritsa ntchito m'mapateni tsopano atha kukhala ndi mawu osamveka, mwachitsanzo: Prime.each_cons(2).lazy.find_all{_1 mu [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • M'mafananidwe a mzere umodzi, mutha kuchotsa mabatani: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Chilankhulo chofotokozera chamtundu wa RBS, chomwe chimakupatsani mwayi wodziwa mawonekedwe a pulogalamuyo ndi mitundu yomwe yagwiritsidwa ntchito, chawonjezera chithandizo chofotokozera malire apamwamba amtundu wamtundu pogwiritsa ntchito chizindikiro cha "<", chowonjezera chothandizira pamitundu yamitundu, yothandizidwa ndi zosonkhanitsira zoyang'anira miyala yamtengo wapatali, kuwongolera magwiridwe antchito ndikukhazikitsa siginecha zambiri zatsopano zamalaibulale omangidwamo komanso okhazikika.
  • Thandizo loyesera lachitukuko chophatikizika chawonjezeredwa ku TypePro static type analyzer, yomwe imapanga zofotokozera za RBS potengera kusanthula kwa ma code popanda chidziwitso chodziwika bwino (mwachitsanzo, chowonjezera chakonzedwa kuti aphatikizire TypePro ndi mkonzi wa VSCode).
  • Dongosolo la kukonza magawo angapo lasinthidwa. Mwachitsanzo, m'mbuyomu zigawo za mawu oti "foo[0], bar[0] = baz, qux" zidasinthidwa mwadongosolo baz, qux, foo, bar, koma tsopano foo, bar, baz, qux.
  • Thandizo loyeserera pakugawa kukumbukira zingwe pogwiritsa ntchito makina a VWA (Variable Width Allocation).
  • Zosinthidwa zamamodule amtengo wapatali omangidwa ndi omwe akuphatikizidwa mulaibulale yokhazikika. Ma net-ftp, net-imap, net-pop, net-smtp, matrix, prime and debug package amamangidwa.

Source: opennet.ru

Kuwonjezera ndemanga