Ruby ծրագրավորման լեզվի թողարկում 3.1

Թողարկվել է Ruby 3.1.0-ը՝ դինամիկ օբյեկտի վրա հիմնված ծրագրավորման լեզու, որը շատ արդյունավետ է ծրագրերի մշակման մեջ և ներառում է Perl-ի, Java-ի, Python-ի, Smalltalk-ի, Eiffel-ի, Ada-ի և Lisp-ի լավագույն հատկանիշները: Ծրագրի կոդը բաշխված է BSD («2 կետ BSDL») և «Ruby» լիցենզիաների ներքո, որը վերաբերում է GPL լիցենզիայի վերջին տարբերակին և լիովին համատեղելի է GPLv3-ի հետ:

Հիմնական բարելավումներ.

  • Ավելացվել է նոր փորձարարական JIT կոմպիլյատոր՝ YJIT, որը ստեղծվել է Shopify էլեկտրոնային առևտրի հարթակի մշակողների կողմից՝ որպես Ruby ծրագրերի աշխատանքը բարելավելու նախաձեռնության մաս, որոնք օգտագործում են Rails շրջանակը և կոչում են բազմաթիվ մեթոդներ: Հիմնական տարբերությունը նախկինում օգտագործված MJIT JIT կոմպիլյատորից, որը հիմնված է ամբողջ մեթոդների մշակման վրա և օգտագործում է արտաքին կոմպիլյատոր C լեզվով, այն է, որ YJIT-ն օգտագործում է Lazy Basic Block Versioning (LBBV) և պարունակում է ինտեգրված JIT կոմպիլյատոր: LBBV-ով JIT-ը սկզբում կազմում է մեթոդի միայն սկիզբը, իսկ մնացածը կազմում է որոշ ժամանակ անց, երբ կատարման ընթացքում որոշվեն օգտագործվող փոփոխականների և արգումենտների տեսակները։ YJIT-ն օգտագործելիս արձանագրվել է կատարողականի 22% աճ railsbench թեստը վարելիս, և 39% աճ՝ հեղուկ արտանետման թեստում: YJIT-ը ներկայումս սահմանափակված է x86-64 ճարտարապետությամբ համակարգերում unix-ի նման ՕՀ-ների աջակցությամբ և լռելյայն անջատված է (ակտիվացնելու համար հրամանի տողում նշեք «--yjit» դրոշը):
  • Հին MJIT JIT կոմպիլյատորի բարելավված կատարումը: Rails օգտագործող նախագծերի համար քեշի կանխադրված առավելագույն չափը (--jit-max-cache) ավելացվել է 100-ից մինչև 10000 հրահանգ: Դադարեցրեց JIT-ի օգտագործումը 1000-ից ավելի հրահանգներով մեթոդների համար: Zeitwerk of Rails-ին աջակցելու համար JIT կոդը այլևս չի հեռացվում, երբ TracePoint-ը միացված է դասի միջոցառումների համար:
  • Այն ներառում է ամբողջությամբ վերագրված debug.gem կարգաբերիչ, որն աջակցում է հեռավոր կարգաբերումներին, չի դանդաղեցնում վրիպազերծված հավելվածը, աջակցում է ինտեգրումը վրիպազերծման առաջադեմ ինտերֆեյսների հետ (VSCode և Chrome), կարող է օգտագործվել բազմաշերտ և բազմաբնույթ ծրագրերի վրիպազերծման համար, ապահովում է REPL կոդի կատարման միջերես, որն առաջարկում է հետագծման առաջադեմ հնարավորություններ, կարող է ձայնագրել և վերարտադրել կոդի հատվածները: Նախկինում առաջարկված վրիպազերծիչը lib/debug.rb հեռացվել է բազային բաշխումից:
    Ruby ծրագրավորման լեզվի թողարկում 3.1
  • Իրականացվել է հետ կանչելու հետքի հաշվետվություններում սխալների տեսողական ընդգծում: Սխալի նշումը տրամադրվում է ներկառուցված և լռելյայն միացված gem փաթեթի error_highlight-ի միջոցով: Սխալների նշումն անջատելու համար կարող եք օգտագործել «--disable-error_highlight» պարամետրը: $ ruby ​​test.rb test.rb:1:in "". չսահմանված մեթոդ "time" 1:Integer (NoMethodError) 1.time {} ^^^^^ Ուզում էիր ասել. անգամ
  • IRB ինտերակտիվ հաշվարկների կեղևը (REPL, Read-Eval-Print-Loop) իրականացնում է մուտքագրված կոդի ավտոմատ լրացում (մուտքագրելիս ցուցադրվում է ակնարկ՝ շարունակական մուտքագրման տարբերակներով, որոնց միջև կարող եք շարժվել Tab կամ Shift+-ով: Ներդիրի ստեղն): Շարունակության տարբերակը ընտրելուց հետո մոտակայքում ցուցադրվում է երկխոսության տուփ, որը ցուցադրում է ընտրված տարրի հետ կապված փաստաթղթերը: Alt+d ստեղնաշարի դյուրանցումը կարող է օգտագործվել ամբողջական փաստաթղթերին մուտք գործելու համար:
    Ruby ծրագրավորման լեզվի թողարկում 3.1
  • Լեզվի շարահյուսությունն այժմ թույլ է տալիս ֆունկցիաներ կանչելիս բաց թողնել հեշ բառի արժեքները և հիմնաբառերի արգումենտները: Օրինակ՝ «{x: x, y: y}» արտահայտության փոխարեն այժմ կարող եք նշել «{x:, y:}», իսկ «foo(x: x, y: y)»-ի փոխարեն՝ foo( x:, y: )»:
  • Կայունացված աջակցություն մեկ տողով օրինաչափությունների համընկնումների համար (ary => [x, y, z]), որոնք այլևս չեն նշվում որպես փորձնական:
  • «^» օպերատորը օրինաչափությունների համընկնումներում այժմ կարող է պարունակել կամայական արտահայտություններ, օրինակ՝ Prime.each_cons(2).lazy.find_all{_1 [n, ^(n + 2)]}-ում.take(3).to_a #= > [[3, 5], [5, 7], [11, 13]]
  • Մեկ տողով օրինաչափությունների համընկնումներում կարող եք բաց թողնել փակագծերը՝ [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS տիպի անոտացիայի լեզուն, որը թույլ է տալիս որոշել ծրագրի կառուցվածքը և օգտագործվող տեսակները, ավելացրել է աջակցություն տիպի պարամետրերի վերին սահմանը նշելու համար՝ օգտագործելով «<» խորհրդանիշը, ավելացրել է աջակցություն ընդհանուր տեսակների անունների համար, իրականացրել է աջակցություն. Ակնեղենի կառավարման հավաքածուներ, բարելավված կատարողականություն և ներդրված բազմաթիվ նոր ստորագրություններ ներկառուցված և ստանդարտ գրադարանների համար:
  • Ինտեգրված զարգացման միջավայրերի փորձարարական աջակցությունը ավելացվել է TypePro ստատիկ տիպի անալիզատորին, որը ստեղծում է RBS ծանոթագրություններ՝ հիմնված կոդերի վերլուծության վրա՝ առանց հստակ տեսակի տեղեկատվության (օրինակ, հավելում է պատրաստվել TypePro-ի VSCode խմբագրիչի հետ ինտեգրելու համար):
  • Բազմաթիվ հանձնարարությունների մշակման կարգը փոխվել է. Օրինակ՝ նախկինում «foo[0], bar[0] = baz, qux» արտահայտության բաղադրիչները մշակվում էին baz, qux, foo, bar, իսկ այժմ foo, bar, baz, qux կարգով։
  • Ավելացվեց փորձնական աջակցություն տողերի համար հիշողության բաշխման համար՝ օգտագործելով VWA (Variable Width Allocation) մեխանիզմը:
  • Ներկառուցված թանկարժեք մոդուլների և ստանդարտ գրադարանում ներառվածների թարմացված տարբերակները: Ներկառուցված են net-ftp, net-imap, net-pop, net-smtp, matrix, prime և debug փաթեթները:

Source: opennet.ru

Добавить комментарий