Izdaja programskega jezika Ruby 3.1

Izdan je Ruby 3.1.0, dinamičen objektno usmerjen programski jezik, ki je zelo učinkovit pri razvoju programov in vključuje najboljše funkcije Perl, Java, Python, Smalltalk, Eiffel, Ada in Lisp. Projektna koda se distribuira pod licencama BSD ("2-clause BSDL") in "Ruby", ki se nanaša na najnovejšo različico licence GPL in je popolnoma združljiva z GPLv3.

Glavne izboljšave:

  • Dodan je bil nov eksperimentalni prevajalnik JIT v procesu, YJIT, ki so ga ustvarili razvijalci platforme za e-trgovino Shopify kot del pobude za izboljšanje učinkovitosti programov Ruby, ki uporabljajo ogrodje Rails in kličejo veliko metod. Ključna razlika od prej uporabljenega prevajalnika MJIT JIT, ki temelji na obdelavi celotnih metod in uporablja zunanji prevajalnik v jeziku C, je ta, da YJIT uporablja Lazy Basic Block Versioning (LBBV) in vsebuje integriran prevajalnik JIT. Z LBBV JIT najprej prevede samo začetek metode, preostanek pa prevede nekaj časa kasneje, potem ko so med izvajanjem določeni tipi uporabljenih spremenljivk in argumentov. Pri uporabi YJIT je bilo zabeleženo 22-odstotno povečanje zmogljivosti pri izvajanju preizkusa railsbench in 39-odstotno povečanje pri preskusu tekočega upodabljanja. YJIT je trenutno omejen na podporo za operacijske sisteme, podobne unixu, v sistemih z arhitekturo x86-64 in je privzeto onemogočen (za aktiviranje v ukazni vrstici določite zastavico »--yjit«).
  • Izboljšana zmogljivost starega prevajalnika MJIT JIT. Za projekte, ki uporabljajo Rails, je privzeta največja velikost predpomnilnika (--jit-max-cache) povečana s 100 na 10000 navodil. Prenehal sem uporabljati JIT za metode z več kot 1000 navodili. Za podporo Zeitwerk of Rails koda JIT ni več zavržena, ko je TracePoint omogočen za dogodke razreda.
  • Vključuje popolnoma prepisan razhroščevalec debug.gem, ki podpira oddaljeno razhroščevanje, ne upočasni razhroščene aplikacije, podpira integracijo z naprednimi vmesniki za odpravljanje napak (VSCode in Chrome), lahko se uporablja za razhroščevanje večnitnih in večprocesnih aplikacij, zagotavlja vmesnik za izvajanje kode REPL, ponuja napredne zmožnosti sledenja, lahko snema in ponovno predvaja odrezke kode. Prej ponujeni razhroščevalnik lib/debug.rb je bil odstranjen iz osnovne distribucije.
    Izdaja programskega jezika Ruby 3.1
  • Implementirano vizualno označevanje napak v poročilih o sledenju povratnih klicev. Označevanje napak je na voljo z uporabo vgrajenega in privzeto omogočenega paketa gem error_highlight. Če želite onemogočiti označevanje napak, lahko uporabite nastavitev »--disable-error_highlight«. $ ruby ​​​​test.rb test.rb:1:in " ": nedefinirana metoda "čas" za 1:Integer (NoMethodError) 1.time {} ^^^^^ Ste mislili? krat
  • Lupina interaktivnih izračunov IRB (REPL, Read-Eval-Print-Loop) izvaja samodejno dokončanje vnesene kode (med tipkanjem se prikaže namig z možnostmi za nadaljevanje vnosa, med katerimi se lahko premikate s Tab ali Shift+ tipka Tab). Po izbiri možnosti nadaljevanja se v bližini prikaže pogovorno okno, v katerem je prikazana dokumentacija, povezana z izbranim elementom. Za dostop do celotne dokumentacije lahko uporabite bližnjico na tipkovnici Alt+d.
    Izdaja programskega jezika Ruby 3.1
  • Sintaksa jezika zdaj omogoča preskok vrednosti v zgoščenih literalih in argumentih ključnih besed pri klicanju funkcij. Na primer, namesto izraza “{x: x, y: y}” lahko zdaj podate “{x:, y:}” in namesto “foo(x: x, y: y)” - foo( x:, y: )".
  • Stabilizirana podpora za enovrstična ujemanja vzorcev (ary => [x, y, z]), ki niso več označena kot eksperimentalna.
  • Operator »^« pri ujemanju vzorcev lahko zdaj vsebuje poljubne izraze, na primer: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Pri ujemanju vzorcev v eni vrstici lahko izpustite oklepaje: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Jezik opomb tipa RBS, ki vam omogoča določanje strukture programa in uporabljenih tipov, ima dodano podporo za določanje zgornje meje parametrov tipa z uporabo simbola “<”, dodano podporo za vzdevke generičnih tipov, implementirano podporo za zbirk za upravljanje draguljev, izboljšano delovanje in uvedeno veliko novih podpisov za vgrajene in standardne knjižnice.
  • Statičnemu tipskemu analizatorju TypePro je dodana eksperimentalna podpora za integrirana razvojna okolja, ki generira RBS anotacije na podlagi analize kode brez eksplicitnih tipskih informacij (npr. pripravljen je dodatek za integracijo TypePro z urejevalnikom VSCode).
  • Vrstni red obdelave več nalog je bil spremenjen. Na primer, prej so bile komponente izraza "foo[0], bar[0] = baz, qux" obdelane v vrstnem redu baz, qux, foo, bar, zdaj pa foo, bar, baz, qux.
  • Dodana eksperimentalna podpora za dodeljevanje pomnilnika za nize z uporabo mehanizma VWA (dodeljevanje spremenljive širine).
  • Posodobljene različice vgrajenih modulov gem in tistih, vključenih v standardno knjižnico. Vgrajeni so paketi net-ftp, net-imap, net-pop, net-smtp, matrix, prime in debug.

Vir: opennet.ru

Dodaj komentar