Pagpagawas sa Ruby programming language 3.1

Ang Ruby 3.1.0 gibuhian, usa ka dinamikong object-oriented nga programming language nga episyente kaayo sa pagpalambo sa programa ug gilakip ang labing maayo nga mga bahin sa Perl, Java, Python, Smalltalk, Eiffel, Ada ug Lisp. Ang code sa proyekto giapod-apod ubos sa BSD (β€œ2-clause BSDL”) ug β€œRuby” nga mga lisensya, nga nagtumong sa pinakabag-o nga bersyon sa lisensya sa GPL ug hingpit nga nahiuyon sa GPLv3.

Panguna nga mga pag-uswag:

  • Usa ka bag-ong eksperimento nga in-process nga JIT compiler, YJIT, gidugang, nga gihimo sa mga nag-develop sa Shopify e-commerce nga plataporma isip bahin sa usa ka inisyatiba aron mapaayo ang pasundayag sa mga programa sa Ruby nga naggamit sa Rails framework ug nagtawag sa daghang mga pamaagi. Ang yawe nga kalainan gikan sa kaniadto gigamit nga MJIT JIT compiler, nga gibase sa pagproseso sa tibuok nga mga pamaagi ug naggamit sa usa ka eksternal nga compiler sa C nga pinulongan, mao nga ang YJIT naggamit sa Lazy Basic Block Versioning (LBBV) ug naglangkob sa usa ka integrated JIT compiler. Uban sa LBBV, ang JIT una nga nag-compile lamang sa sinugdanan sa pamaagi, ug nag-compile sa nahabilin pipila ka oras sa ulahi, pagkahuman ang mga tipo sa mga variable ug mga argumento nga gigamit matino sa panahon sa pagpatuman. Kung gigamit ang YJIT, usa ka 22% nga pagtaas sa pasundayag ang natala kung nagpadagan sa pagsulay sa railsbench, ug usa ka 39% nga pagtaas sa pagsulay sa pag-render sa likido. Ang YJIT sa pagkakaron limitado sa pagsuporta alang sa unix-like OSes sa mga sistema nga adunay x86-64 nga arkitektura ug gi-disable pinaagi sa default (aron ma-activate, ipiho ang "--yjit" nga bandila sa command line).
  • Gipauswag nga pasundayag sa daan nga MJIT JIT compiler. Para sa mga proyekto nga naggamit ug Rails, ang default maximum nga gidak-on sa cache (--jit-max-cache) gidugangan gikan sa 100 ngadto sa 10000 ka instruksyon. Gihunong ang paggamit sa JIT alang sa mga pamaagi nga adunay labaw sa 1000 nga mga panudlo. Para suportahan ang Zeitwerk of Rails, ang JIT code dili na ilabay kung ang TracePoint ma-enable para sa mga panghitabo sa klase.
  • Naglakip kini sa usa ka bug-os nga gisulat pag-usab nga debug.gem debugger, nga nagsuporta sa hilit nga pag-debug, wala magpahinay sa debugged nga aplikasyon, nagsuporta sa integrasyon sa mga advanced debugging interface (VSCode ug Chrome), mahimong gamiton alang sa pag-debug sa multi-threaded ug multi-process nga mga aplikasyon, naghatag usa ka interface sa pagpatuman sa REPL code, nagtanyag mga advanced nga kapabilidad sa pagsubay, mahimo nga magrekord ug mag-replay sa mga snippet sa code. Ang daan nang gitanyag nga debugger lib/debug.rb gitangtang na sa base distribution.
    Pagpagawas sa Ruby programming language 3.1
  • Gipatuman ang biswal nga pagpasiugda sa mga kasaypanan sa mga call back trace report. Gihatag ang sayup nga pag-flag gamit ang built-in ug default-enabled gem package error_highlight. Aron ma-disable ang pag-flag sa sayup, mahimo nimong gamiton ang setting nga "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in " ": undefined method "time" para sa 1:Integer (NoMethodError) 1.time {} ^^^^^ Ang imong gipasabot? mga panahon
  • Ang kabhang sa interactive nga mga kalkulasyon IRB (REPL, Read-Eval-Print-Loop) nagpatuman sa awtomatikong pagkompleto sa gisulod nga code (samtang nag-type ka, gipakita ang usa ka pahiwatig nga adunay mga opsyon alang sa pagpadayon sa input, diin mahimo nimong ibalhin ang Tab o Shift+ Tab key). Human mapili ang opsyon sa pagpadayon, usa ka dialog box ang gipakita sa duol nga nagpakita sa dokumentasyon nga nalangkit sa pinili nga butang. Ang keyboard shortcut nga Alt+d mahimong gamiton aron ma-access ang tibuok dokumentasyon.
    Pagpagawas sa Ruby programming language 3.1
  • Gitugotan na karon sa syntax sa pinulongan ang mga kantidad sa hash literal ug mga argumento sa keyword nga laktawan kung magtawag sa mga function. Pananglitan, imbes sa ekspresyong "{x: x, y: y}" mahimo nimong ipiho ang "{x:, y:}", ug imbes nga "foo(x: x, y: y)" - foo( x:, ug :)".
  • Gipalig-on nga suporta alang sa single-line pattern matches (ary => [x, y, z]), nga wala na gi-flag isip eksperimento.
  • Ang "^" operator sa pattern matches mahimo na nga maglangkob sa arbitraryong mga ekspresyon, pananglitan: Prime.each_cons(2).lazy.find_all{_1 sa [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Sa single-line pattern matches, mahimo nimong laktawan ang parentheses: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Ang RBS type annotation nga lengguwahe, nga nagtugot kanimo sa pagtino sa istruktura sa programa ug sa mga tipo nga gigamit, adunay dugang nga suporta alang sa pagtino sa taas nga limitasyon sa tipo nga mga parameter gamit ang "<" nga simbolo, dugang nga suporta alang sa mga alias sa mga generic nga tipo, gipatuman nga suporta alang sa mga koleksyon alang sa pagdumala sa mga mutya, gipaayo nga performance ug gipatuman ang daghang bag-ong mga pirma para sa built-in ug standard nga mga librarya.
  • Ang eksperimento nga suporta alang sa integrated development environment gidugang ngadto sa TypePro static type analyzer, nga nagmugna sa RBS annotation base sa code analysis nga walay klaro nga type nga impormasyon (pananglitan, usa ka add-on ang giandam alang sa pag-integrate sa TypePro sa VSCode editor).
  • Ang han-ay sa pagproseso sa daghang mga buluhaton giusab. Pananglitan, kaniadto ang mga sangkap sa ekspresyong "foo[0], bar[0] = baz, qux" giproseso sa han-ay nga baz, qux, foo, bar, apan karon foo, bar, baz, qux.
  • Gidugang nga suporta sa eksperimento alang sa alokasyon sa memorya alang sa mga kuwerdas gamit ang mekanismo sa VWA (Variable Width Allocation).
  • Gi-update nga mga bersyon sa built-in gem modules ug kadtong gilakip sa standard library. Ang net-ftp, net-imap, net-pop, net-smtp, matrix, prime ug debug packages kay built-in.

Source: opennet.ru

Idugang sa usa ka comment