Po metų plėtros paskelbiamas „Ruby 2.6.0“ leidimas, dinaminė į objektus orientuota programavimo kalba, pasižyminti dideliu programinės įrangos kūrimo efektyvumu ir apimančia geriausias „Perl“, „Java“, „Python“, „Smalltalk“, „Eiffel“, „Ada“ ir „Lisp“ savybes.
Projekto kodas platinamas pagal BSD licencijas („2 punktų BSDL“) ir „Ruby“, kurie nurodo naujausią GPL licenciją ir visiškai atitinka GPLv3.
„Ruby 2.6“ yra šeštoji pagrindinė versija, parengta kaip planuoto kūrimo proceso dalis, apimanti metus skirti funkciniams patobulinimams parengti ir koreguojančioms versijoms kurti kas 2–3 mėnesius.
Pagrindinės naujos „Ruby 2.6.0“ funkcijos
Su šiuo nauju „Ruby“ leidimu pridėjo eksperimentinį JIT kompiliatoriaus diegimą, tai leidžia žymiai pagerinti programų veikimą „Ruby“ kalba.
Skirtingai nuo tradicinių JIT kompiliatorių, generuojančių mašinų instrukcijas skriejant, siūlomas „Ruby“ kompiliatorius „Ruby“ programoje pirmiausia įrašo C kodą į diską, tada iškviečia išorinį C kompiliatorių, kad sukurtų mašinos instrukcijas (palaikomas GCC, „Clang“ ir „Microsoft VC ++“).
Norėdami įjungti JIT, turite nurodyti „–jit“ parinktį, kai pradedate rubiną, arba nustatykite šią parinktį RUBYOPT aplinkos kintamajame.
Palyginti su „Ruby 2.5“, JIT įtraukimas vidutiniškai 1.7 karto viršija intensyvaus procesoriaus programų našumą.
Tuo pačiu metu plėtra vis dar yra eksperimentinė ir netinkama krūviams, susijusiems su intensyviu atminties darbu.
Kiti šios versijos patobulinimai buvo RubyVM :: AbstractSyntaxTree eksperimentinis modulis, kuris pateikia analizės metodą, kuris apdoroja perduotas eilutes kaip „Ruby“ kodą ir grąžina šio kodo abstraktų sintaksės medį (AST).
Dabar slapyvardis „#then“ gali būti naudojamas norint pasiekti metodą „Branduolio # yield_self“. "Masyvo Nr. |" Metodams ir „Array # -“ pasiūlė labiau įskaitomus pseudonimus „Array # union“ ir „Array # Difference“.
Nuolatiniai pavadinimai dabar gali prasidėti didžiosiomis raidėmis, išskyrus ASCII.
Taip pat buvo teikiama parama trumpalaikiam krūvui, skirtam objektams, kurių tarnavimo laikas trumpas, naudojant specialias klases (masyvas, maišas, objektas, struktūra).
Pavyzdžiui, theap'o dėka, esamų mažų, trumpalaikių maišų kūrimas dabar yra dvigubai greitesnis. Rdoc testas parodė, kad derlius padidėjo 6-7%.
Norint padidinti konteksto jungiklių našumą, siūloma naudoti įprastus korutinus „arm32“, „arm64“, „ppc64le“, „Win32“, „Win64“, „x86“ ir „amd64“ architektūroms. „Fiber.yield“ ir „Fiber # resume“ 64 bitų „Linux“ sistemose dabar veikia beveik 5 kartus greičiau.
Apskritai intensyvios programos rodo, kad našumas padidėjo 5%.
Pagrindiniai „Ruby 2.6.0“ patobulinimai
Gauta atnaujinta „RubyGems 3.0.1“ versija, kuriame buvo nutrauktas „–ri“ ir „–rdoc“ parinkčių palaikymas, vietoj to turėtumėte naudoti „–document“ ir „–no-document“.
„Bundler“ dabar įdiegta pagal numatytuosius nustatymus, kad būtų galima valdyti brangakmenių priklausomybes.
Pridėta neužbaigtų diapazonų parama, pavyzdžiui, „ary [1 ..]“ arba „(1 ..). Kiekvienas {…} ».
Iš kitų patobulintų patobulinimų galite rasti:
- Išimties parinktis buvo pridėta prie branduolio # sistemos metodo, kad būtų išimtis dėl klaidos, užuot grąžinus klaidingą.
- „Onehot“ režimas buvo pridėta prie aprėpties modulio, kuris tikrina, ar kiekviena eilutė vykdoma bent kartą.
- „Enumerator :: Chain“ klasė ir joje įdiegti „Enumerable # chain“ ir „Enumerator # +“ metodai pridedami siekiant sukurti išvardytų verčių grandines.
- Operatorių palaikymas «<<» ir «>>» buvo pridėtas prie „Proc“ ir „Method“ modulių, pavyzdžiui, konstrukcija «(f << g) .call (3)» yra identiška «f (g (3) )) ".
Kaip įdiegti „Ruby 2.6.0“ sistemoje „Linux“?
Norėdami gauti šią naują „Ruby“ versiją, tiesiog atidarykite sistemos terminalą ir įveskite vieną iš šių komandų
Debian, Ubuntu ir dariniai
sudo apt-get install ruby-full
„CentOS“, „Fedora“ ir RHEL
sudo yum install ruby
"Gentoo"
sudo emerge dev-lang/ruby
Arch Linux, Manjaro, Antergos ir dariniai
sudo pacman -S ruby
openSUSE
sudo zypper install ruby
„Apt-get yum etc“ komandos eina į numatytąsias paskirstymų saugyklas, kurios paprastai yra senos ir turėsite ne 2.6, o kitą seną versiją.