Utgivelse av Ruby programmeringsspråk 3.1

Ruby 3.1.0 ble utgitt, et dynamisk objektorientert programmeringsspråk som er svært effektivt i programutvikling og inneholder de beste funksjonene til Perl, Java, Python, Smalltalk, Eiffel, Ada og Lisp. Prosjektkoden distribueres under lisensene BSD ("2-klausul BSDL") og "Ruby", som refererer til den nyeste versjonen av GPL-lisensen og er fullt kompatibel med GPLv3.

Hovedforbedringer:

  • En ny eksperimentell i-prosess JIT-kompilator, YJIT, er lagt til, laget av utviklerne av Shopify e-handelsplattformen som en del av et initiativ for å forbedre ytelsen til Ruby-programmer som bruker Rails-rammeverket og kaller mange metoder. Hovedforskjellen fra den tidligere brukte MJIT JIT-kompilatoren, som er basert på å behandle hele metoder og bruker en ekstern kompilator i C-språket, er at YJIT bruker Lazy Basic Block Versioning (LBBV) og inneholder en integrert JIT-kompilator. Med LBBV kompilerer JIT først bare begynnelsen av metoden, og kompilerer resten en tid senere, etter at typene variabler og argumenter som brukes er bestemt under kjøringen. Ved bruk av YJIT ble det registrert en 22 % økning i ytelsen ved kjøring av railsbench-testen, og en 39 % økning i væskegjengivelsestesten. YJIT er for øyeblikket begrenset til støtte for unix-lignende operativsystemer på systemer med x86-64-arkitektur og er deaktivert som standard (for å aktivere, spesifiser "--yjit"-flagget på kommandolinjen).
  • Forbedret ytelse av den gamle MJIT JIT-kompilatoren. For prosjekter som bruker Rails, er standard maksimal cache-størrelse (--jit-max-cache) økt fra 100 til 10000 1000 instruksjoner. Sluttet å bruke JIT for metoder med mer enn XNUMX instruksjoner. For å støtte Zeitwerk of Rails, forkastes ikke lenger JIT-kode når TracePoint er aktivert for klassebegivenheter.
  • Den inkluderer en fullstendig omskrevet debug.gem debugger, som støtter ekstern debugging, ikke senker den feilsøkte applikasjonen, støtter integrasjon med avanserte feilsøkingsgrensesnitt (VSCode og Chrome), kan brukes til å feilsøke multi-threaded og multi-prosess applikasjoner, gir et grensesnitt for kjøring av REPL-kode, tilbyr avanserte sporingsfunksjoner, kan ta opp og spille av kodebiter. Den tidligere tilbudte debuggeren lib/debug.rb er fjernet fra basisdistribusjonen.
    Utgivelse av Ruby programmeringsspråk 3.1
  • Implementert visuell markering av feil i tilbakeringingssporingsrapporter. Feilflagging leveres ved å bruke den innebygde og standardaktiverte gem-pakken error_highlight. For å deaktivere feilflagging kan du bruke "--disable-error_highlight"-innstillingen. $ ruby ​​​​test.rb test.rb:1:in "": udefinert metode "time" for 1:Integer (NoMethodError) 1.time {} ^^^^^ Mente du? ganger
  • Skallet av interaktive beregninger IRB (REPL, Read-Eval-Print-Loop) implementerer automatisk fullføring av den angitte koden (når du skriver, vises et hint med alternativer for å fortsette inntastingen, som du kan flytte mellom med Tab eller Shift+ Tab-tast). Etter å ha valgt fortsettelsesalternativet, vises en dialogboks i nærheten som viser dokumentasjonen knyttet til det valgte elementet. Hurtigtasten Alt+d kan brukes for å få tilgang til hele dokumentasjonen.
    Utgivelse av Ruby programmeringsspråk 3.1
  • Språksyntaksen tillater nå at verdier i hash-literaler og nøkkelordargumenter hoppes over når funksjoner kalles. For eksempel, i stedet for uttrykket "{x: x, y: y}" kan du nå spesifisere "{x:, y:}", og i stedet for "foo(x: x, y: y)" - foo( x:, y: )".
  • Stabilisert støtte for enkeltlinjemønstertreff (ary => [x, y, z]), som ikke lenger er flagget som eksperimentelle.
  • Operatoren "^" i mønstertreff kan nå inneholde vilkårlige uttrykk, for eksempel: Prime.each_cons(2).lazy.find_all{_1 i [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • I enkeltlinjes mønstertreff kan du utelate parenteser: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS-typekommentarspråket, som lar deg bestemme strukturen til programmet og typene som brukes, har lagt til støtte for å spesifisere den øvre grensen for typeparametere ved å bruke «<»-symbolet, lagt til støtte for aliaser av generiske typer, implementert støtte for samlinger for å administrere edelstener, forbedret ytelse og implementert mange nye signaturer for innebygde og standardbiblioteker.
  • Eksperimentell støtte for integrerte utviklingsmiljøer er lagt til TypePro statisk typeanalysator, som genererer RBS-kommentarer basert på kodeanalyse uten eksplisitt typeinformasjon (for eksempel er det utarbeidet et tillegg for å integrere TypePro med VSCode-editoren).
  • Rekkefølgen for behandling av flere oppdrag er endret. For eksempel ble komponentene i uttrykket "foo[0], bar[0] = baz, qux" behandlet i rekkefølgen baz, qux, foo, bar, men nå foo, bar, baz, qux.
  • Lagt til eksperimentell støtte for minneallokering for strenger ved hjelp av VWA-mekanismen (Variable Width Allocation).
  • Oppdaterte versjoner av innebygde edelstensmoduler og de som er inkludert i standardbiblioteket. Net-ftp, net-imap, net-pop, net-smtp, matrix, prime og debug-pakkene er innebygd.

Kilde: opennet.ru

Legg til en kommentar