Нашри забони барномасозии 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, ки ба коркарди тамоми усулҳо асос ёфтааст ва компилятори берунаро бо забони Си истифода мебарад, дар он аст, ки YJIT Lazy Basic Block Versioning (LBBV) -ро истифода мебарад ва дорои компилятори ҳамгирошудаи JIT мебошад. Бо LBBV, JIT аввал танҳо ибтидои усулро тартиб медиҳад ва боқимондаро баъд аз чанд вақт пас аз муайян кардани намудҳои тағирёбандаҳо ва аргументҳои истифодашуда ҳангоми иҷро тартиб медиҳад. Ҳангоми истифодаи YJIT, ҳангоми иҷрои санҷиши railsbench 22% афзоиши кор ва 39% афзоиши санҷиши моеъ ба қайд гирифта шуд. YJIT айни замон бо дастгирии OS-ҳои ба unix монанд дар системаҳои меъмории x86-64 маҳдуд аст ва ба таври нобаёнӣ ғайрифаъол аст (барои фаъол кардан, парчами “--yjit”-ро дар сатри фармон нишон диҳед).
  • Фаъолияти беҳтаршудаи компилятори кӯҳнаи MJIT JIT. Барои лоиҳаҳое, ки Rails истифода мебаранд, андозаи пешфарзии кэш (--jit-max-cache) аз 100 то 10000 дастур зиёд карда шудааст. Истифодаи JIT барои усулҳои дорои зиёда аз 1000 дастур қатъ карда шуд. Барои дастгирии Zeitwerk of Rails, вақте ки TracePoint барои рӯйдодҳои синф фаъол аст, рамзи JIT дигар партофта намешавад.
  • Он як debug.gem-и пурра аз нав навишташударо дар бар мегирад, ки ислоҳи дурдастро дастгирӣ мекунад, барномаи ислоҳшударо суст намекунад, ҳамгироиро бо интерфейсҳои пешрафтаи ислоҳи хатогӣ (VSCode ва Chrome) дастгирӣ мекунад, метавонад барои ислоҳи барномаҳои бисёр ришта ва бисёрҷанба истифода шавад, таъмин менамояд. интерфейси иҷрои рамзи REPL, имкониятҳои пайгирии пешрафтаро пешниҳод мекунад, метавонад пораҳои кодро сабт ва такрор кунад. Debugger, ки қаблан пешниҳод шуда буд, 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 дар [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 (Тағйирёбандаи паҳнои тақсимот) илова карда шуд.
  • Версияҳои навшудаи модулҳои дарунсохт ва онҳое, ки ба китобхонаи стандартӣ дохил карда шудаанд. Бастаҳои net-ftp, net-imap, net-pop, net-smtp, matrix, prime ва debug дарунсохтанд.

Манбаъ: opennet.ru

Илова Эзоҳ