Utgivelse av Ruby programmeringsspråk 3.2

Ruby 3.2.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:

  • Lagt til en innledende port for Cruby-tolken, som kompileres inn i WebAssembly-mellomkode for å kjøre i en nettleser eller under frittstående kjøretider som wasmtime. For direkte interaksjon med operativsystemet når det kjøres separat, brukes WASI (WebAssembly System Interface) API. Blant annet leveres en VFS-innpakning på toppen av WASI, som lar deg pakke hele Ruby-applikasjonen inn i en presentasjon i form av en enkelt wasm-fil. Å kjøre i en nettleser kan brukes til å lage opplærings- og demo-webtjenester som TryRuby. På det nåværende utviklingsstadiet passerer porten de grunnleggende og bootstrap-testpakkene, som ikke bruker Thread API. Porten støtter heller ikke fibre, unntak eller søppelinnsamling.
  • YJIT in-process JIT-kompilatoren, laget av utviklerne av Shopify e-handelsplattform som en del av et initiativ for å forbedre ytelsen til Ruby-programmer ved hjelp av Rails-rammeverket og kalle mange metoder, har blitt annonsert som stabil og klar for produksjonsbruk. Hovedforskjellen fra den tidligere brukte MJIT JIT-kompilatoren, som er basert på å behandle hele metoder og bruker en ekstern C-kompilator, er at YJIT bruker Lazy Basic Block Versioning (LBBV) og inneholder en integrert JIT-kompilator. Takket være LBBV kompilerer JIT i utgangspunktet bare begynnelsen av en metode, og kompilerer resten senere, etter at typene variabler og argumenter som brukes er bestemt under kjøring. YJIT er tilgjengelig for arkitekturene x86-64 og arm64/aarch64. Linux, MacOS, BSD og andre UNIX-plattformer.

    I motsetning til Ruby er YJIT-koden skrevet på Rust-språket og krever rustc 1.58.0+ kompilatoren for kompilering, så YJIT-bygget er deaktivert som standard og er valgfritt. Ved bruk av YJIT ble det registrert en 41 % økning i ytelse ved kjøring av yjit-benk-testen sammenlignet med bruk av tolkning.

    
Utgivelse av Ruby programmeringsspråk 3.2
  • Lagt til ekstra beskyttelse mot tjenestenektangrep ved behandling av eksterne data i ineffektive og tidkrevende regulære uttrykk (ReDoS). Matchingsalgoritmen, som bruker memoreringsteknikken, har blitt betydelig forbedret. For eksempel ble utførelsestiden for uttrykket '/^a*b?a*$/ =~ "a" * 50000 + "x"' redusert fra 10 til 0.003 sekunder. Kostnaden for optimalisering er en økning i minneforbruket, hvis forbruk er omtrent 10 ganger høyere enn størrelsen på inngangsdataene. Det andre sikkerhetstiltaket er muligheten til å definere en timeout (for eksempel "Regexp.timeout = 1.0") der det regulære uttrykket må behandles.
  • Syntax_suggest-modusen er inkludert, som hjelper til med å diagnostisere årsakene til feil knyttet til et manglende eller ekstra avsluttende "slutt"-uttrykk. Ikke samsvarende `slutt', mangler søkeord (`do', `def`, `if`, etc.) ? 1 klasse Hund > 2 defbark > 3 ende 4 ende
  • Muligheten til å merke argumenter for feil relatert til typer og argumenter er lagt til feilplasseringsvisningsmodusen, for eksempel: test.rb:2:in `+': null kan ikke tvinges til heltall (TypeError) sum = ary [0] + ary [1] ^^^^^^
  • Lagt til ny syntaks for å omdirigere sett med argumenter til andre metoder: def foo(*) bar(*) end def baz(**) quux(**) end
  • Ruby_vm/mjit/compiler er foreslått - en variant av den gamle MJIT JIT-kompilatoren, omskrevet på Ruby-språket. Sørget for at MJIT kjører i en egen prosess i stedet for å kjøre i en MJIT-arbeidertråd.
  • I Bundler 2.4 bruker avhengighetsbehandlingen PubGrub-versjonsdetektoren, også brukt i pubpakkebehandleren for Dart-språket. Den tidligere brukte Molinillo-algoritmen fortsetter å bli brukt i RubyGems, men vil også bli erstattet av PubGrub i fremtiden.
  • Oppdaterte versjoner av innebygde edelstensmoduler og de som er inkludert i standardbiblioteket.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster