Kutolewa kwa lugha ya programu ya Ruby 3.1

Ruby 3.1.0 imetolewa, lugha ya programu inayoelekezwa kwa kitu chenye nguvu ambayo ina ufanisi mkubwa katika uundaji wa programu na inajumuisha vipengele bora vya Perl, Java, Python, Smalltalk, Eiffel, Ada na Lisp. Msimbo wa mradi unasambazwa chini ya leseni za BSD ("2-clause BSDL") na "Ruby", ambayo inarejelea toleo jipya zaidi la leseni ya GPL na inaoana kikamilifu na GPLv3.

Maboresho kuu:

  • Kikusanyaji kipya cha majaribio cha JIT katika mchakato, YJIT, kimeongezwa, kilichoundwa na wasanidi wa jukwaa la biashara la mtandaoni la Shopify kama sehemu ya mpango wa kuboresha utendaji wa programu za Ruby zinazotumia mfumo wa Reli na kutumia mbinu nyingi. Tofauti kuu kutoka kwa kikusanyaji cha MJIT JIT kilichotumika hapo awali, ambacho kinategemea kuchakata mbinu nzima na kutumia kikusanyaji cha nje katika lugha ya C, ni kwamba YJIT hutumia Lazy Basic Block Versioning (LBBV) na ina mkusanyiko jumuishi wa JIT. Na LBBV, JIT kwanza inakusanya mwanzo tu wa njia, na inakusanya iliyobaki muda fulani baadaye, baada ya aina za vigeuzo na hoja zinazotumiwa kuamuliwa wakati wa utekelezaji. Wakati wa kutumia YJIT, ongezeko la 22% la utendakazi lilirekodiwa wakati wa kufanya jaribio la benchi ya reli, na ongezeko la 39% katika jaribio la kutoa kioevu. Kwa sasa YJIT ina uwezo wa kutumia OS zisizofanana na unix kwenye mifumo iliyo na usanifu wa x86-64 na imezimwa kwa chaguo-msingi (ili kuwezesha, bainisha alama ya "--yjit" katika safu ya amri).
  • Utendaji ulioboreshwa wa mkusanyaji wa zamani wa MJIT JIT. Kwa miradi inayotumia Reli, ukubwa wa kache chaguo-msingi (--jit-max-cache) umeongezwa kutoka maagizo 100 hadi 10000. Iliacha kutumia JIT kwa njia zilizo na maagizo zaidi ya 1000. Ili kutumia Zeitwerk of Rails, msimbo wa JIT hautupwa tena wakati TracePoint imewashwa kwa matukio ya darasa.
  • Inajumuisha kitatuzi kilichoandikwa upya kabisa cha debug.gem, ambacho kinaauni utatuzi wa mbali, hakipunguzi kasi ya programu iliyotatuliwa, inasaidia ujumuishaji na violesura vya hali ya juu vya utatuzi (VSCode na Chrome), inaweza kutumika kwa utatuzi wa programu zenye nyuzi nyingi na michakato mingi, hutoa. kiolesura cha utekelezaji wa msimbo wa REPL, hutoa uwezo wa juu wa kufuatilia, kinaweza kurekodi na kucheza tena vijisehemu vya msimbo. Kitatuzi kilichotolewa awali lib/debug.rb kimeondolewa kwenye usambazaji msingi.
    Kutolewa kwa lugha ya programu ya Ruby 3.1
  • Uangaziaji wa taswira uliotekelezwa wa makosa katika ripoti za ufuatiliaji wa simu. Kuripoti hitilafu kunatolewa kwa kutumia kifurushi cha vito kilichojengewa ndani na kilichowezeshwa chaguomsingi error_highlight. Ili kuzima uwekaji alama wa hitilafu, unaweza kutumia mpangilio wa "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:katika "": njia isiyobainishwa "muda" kwa 1:Integer (NoMethodError) 1.time {} ^^^^^ Je, ulimaanisha? nyakati
  • Ganda la hesabu ingiliani IRB (REPL, Read-Eval-Print-Loop) hutekeleza ukamilishaji kiotomatiki wa msimbo ulioingizwa (unapoandika, kidokezo huonyeshwa na chaguzi za kuendelea kuingiza, kati ya ambayo unaweza kusogeza na Tab au Shift+ Kitufe cha kichupo). Baada ya kuchagua chaguo la kuendelea, sanduku la mazungumzo linaonyeshwa karibu ambalo linaonyesha nyaraka zinazohusiana na kipengee kilichochaguliwa. Njia ya mkato ya kibodi Alt+d inaweza kutumika kufikia hati kamili.
    Kutolewa kwa lugha ya programu ya Ruby 3.1
  • Sintaksia ya lugha sasa inaruhusu maadili katika herufi halisi na hoja za maneno muhimu kurukwa wakati wa kupiga simu. Kwa mfano, badala ya usemi β€œ{x: x, y: y}” sasa unaweza kubainisha β€œ{x:, y:}”, na badala ya β€œfoo(x: x, y: y)” - foo( x:, y:)".
  • Usaidizi ulioimarishwa wa kulinganisha muundo wa mstari mmoja (ary => [x, y, z]), ambao haujaalamishwa tena kama majaribio.
  • Opereta "^" katika muundo unaolingana sasa inaweza kuwa na vielezi visivyo vya kawaida, kwa mfano: Prime.each_cons(2).lazy.find_all{_1 katika [n, ^(n + 2)]}.chukua(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Katika ulinganifu wa muundo wa mstari mmoja, unaweza kuacha mabano: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Lugha ya maelezo ya aina ya RBS, ambayo hukuruhusu kuamua muundo wa programu na aina zinazotumiwa, imeongeza usaidizi wa kubainisha kikomo cha juu cha vigezo vya aina kwa kutumia alama ya "<", msaada ulioongezwa kwa lakabu za aina za generic, usaidizi uliotekelezwa kwa makusanyo ya kudhibiti vito, utendakazi ulioboreshwa na kutekeleza sahihi nyingi mpya za maktaba zilizojengewa ndani na za kawaida.
  • Usaidizi wa kimajaribio wa mazingira jumuishi ya uendelezaji umeongezwa kwenye kichanganuzi cha aina tuli cha TypePro, ambacho huzalisha maelezo ya RBS kulingana na uchanganuzi wa msimbo bila maelezo ya aina ya wazi (kwa mfano, programu jalizi imetayarishwa ili kuunganisha TypePro na kihariri cha VSCode).
  • Utaratibu wa kuchakata kazi nyingi umebadilishwa. Kwa mfano, awali vijenzi vya usemi "foo[0], bar[0] = baz, qux" vilichakatwa kwa mpangilio baz, qux, foo, bar, lakini sasa foo, bar, baz, qux.
  • Imeongeza usaidizi wa majaribio wa ugawaji kumbukumbu kwa mifuatano kwa kutumia utaratibu wa VWA (Upeo wa Upana Unaobadilika).
  • Matoleo yaliyosasishwa ya moduli za vito zilizojengewa ndani na zile zilizojumuishwa kwenye maktaba ya kawaida. Vifurushi vya net-ftp, net-map, net-pop, net-smtp, matrix, prime na debug vimejengewa ndani.

Chanzo: opennet.ru

Kuongeza maoni