Etter et års utvikling publiseres Ruby 2.6.0-utgivelsen, et dynamisk objektorientert programmeringsspråk, preget av høy programvareutviklingseffektivitet og med de beste funksjonene i Perl, Java, Python, Smalltalk, Eiffel, Ada og Lisp.
Prosjektkoden distribueres under BSD-lisensene ("2-ledd BSDL") og "Ruby", som refererer til den siste GPL-lisensen og er fullstendig GPLv3-kompatibel.
Ruby 2.6 er den sjette store versjonen, utarbeidet som en del av en planlagt utviklingsprosess, som innebærer å tildele et år til å forberede funksjonelle forbedringer og lage korrigerende versjoner hver 2-3 måneder.
Viktigste nye funksjoner i Ruby 2.6.0
Med denne nye utgivelsen av Ruby la til en eksperimentell implementering av JIT-kompilatoren, som lar deg forbedre ytelsen til applikasjoner på rubinspråket betydelig.
I motsetning til tradisjonelle JIT-kompilatorer, som genererer maskininstruksjoner i farta, skriver den foreslåtte JIT-kompilatoren i Ruby først C-koden til disken, og kaller den eksterne C-kompilatoren for å generere maskininstruksjonene (GCC-støttet, Clang og Microsoft VC ++).
For å aktivere JIT, må du spesifisere "–jit" -alternativet når du starter rubin eller angi dette alternativet i RUBYOPT-miljøvariabelen.
Sammenlignet med Ruby 2.5 er inkluderingen av JIT i gjennomsnitt 1.7 ganger ytelsen til CPU-intensive applikasjoner.
Samtidig er utviklingen fremdeles eksperimentell og lite egnet for belastninger forbundet med minneintensivt arbeid.
Andre forbedringer som ble oppnådd i denne versjonen var RubyVM :: AbstractSyntaxTree eksperimentell modul, som gir en parsingsmetode som behandler de passerte strengene som Ruby-kode og returnerer et Abstract Syntax Tree (AST) for denne koden.
Nå kan aliaset "#then" brukes til å få tilgang til metoden "Kernel # yield_self". For "Array # |" - metoder og "Array # -" foreslo mer lesbare aliaser "Array # union" og "Array # Difference".
Konstant navn kan nå starte med andre store bokstaver enn ASCII.
Støtte ble også gitt for Transient Heap, theap beregnet på objekter med kort levetid ved bruk av spesifikke klasser (Array, Hash, Object, Struct).
Takket være theap er det for eksempel dobbelt så raskt å lage eksisterende små kortvarige hashes. Rdoc-testen viste en økning i utbyttet på 6-7%.
For å øke ytelsen til kontekstbrytere foreslås innfødte implementeringer av coroutines for arm32, arm64, ppc64le, win32, win64, x86 og amd64 arkitekturer. "Fiber.yield" og "Fiber # resume" på 64-bit Linux-systemer kjører nå nesten 5 ganger raskere.
Generelt viser intensive programmer en ytelsesøkning på 5%.
Store forbedringer i Ruby 2.6.0
En oppdatert versjon av RubyGems 3.0.1 er mottatt, der støtte for alternativene "–ri" og "–rdoc" er avviklet, i stedet for at du skal bruke "–dokument" og "–no-dokument".
Bundler er nå installert som standard for å administrere perleavhengigheter.
Lagt til støtte for uferdige områder, for eksempel "ary [1 ..]" eller "(1 ..). Hver {…} ".
Av de andre forbedringene som kan fremheves, kan du finne:
- Unntaksalternativet er lagt til Kernel # systemmetoden for å øke et unntak ved feil i stedet for å returnere false.
- Oneshot-modusen har vært lagt til dekningsmodulen, som sjekker om hver rad kjøres minst en gang.
- Enumerator :: Chain-klassen og "Enumerable # chain" og "Enumerator # +" -metodene som er implementert i den, blir lagt til for å lage kjeder med opptalte verdier.
- Støtte for operatørene «<<» og «>>» er lagt til i Proc og Method-modulene, for eksempel er konstruksjonen «(f << g). Kall (3)» identisk med «f (g (3) )) ".
Hvordan installerer jeg Ruby 2.6.0 på Linux?
For å få denne nye versjonen av Ruby, er det bare å åpne en terminal på systemet ditt og skrive inn en av følgende kommandoer
Debian, Ubuntu og derivater
sudo apt-get install ruby-full
CentOS, Fedora og RHEL
sudo yum install ruby
Gentoo
sudo emerge dev-lang/ruby
Arch Linux, Manjaro, Antergos og derivater
sudo pacman -S ruby
opensuse
sudo zypper install ruby
Kommandoene apt-get yum etc går til standardregister for distribusjonene, som vanligvis er gamle, og du vil ikke ha versjon 2.6, men en annen gammel versjon.