Ruby программалоо тилинин чыгарылышы 3.1

Ruby 3.1.0 чыгарылды, динамикалык объектиге багытталган программалоо тили, программаны иштеп чыгууда жогорку эффективдүү жана Perl, Java, Python, Smalltalk, Eiffel, Ada жана Lispдин эң мыкты мүмкүнчүлүктөрүн камтыган. Долбоордун коду BSD (“2-пункттуу BSDL”) жана “Ruby” лицензияларынын алкагында таратылат, ал GPL лицензиясынын акыркы версиясына тиешелүү жана GPLv3 менен толук шайкеш келет.

Негизги жакшыртуулар:

  • Shopify электрондук коммерциялык платформасынын иштеп чыгуучулары тарабынан Rails алкагын колдонгон жана көптөгөн ыкмаларды чакырган Ruby программаларынын иштешин жакшыртуу демилгесинин алкагында түзүлгөн жаңы эксперименталдык процесстик JIT компилятору YJIT кошулду. Мурда колдонулган MJIT JIT компиляторунан негизги айырмасы, ал бүт методдорду иштетүүгө негизделген жана Си тилинде тышкы компиляторду колдонот, YJIT Lazy Basic Block Versioning (LBBV) колдонот жана интеграцияланган JIT компиляторун камтыйт. LBBV менен, JIT адегенде методдун башталышын гана түзөт, ал эми калганын бир нече убакыт өткөндөн кийин, колдонулган өзгөрмөлөрдүн жана аргументтердин түрлөрү аткаруу учурунда аныкталгандан кийин түзөт. YJITти колдонууда, railsbench тестин жүргүзүүдө өндүрүмдүүлүктүн 22% га жогорулашы жана суюктукту көрсөтүү сынагында 39% га жогорулашы катталган. YJIT учурда x86-64 архитектурасы бар системалардагы unix сыяктуу ОСларды колдоо менен чектелген жана демейки боюнча өчүрүлгөн (жандыруу үчүн, буйрук сабында “--yjit” желегин белгилеңиз).
  • Эски MJIT JIT компиляторунун жакшыртылган иштеши. Rails колдонгон долбоорлор үчүн демейки максималдуу кэш өлчөмү (--jit-max-cache) 100дөн 10000 1000 нускамага чейин көбөйтүлгөн. XNUMXден ашык нускамалары бар ыкмалар үчүн JIT колдонууну токтотту. Zeitwerk of Rails колдоо үчүн, TracePoint класс окуялары үчүн иштетилгенде, JIT коду ташталбайт.
  • Ал толугу менен кайра жазылган debug.gem мүчүлүштүктөрдү камтыйт, ал алыстан мүчүлүштүктөрдү оңдоону колдойт, мүчүлүштүктөрдү оңдоочу тиркемени жайлабайт, өркүндөтүлгөн мүчүлүштүктөрдү оңдоо интерфейстери (VSCode жана Chrome) менен интеграцияны колдойт, көп жиптүү жана көп процесстүү тиркемелерди оңдоо үчүн колдонулушу мүмкүн, камсыз кылат. REPL кодун аткаруу интерфейси, өркүндөтүлгөн байкоо мүмкүнчүлүктөрүн сунуштайт, код үзүндүлөрүн жазып жана кайталай алат. Мурда сунушталган мүчүлүштүктөрдү оңдоочу lib/debug.rb базалык бөлүштүрүүдөн алынып салынды.
    Ruby программалоо тилинин чыгарылышы 3.1
  • Кайра чалуулар боюнча отчеттордогу каталарды визуалдык бөлүп көрсөтүү ишке ашырылды. Ката белгилөө орнотулган жана демейки иштетилген асыл таш пакети error_highlight аркылуу камсыз кылынат. Ката белгилөөнү өчүрүү үчүн, "--disable-error_highlight" жөндөөсүн колдонсоңуз болот. $ ruby ​​​​test.rb test.rb:1:in " ": 1 үчүн аныкталбаган "убакыт" ыкмасы:Integer (NoMethodError) 1.time {} ^^^^^ Айткыңыз келдиби? жолу
  • IRB интерактивдүү эсептөөлөр кабыгы (REPL, Read-Eval-Print-Loop) киргизилген коддун автоматтык түрдө бүтүрүлүшүн ишке ашырат (сиз терип жатканда, киргизүүнү улантуу опциялары менен кыйытма көрсөтүлөт, алардын ортосунда сиз Tab же Shift+ менен жыла аласыз. Tab баскычы). Улантуу опциясын тандагандан кийин, жакын жерде тандалган нерсе менен байланышкан документтерди көрсөткөн диалог терезеси пайда болот. Толук документацияга кирүү үчүн 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 in [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, матрица, прайм жана мүчүлүштүктөрдү оңдоо пакеттери орнотулган.

Source: opennet.ru

Комментарий кошуу