Ruby 4.0 basa programming diterbitkeun

Pelepasan Ruby 4.0.0, basa pemrograman berorientasi obyék dinamis anu museurkeun kana efisiensi anu luhur dina pamekaran program sareng ngalebetkeun fitur pangsaéna tina Perl, Java, Python, Smalltalk, Eiffel, Ada sareng Lisp. Kodeu proyék disebarkeun dina BSD ("2-klausa BSDL") sareng lisensi "Ruby", anu nujul kana versi panganyarna tina lisénsi GPL sareng cocog sareng GPLv3.

Perbaikan utama:

  • Rilis ieu ngawengku kompiler JIT anyar, ZJIT, anu diposisikan salaku generasi salajengna tina Ruby JIT. Kompiler YJIT JIT tetep janten standar, kalayan ZJIT diaktipkeun salaku pilihan (diaktipkeun ku tanda "--zjit"). Sapertos YJIT, kompiler JIT anyar ditulis dina Rust ku tim pamekar di Shopify salaku bagian tina inisiatif pikeun ningkatkeun kinerja program Ruby anu nganggo kerangka Rails sareng nyauran seueur metode. Ayeuna, ZJIT langkung gancang tibatan interpreter, tapi masih katinggaleun ti YJIT dina kinerja (ZJIT diperkirakeun bakal ngastabilkeun sareng ngaleuwihan YJIT dina kinerja dina Ruby 4.1).

    Beda sareng YJIT, kompiler JIT anu énggal narjamahkeun bytecode mesin virtual YARV sanés kana répréséntasi antara tingkat handap anu caket sareng kode mesin, tapi kana répréséntasi antara tingkat luhur (SSA) (Static Single Assignment), anu ngamungkinkeun fase optimasi tambahan sareng optimasi blok kode anu ageung, sanés ngan ukur operasi ayeuna. Pikeun narik kontributor énggal, ZJIT nerapkeun arsitéktur JIT klasik, nganggo data tipe historis anu akumulasi ti juru basa, tinimbang téknik Lazy Basic Block Versioning (LBBV) YJIT anu rumit.

  • Kelas Ruby::Box ékspériméntal parantos ditambahkeun, ngalaksanakeun mékanisme isolasi anu ngamungkinkeun palaksanaan kelas, modul, sareng patch monkey anu misah (métode anu ditimpa sareng atribut kelas) dina hiji prosés. Ruby::Box ogé tiasa dianggo pikeun misahkeun palaksanaan kode aplikasi tina pustaka Ruby, nyayogikeun isolasi tés, sareng ngatur palaksanaan paralel tina pawang wéb dina hiji prosés. sérver aplikasi (contona, pikeun laun-laun ngaganti hiji vérsi kode ku vérsi anu sanés atanapi ngapdet dependensi). Pikeun ngaktipkeun Ruby::Box, atur variabel lingkungan "RUBY_BOX=1". # foo.rb class String def self.foo = "foo" end # main.rb box = Ruby::Box.new box.require('foo')
  • Implementasi modél aktor Ractor parantos dimodernisasi, nyayogikeun abstraksi gaya aktor ruby ​​​​pikeun palaksanaan program konkuren anu aman pikeun thread kalayan interaksi ngirimkeun pesen antara thread. Kelas Ractor::Port parantos ditambahkeun pikeun ngatasi masalah anu aya hubunganana sareng ngirim sareng nampi pesen. Métode Ractor.shareable_proc parantos ditambahkeun pikeun ngagampangkeun ngabagi objék Proc di antara aktor anu béda. Optimasi struktur data parantos dilakukeun pikeun ngirangan kontéstasi nalika nyetél konci global sareng ningkatkeun efisiensi cache CPU. Ractor direncanakeun janten fitur anu stabil taun payun. port1 = Ractor::Port.new port2 = Ractor::Port.new Ractor.new port1, port2 do |port1, port2| port1 << 1 port2 << 11 port1 << 2 port2 << 12 end 2.times{ p port1.receive } #=> 1, 2 2.times{ p port2.receive } #=> 11, 12
  • Operator "*nil" ayeuna langsung mulangkeun array kosong ("[]") tanpa aya panggero antara kana metode "nil.to_a", sami sareng kumaha "**nil" langsung mulangkeun hash kosong tanpa nyauran "nil.to_hash".
  • Diidinan pikeun misahkeun baris nganggo operator logis "||", "&&", "and", sareng "or" supados baris salajengna dimimitian ku operator. upami kondisi1 && kondisi2 … réngsé
  • Nambahkeun metode Array#find sareng Array#rfind pikeun milarian unsur dina array anu langkung efisien, anu langkung gancang tibatan array.reverse_each.find sareng Enumerable#find.
  • Kelas Set sareng Pathname parantos dipindahkeun ka kelas anu tos aya.
  • Kamampuh seueur kelas dasar parantos dimekarkeun, sapertos Binding, Enumerator, ErrorHighlight, Fiber, File, IO, Kernel, Math, Proc, Range, Socket, String, Thread.
  • Vérsi diropéa tina modul gem diwangun-di jeung nu kaasup dina perpustakaan baku.

sumber: opennet.ru

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster