Release fan de Ruby-programmearring taal 3.1

Ruby 3.1.0 waard útbrocht, in dynamyske objekt-rjochte programmeartaal dy't tige effisjint is yn programma-ûntwikkeling en omfettet de bêste funksjes fan Perl, Java, Python, Smalltalk, Eiffel, Ada en Lisp. De projektkoade wurdt ferspraat ûnder de BSD ("2-klausule BSDL") en "Ruby" lisinsjes, dy't ferwiist nei de lêste ferzje fan 'e GPL-lisinsje en is folslein kompatibel mei GPLv3.

Main ferbetterings:

  • In nije eksperimintele yn-proses JIT-kompiler, YJIT, is tafoege, makke troch de ûntwikkelders fan it Shopify e-commerce platfoarm as ûnderdiel fan in inisjatyf om de prestaasjes fan Ruby-programma's te ferbetterjen dy't it Rails-ramt brûke en in protte metoaden neame. It wichtichste ferskil fan 'e earder brûkte MJIT JIT-kompiler, dy't basearre is op it ferwurkjen fan folsleine metoaden en brûkt in eksterne kompilator yn' e C-taal, is dat YJIT brûkt Lazy Basic Block Versioning (LBBV) en befettet in yntegreare JIT-kompiler. Mei LBBV kompilearret JIT earst allinich it begjin fan 'e metoade, en kompilearret de rest in skoft letter, nei't de brûkte fariabelen en arguminten binne bepaald by de útfiering. By it brûken fan YJIT waard in ferheging fan 22% yn prestaasjes opnommen by it útfieren fan de railsbench-test, en in ferheging fan 39% yn 'e test foar floeibere rendering. YJIT is op it stuit beheind ta stipe foar unix-like OS's op systemen mei x86-64-arsjitektuer en is standert útskeakele (om te aktivearjen, spesifisearje de flagge "--yjit" yn 'e kommandorigel).
  • Ferbettere prestaasjes fan 'e âlde MJIT JIT-kompiler. Foar projekten dy't Rails brûke, is de standert maksimale cachegrutte (-jit-max-cache) ferhege fan 100 nei 10000 ynstruksjes. Stoppe mei it brûken fan JIT foar metoaden mei mear dan 1000 ynstruksjes. Om Zeitwerk of Rails te stypjen, wurdt JIT-koade net mear wegere as TracePoint ynskeakele is foar klasseeveneminten.
  • It omfettet in folslein opnij skreaune debug.gem-debugger, dy't debuggen op ôfstân stipet, de debuggede applikaasje net fertraget, stipet yntegraasje mei avansearre debuggen-ynterfaces (VSCode en Chrome), kin brûkt wurde foar it debuggen fan multi-threaded en multi-proses applikaasjes, leveret in ynterface foar útfiering fan REPL-koade, biedt avansearre tracing-mooglikheden, kin koadefragmenten opnimme en opnij spylje. De earder oanbean debugger lib/debug.rb is fuortsmiten fan de basisdistribúsje.
    Release fan de Ruby-programmearring taal 3.1
  • Implementearre fisuele markearring fan flaters yn call-back trace rapporten. Flatermarkearring wurdt levere mei it ynboude en standert-ynskeakele gem-pakket error_highlight. Om flaterflagge út te skeakeljen, kinne jo de ynstelling "--disable-error_highlight" brûke. $ ruby ​​​​test.rb test.rb: 1: yn "": ûndefinieare metoade "tiid" foar 1: Integer (NoMethodError) 1.time {} ^^^^^ Bedoelde jo? kear
  • De shell fan ynteraktive berekkeningen IRB (REPL, Read-Eval-Print-Loop) ymplementearret automatyske foltôging fan 'e ynfierde koade (as jo typen, wurdt in hint werjûn mei opsjes foar trochgeande ynfier, tusken wêr't jo kinne ferpleatse mei de Tab of Shift + Tab-toets). Nei it selektearjen fan de fuortsettingsopsje, wurdt in dialoochfinster yn 'e buert werjûn dat de dokumintaasje toant dy't ferbûn is mei it selektearre item. De fluchtoets Alt+d kin brûkt wurde om tagong te krijen ta de folsleine dokumintaasje.
    Release fan de Ruby-programmearring taal 3.1
  • De taalsyntaksis lit no wearden yn hash-literalen en kaaiwurdarguminten oerslaan by it oproppen fan funksjes. Bygelyks, ynstee fan de útdrukking "{x: x, y: y}" kinne jo no "{x:, y:}" oantsjutte, en ynstee fan "foo(x: x, y: y)" - foo( x:,y:)".
  • Stabilisearre stipe foar single-line patroan wedstriden (ary => [x, y, z]), dy't net mear as eksperiminteel markearre wurde.
  • De operator "^" yn patroanoerienkomsten kin no willekeurige útdrukkingen befetsje, bygelyks: Prime.each_cons(2).lazy.find_all{_1 yn [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Yn single-line patroanen oerienkomsten kinne jo haakjes weilitte: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • De annotaasjetaal fan it RBS-type, wêrmei jo de struktuer fan it programma en de brûkte typen kinne bepale, hat stipe tafoege foar it opjaan fan de boppegrins fan typeparameters mei it symboal "<", tafoege stipe foar aliassen fan generyske typen, ymplementeare stipe foar kolleksjes foar it behearen fan edelstenen, ferbettere prestaasjes en ymplementearre in protte nije hantekeningen foar ynboude en standert biblioteken.
  • Eksperimintele stipe foar yntegreare ûntwikkelingsomjouwings is tafoege oan de TypePro statyske type-analyzer, dy't RBS-annotaasjes genereart op basis fan koade-analyse sûnder eksplisite typeynformaasje (bygelyks is in tafoeging taret foar it yntegrearjen fan TypePro mei de VSCode-bewurker).
  • De folchoarder fan it ferwurkjen fan meardere opdrachten is feroare. Bygelyks, earder waarden de komponinten fan 'e útdrukking "foo[0], bar[0] = baz, qux" ferwurke yn 'e folchoarder baz, qux, foo, bar, mar no foo, bar, baz, qux.
  • Eksperimintele stipe tafoege foar ûnthâldallokaasje foar snaren mei it VWA-meganisme (Variable Width Allocation).
  • Bywurke ferzjes fan ynboude gem modules en dy opnaam yn de standert bibleteek. De pakketten net-ftp, net-imap, net-pop, net-smtp, matrix, prime en debug binne ynboud.

Boarne: opennet.ru

Add a comment