Vrystelling van die Ruby-programmeertaal 3.1

Ruby 3.1.0 is vrygestel, 'n dinamiese objekgeoriënteerde programmeertaal wat hoogs doeltreffend in programontwikkeling is en die beste kenmerke van Perl, Java, Python, Smalltalk, Eiffel, Ada en Lisp insluit. Die projekkode word onder die BSD ("2-klousule BSDL") en "Ruby"-lisensies versprei, wat verwys na die nuutste weergawe van die GPL-lisensie en ten volle versoenbaar is met GPLv3.

Belangrikste verbeterings:

  • 'n Nuwe eksperimentele in-proses JIT samesteller, YJIT, is bygevoeg, geskep deur die ontwikkelaars van die Shopify e-handel platform as deel van 'n inisiatief om die werkverrigting van Ruby programme te verbeter wat die Rails raamwerk gebruik en baie metodes noem. Die belangrikste verskil van die voorheen gebruikte MJIT JIT-samesteller, wat gebaseer is op die verwerking van hele metodes en 'n eksterne samesteller in die C-taal gebruik, is dat YJIT Lazy Basic Block Versioning (LBBV) gebruik en 'n geïntegreerde JIT-samesteller bevat. Met LBBV stel JIT eers net die begin van die metode saam, en stel die res 'n rukkie later saam, nadat die tipe veranderlikes en argumente wat gebruik word tydens uitvoering bepaal is. By die gebruik van YJIT is 'n 22% toename in werkverrigting aangeteken wanneer die railsbench toets uitgevoer word, en 'n 39% toename in die vloeistof-weergawe toets. YJIT is tans beperk tot ondersteuning vir unix-agtige bedryfstelsels op stelsels met x86-64-argitektuur en is by verstek gedeaktiveer (om te aktiveer, spesifiseer die "--yjit" vlag in die opdragreël).
  • Verbeterde werkverrigting van die ou MJIT JIT samesteller. Vir projekte wat Rails gebruik, is die verstek maksimum kasgrootte (--jit-max-cache) van 100 tot 10000 1000 instruksies verhoog. Opgehou om JIT te gebruik vir metodes met meer as XNUMX instruksies. Om Zeitwerk of Rails te ondersteun, word JIT-kode nie meer weggegooi wanneer TracePoint vir klasgeleenthede geaktiveer is nie.
  • Dit bevat 'n heeltemal herskryfde debug.gem-ontfouter, wat afstandontfouting ondersteun, nie die ontfoutingstoepassing vertraag nie, ondersteun integrasie met gevorderde ontfoutingskoppelvlakke (VSCode en Chrome), kan gebruik word vir die ontfouting van multi-threaded en multi-proses toepassings, bied 'n REPL kode uitvoering koppelvlak, bied gevorderde opsporing vermoëns, kan opneem en herspeel kode brokkies. Die voorheen aangebied ontfouter lib/debug.rb is uit die basisverspreiding verwyder.
    Vrystelling van die Ruby-programmeertaal 3.1
  • Implementeer visuele uitlig van foute in terugbelopspoorverslae. Foutvlag word verskaf met behulp van die ingeboude en verstek-geaktiveerde juweelpakket error_highlight. Om foutvlag te deaktiveer, kan jy die “--disable-error_highlight”-instelling gebruik. $ ruby ​​test.rb test.rb:1:in " ": ongedefinieerde metode "tyd" vir 1:Geheelgetal (NoMethodError) 1.time {} ^^^^^ Bedoel jy? tye
  • Die dop van interaktiewe berekeninge IRB (REPL, Read-Eval-Print-Loop) implementeer outomatiese voltooiing van die ingevoerde kode (terwyl jy tik, word 'n wenk vertoon met opsies vir voortgesette invoer, waartussen jy kan beweeg met die Tab of Shift+ Tab-sleutel). Nadat u die voortsetting-opsie gekies het, word 'n dialoogkassie naby vertoon wat die dokumentasie wat met die geselekteerde item geassosieer word, vertoon. Die sleutelbordkortpad Alt+d kan gebruik word om toegang tot die volledige dokumentasie te kry.
    Vrystelling van die Ruby-programmeertaal 3.1
  • Die taalsintaksis laat nou toe dat waardes in hash-letters en sleutelwoordargumente oorgeslaan word wanneer funksies opgeroep word. Byvoorbeeld, in plaas van die uitdrukking "{x: x, y: y}" kan jy nou "{x:, y:}" spesifiseer, en in plaas van "foo(x: x, y: y)" - foo( x:, y: )".
  • Gestabiliseerde ondersteuning vir enkellynpatroonpassings (ary => [x, y, z]), wat nie meer as eksperimenteel gemerk word nie.
  • Die "^"-operateur in patroonpassings kan nou arbitrêre uitdrukkings bevat, byvoorbeeld: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • In enkellynpatroonpassings kan jy hakies weglaat: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Die RBS tipe annotasie taal, wat jou toelaat om die struktuur van die program en die tipes wat gebruik word te bepaal, het bygevoeg ondersteuning vir die spesifiseer van die boonste limiet van tipe parameters met behulp van die "<" simbool, bygevoeg ondersteuning vir aliasse van generiese tipes, geïmplementeer ondersteuning vir versamelings vir die bestuur van edelstene, verbeterde werkverrigting en geïmplementeer baie nuwe handtekeninge vir ingeboude en standaard biblioteke.
  • Eksperimentele ondersteuning vir geïntegreerde ontwikkelingsomgewings is by die TypePro statiese tipe ontleder gevoeg, wat RBS-aantekeninge genereer gebaseer op kode-analise sonder eksplisiete tipe inligting (byvoorbeeld, 'n byvoeging is voorberei vir die integrasie van TypePro met die VSCode-redigeerder).
  • Die volgorde van verwerking van veelvuldige opdragte is verander. Byvoorbeeld, voorheen is die komponente van die uitdrukking "foo[0], bar[0] = baz, qux" verwerk in die volgorde baz, qux, foo, bar, maar nou foo, bar, baz, qux.
  • Bygevoeg eksperimentele ondersteuning vir geheue toekenning vir snare met behulp van die VWA (Variable Width Allocation) meganisme.
  • Opgedateerde weergawes van ingeboude juweelmodules en dié wat by die standaardbiblioteek ingesluit is. Die net-ftp, net-imap, net-pop, net-smtp, matrix, prime en debug-pakkette is ingebou.

Bron: opennet.ru

Voeg 'n opmerking