Rilaxx tal-lingwa ta' programmar Ruby 3.1

Ġie rilaxxat Ruby 3.1.0, lingwa ta 'programmar dinamika orjentata lejn l-oġġetti li hija effiċjenti ħafna fl-iżvilupp tal-programm u tinkorpora l-aqwa karatteristiċi ta' Perl, Java, Python, Smalltalk, Eiffel, Ada u Lisp. Il-kodiċi tal-proġett huwa mqassam taħt il-liċenzji BSD ("2-clause BSDL") u "Ruby", li tirreferi għall-aħħar verżjoni tal-liċenzja GPL u hija kompletament kompatibbli mal-GPLv3.

Titjib ewlieni:

  • Ġie miżjud kompilatur JIT sperimentali ġdid fil-proċess, YJIT, maħluqa mill-iżviluppaturi tal-pjattaforma tal-kummerċ elettroniku Shopify bħala parti minn inizjattiva biex tittejjeb il-prestazzjoni tal-programmi Ruby li jużaw il-qafas Rails u jsejħu ħafna metodi. Id-differenza ewlenija mill-kompilatur MJIT JIT użat qabel, li huwa bbażat fuq l-ipproċessar ta 'metodi sħaħ u juża kompilatur estern fil-lingwa C, hija li YJIT juża Lazy Basic Block Versioning (LBBV) u fih kompilatur JIT integrat. Ma 'LBBV, JIT l-ewwel jikkompila biss il-bidu tal-metodu, u jikkompila l-bqija ftit tal-ħin wara, wara li t-tipi ta' varjabbli u argumenti użati jiġu ddeterminati waqt l-eżekuzzjoni. Meta tuża YJIT, ġiet irreġistrata żieda ta '22% fil-prestazzjoni meta tmexxi t-test tal-railsbench, u żieda ta' 39% fit-test tal-likwida. YJIT bħalissa huwa limitat għall-appoġġ għal OSs bħal unix fuq sistemi b'arkitettura x86-64 u huwa diżattivat b'mod awtomatiku (biex tattiva, speċifika l-bandiera "--yjit" fil-linja tal-kmand).
  • Prestazzjoni mtejba tal-kompilatur MJIT JIT antik. Għal proġetti li jużaw Rails, id-daqs massimu tal-cache default (--jit-max-cache) żdied minn 100 għal 10000 istruzzjonijiet. Waqaf juża JIT għal metodi b'aktar minn 1000 struzzjoni. Biex tappoġġja Zeitwerk of Rails, il-kodiċi JIT ma jibqax skartat meta TracePoint ikun attivat għall-avvenimenti tal-klassi.
  • Jinkludi debugger kompletament miktub mill-ġdid debug.gem, li jappoġġja debugging remot, ma jnaqqasx l-applikazzjoni debugged, jappoġġja l-integrazzjoni ma 'interfaces avvanzati ta' debugging (VSCode u Chrome), jista 'jintuża għal debugging b'ħafna kamini u applikazzjonijiet b'ħafna proċessi, jipprovdi interface ta 'eżekuzzjoni tal-kodiċi REPL, joffri kapaċitajiet ta' traċċar avvanzati, jista 'jirreġistra u jerġa' jdaħħal siltiet tal-kodiċi. Id-debugger lib/debug.rb offrut qabel tneħħa mid-distribuzzjoni bażi.
    Rilaxx tal-lingwa ta' programmar Ruby 3.1
  • Implimenta enfasi viżwali ta 'żbalji fir-rapporti ta' traċċar ta 'sejħa lura. L-immarkar tal-iżbalji huwa pprovdut bl-użu tal-pakkett tal-gem integrat u awtomatikament attivat error_highlight. Biex tiddiżattiva l-immarkar tal-iżbalji, tista’ tuża l-issettjar “--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in " ": metodu mhux definit "ħin" għal 1:Integer (NoMethodError) 1.time {} ^^^^^ Ridt tfisser? drabi
  • Il-qoxra tal-kalkoli interattivi IRB (REPL, Read-Eval-Print-Loop) timplimenta t-tlestija awtomatika tal-kodiċi mdaħħla (kif tittajpja, tintwera ħjiel b'għażliet għall-input kontinwu, li bejniethom tista 'timxi bit-Tab jew Shift + Ċavetta tat-tab). Wara li tagħżel l-għażla ta 'kontinwazzjoni, tintwera kaxxa ta' djalogu fil-qrib li turi d-dokumentazzjoni assoċjata mal-oġġett magħżul. Is-shortcut tat-tastiera Alt+d tista' tintuża biex taċċessa d-dokumentazzjoni sħiħa.
    Rilaxx tal-lingwa ta' programmar Ruby 3.1
  • Is-sintassi tal-lingwa issa tippermetti li l-valuri fil-literali tal-hash u l-argumenti tal-kliem kjavi jinqabżu meta ssejjaħ funzjonijiet. Pereżempju, minflok l-espressjoni “{x: x, y: y}” issa tista’ tispeċifika “{x:, y:}”, u minflok “foo(x: x, y: y)” - foo( x:, y: )".
  • Appoġġ stabilizzat għal logħbiet tal-mudell ta 'linja waħda (ary => [x, y, z]), li m'għadhomx immarkati bħala sperimentali.
  • L-operatur "^" fit-taqbil tal-mudelli issa jista' jkun fih espressjonijiet arbitrarji, pereżempju: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • F'taqbil tal-mudell ta' linja waħda, tista' tħalli barra l-parentesi: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Il-lingwa ta’ annotazzjoni tat-tip RBS, li tippermettilek tiddetermina l-istruttura tal-programm u t-tipi użati, żiedet appoġġ biex tispeċifika l-limitu ta’ fuq tal-parametri tat-tip bl-użu tas-simbolu “<”, żiedet appoġġ għal psewdonimi ta’ tipi ġeneriċi, implimenta appoġġ għal kollezzjonijiet għall-ġestjoni tal-ħaġar prezzjuż, titjib fil-prestazzjoni u implimentati ħafna firem ġodda għal libreriji integrati u standard.
  • Appoġġ sperimentali għal ambjenti ta 'żvilupp integrat ġie miżjud mal-analizzatur tat-tip statiku TypePro, li jiġġenera annotazzjonijiet RBS ibbażati fuq analiżi tal-kodiċi mingħajr informazzjoni espliċita tat-tip (pereżempju, ġie ppreparat add-on għall-integrazzjoni ta' TypePro mal-editur VSCode).
  • L-ordni tal-ipproċessar ta' assenjazzjonijiet multipli nbidlet. Pereżempju, qabel il-komponenti tal-espressjoni "foo[0], bar[0] = baz, qux" kienu pproċessati fl-ordni baz, qux, foo, bar, iżda issa foo, bar, baz, qux.
  • Miżjud appoġġ sperimentali għall-allokazzjoni tal-memorja għall-kordi bl-użu tal-mekkaniżmu VWA (Variable Width Allocation).
  • Verżjonijiet aġġornati ta 'moduli gem integrati u dawk inklużi fil-librerija standard. Il-pakketti net-ftp, net-imap, net-pop, net-smtp, matrix, prime u debug huma integrati.

Sors: opennet.ru

Żid kumment