U publikua gjuha e programimit Ruby 3.3

Doli Ruby 3.3.0, një gjuhë programimi dinamike e orientuar drejt objekteve, e cila karakterizohet nga një efikasitet i lartë në zhvillimin e programeve dhe përfshin karakteristikat më të mira të Perl, Java, Python, Smalltalk, Eiffel, Ada dhe Lisp. Kodi i projektit shpërndahet nën licencat BSD ("2-clause BSDL") dhe "Ruby", e cila referon versionin e fundit të licencës GPL dhe është plotësisht e përputhshme me GPLv3.

Përmirësimet kryesore:

  • NĂ« pĂ«rbĂ«rjen kryesore Ă«shtĂ« pĂ«rfshirĂ« parseri Prism, i implementuar si njĂ« bibliotekĂ« C, libprism, e cila pĂ«rdoret nĂ« interpreterin CRuby, dhe si njĂ« paketĂ« gem nĂ« gjuhĂ«n Ruby, qĂ« ofron njĂ« API tĂ« hapur pĂ«r analizimin rekurziv tĂ« kodit nĂ« gjuhĂ«n Ruby, e pĂ«rshtatshme pĂ«r pĂ«rdorim nĂ« projekte punuese nĂ« vend tĂ« parserit Ripper. Avantazhet e Prism pĂ«rfshijnĂ« portabilitet tĂ« mirĂ« dhe pĂ«rpunim tĂ« fleksibilshĂ«m tĂ« gabimeve nĂ« kod. PĂ«r tĂ« pĂ«rfshirĂ« parserin e ri, mund tĂ« pĂ«rdoret opsioni "ruby --parser=prism" ose variabla e mjedisit RUBYOPT="--parser=prism". PĂ«r analizimin e kodit nĂ« programet tuaja janĂ« tĂ« disponueshme metodat Prism.parse(source) pĂ«r tĂ« marrĂ« paraqitjen AST tĂ« kodit, Prism.parse_comments(source) pĂ«r tĂ« nxjerrĂ« komentet nga kodi dhe Prism.parse_success?(source) pĂ«r tĂ« kontrolluar praninĂ« e gabimeve nĂ« kod.
  • NĂ« vend tĂ« paketĂ«s sĂ« jashtme Bison pĂ«r gjenerimin e parserĂ«ve, Ă«shtĂ« pĂ«rdorur projekti Lrama, i cili ofron implementimin e algoritmit LALR nĂ« gjuhĂ«n Ruby, duke mbĂ«shtetur pĂ«rkufizimet e gramatikĂ«s nĂ« pĂ«rputhje me Bison (parse.y), tĂ« pĂ«rdorura nĂ« CRuby, dhe duke ofruar mundĂ«si tĂ« zgjeruara, si pĂ«rpunimi i gabimeve dhe rregullat e parametrizuara (?, *, +).
  • ËshtĂ« bĂ«rĂ« njĂ« optimizim i konsiderueshĂ«m i performancĂ«s sĂ« JIT-kompilatorit YJIT, i zhvilluar nga zhvilluesit e platformĂ«s sĂ« tregtisĂ« elektronike Shopify, si pjesĂ« e njĂ« inicerative pĂ«r tĂ« rritur performancĂ«n e programeve Ruby qĂ« pĂ«rdorin framework-un Rails dhe qĂ« thĂ«rrasin shumĂ« metoda. NĂ« krahasim me JIT-kompilatorin e mĂ«parshĂ«m MJIT, YJIT-i ri pĂ«rdor versionimin e blloqeve bazĂ« (LBBV – Lazy Basic Block Versioning) nĂ« vend tĂ« pĂ«rpunimit tĂ« plotĂ« tĂ« metodave dhe Ă«shtĂ« implementuar si njĂ« JIT-kompilator i integruar, i shkruar nĂ« gjuhĂ«n Rust. FalĂ« LBBV, JIT fillimisht kompilon vetĂ«m fillimin e metodĂ«s, ndĂ«rsa pjesa tjetĂ«r kompiloohet pas njĂ« periudhe kohe, pasi nĂ« procesin e ekzekutimit janĂ« pĂ«rcaktuar tipet e variablave dhe argumenteve tĂ« pĂ«rdorura.

    Në testimin e ekzekutimit të emulatorit Optcarrot, performanca gjatë përdorimit të YJIT ishin më shumë se tri herë më e lartë se ekzekutimi nëpërmjet interpreterit. Në versionin e ri është siguruar memorizimi i regjistrave për operacionet në stivën e makinës virtuale, është zgjeruar gama e thirrjeve të kompilueshme me argumente opsionale, është realizuar zhvillimi inline i metodave bazë dhe të specializuara, dhe janë shtuar optimizime të veçanta për operacionet "Integer#*", "Integer#!=", "String#!=", "String#getbyte", "Kernel#block_given?", "Kernel#is_a?", "Kernel#instance_of?" dhe "Module#===". Shpejtësia e kompilimit është rritur ndjeshëm.

    Konsumimi i memories pĂ«r ruajtjen e metadatat Ă«shtĂ« reduktuar ndjeshĂ«m dhe Ă«shtĂ« realizuar gjenerimi i kodit mĂ« kompakt pĂ«r arkitekturĂ«n ARM64. Me default Ă«shtĂ« çaktivizuar grumbulluesi i mbeturinave Code ("--yjit-code-gc"), i cili liçon dinamik kodin e gjeneruar qĂ« nuk pĂ«rdoret, por qĂ« shkakton rĂ«nie tĂ« performancĂ«s gjatĂ« grumbullimit tĂ« mbeturinave. ËshtĂ« shtuar metoda RubyVM::YJIT.enable pĂ«r menaxhimin e aktivizimit tĂ« YJIT gjatĂ« ekzekutimit, pa pasur nevojĂ« pĂ«r tĂ« filluar me njĂ« opsion tĂ« caktuar tĂ« linjĂ«s sĂ« komandĂ«s ose variablĂ«s sĂ« mjedisit. ËshtĂ« zgjeruar statistika qĂ« jepet me opsionin "--yjit-stats". JanĂ« shtuar modulet e profilizimit tĂ« performancĂ«s (---yjit-perf) dhe gjurmimit (---yjit-trace-exits).

  • ËshtĂ« propozuar njĂ« JIT-kompilator i ri RJIT, i shkruar tĂ«rĂ«sisht nĂ« gjuhĂ«n Ruby dhe qĂ« zĂ«vendĂ«son MJIT, por qĂ«, nĂ« kundĂ«rshtim me kĂ«tĂ« tĂ« fundit, nuk kĂ«rkon njĂ« kompilator C pĂ«r t'u pĂ«rdorur. RJIT mbĂ«shtet vetĂ«m arkitekturĂ«n x86-64 dhe platformat e ngjashme me Unix.
  • ËshtĂ« shtuar njĂ« planifikues i_thread-ve "M:N", qĂ« lejon qĂ« pĂ«r tĂ« ulur kostot e krijimit dhe menaxhimit tĂ« thread-eve tĂ« pĂ«rdoren njĂ« numĂ«r i kufizuar thread-esh tĂ« sistemit operativ pĂ«r tĂ« pĂ«rpunuar thread-et e kodit nĂ« gjuhĂ«n Ruby. Me default, pĂ«rdoren 8 thread-e tĂ« OS (mund tĂ« ndryshohet pĂ«rmes variablĂ«s sĂ« mjedisit RUBY_MAX_CPU). PĂ«rdorimi i planifikuesit "M:N" mund tĂ« shkaktojĂ« probleme me pĂ«rputhshmĂ«rinĂ« me zgjerimet nĂ« gjuhĂ«n C, prandaj Ă«shtĂ« çaktivizuar me default pĂ«r klasĂ«n kryesore (main) Ractor, por Ă«shtĂ« aktivizuar pĂ«r ato jo-kryesore (non-main). PĂ«r tĂ« aktivizuar me forcĂ« planifikuesin "M:N", duhet tĂ« vendoset variabla e mjedisit RUBY_MN_THREADS=1.
  • Shtohen mundĂ«sitĂ« e shell-it interaktiv tĂ« llogaritjes IRB (REPL, Read-Eval-Print-Loop). Shtohet moda e dehjes irb:rdbg, e cila Ă«shtĂ« ekuivalente nĂ« mundĂ«sitĂ« e saj me debugin e pry-byebug. Shtohet mbĂ«shtetje pĂ«r shikimin shumĂ«faqĂ«sh tĂ« daljes sĂ« komandave ls, show_source dhe show_cmds. Implementohet mbĂ«shtetje eksperimentale pĂ«r tamamimin automatik tĂ« hyrjes, duke marrĂ« parasysh tipet e tĂ« dhĂ«nave. Ofrohen komanda pĂ«r tĂ« ndryshuar ngjyrĂ«n dhe stilin e fontit.
  • Deklarohet i vjetruar thirrja e metodĂ«s 'it' pa argumente nĂ« njĂ« bllok pa parametra (p.sh., '[1, 2, 3].each { puts it }').
  • NĂ« RubyGems dhe Bundler, pĂ«rfshihet njĂ« paralajmĂ«rim kur specifikohen nĂ« 'require' paketat gem abbrev, base64, bigdecimal, csv, drb, getoptlong, mutex_m, nkf, observer, racc, resolv-replace, rinda dhe syslog, nĂ«se ato nuk janĂ« shtuar nĂ« Gemfile ose gemspec. NĂ« versionet e ardhshme tĂ« Ruby, kĂ«to paketa gem do tĂ« integrohen nĂ« pĂ«rbĂ«rjen kryesore.
  • Versionet e moduleve tĂ« integruar dhe atyre qĂ« pĂ«rfshihen nĂ« bibliotekĂ«n standarde janĂ« pĂ«rditĂ«suar.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster