Keluaran bahasa pengaturcaraan Ruby 3.1

Ruby 3.1.0 telah dikeluarkan, bahasa pengaturcaraan berorientasikan objek dinamik yang sangat cekap dalam pembangunan program dan menggabungkan ciri terbaik Perl, Java, Python, Smalltalk, Eiffel, Ada dan Lisp. Kod projek diedarkan di bawah lesen BSD (β€œ2-klausa BSDL”) dan β€œRuby”, yang merujuk kepada versi terkini lesen GPL dan serasi sepenuhnya dengan GPLv3.

Penambahbaikan utama:

  • Pengkompil JIT dalam proses percubaan baharu, YJIT, telah ditambah, dicipta oleh pembangun platform e-dagang Shopify sebagai sebahagian daripada inisiatif untuk meningkatkan prestasi program Ruby yang menggunakan rangka kerja Rails dan memanggil banyak kaedah. Perbezaan utama daripada pengkompil MJIT JIT yang digunakan sebelum ini, yang berdasarkan pemprosesan keseluruhan kaedah dan menggunakan pengkompil luaran dalam bahasa C, ialah YJIT menggunakan Lazy Basic Block Versioning (LBBV) dan mengandungi pengkompil JIT bersepadu. Dengan LBBV, JIT mula-mula menyusun hanya permulaan kaedah, dan menyusun selebihnya beberapa lama kemudian, selepas jenis pembolehubah dan hujah yang digunakan ditentukan semasa pelaksanaan. Apabila menggunakan YJIT, peningkatan 22% dalam prestasi direkodkan semasa menjalankan ujian railsbench dan peningkatan 39% dalam ujian render cecair. YJIT kini terhad kepada sokongan untuk OS seperti unix pada sistem dengan seni bina x86-64 dan dilumpuhkan secara lalai (untuk mengaktifkan, nyatakan bendera "--yjit" dalam baris arahan).
  • Peningkatan prestasi pengkompil MJIT JIT lama. Untuk projek yang menggunakan Rails, saiz cache maksimum lalai (--jit-max-cache) telah ditingkatkan daripada 100 kepada 10000 arahan. Berhenti menggunakan JIT untuk kaedah dengan lebih daripada 1000 arahan. Untuk menyokong Zeitwerk of Rails, kod JIT tidak lagi dibuang apabila TracePoint didayakan untuk acara kelas.
  • Ia termasuk penyahpepijat debug.gem yang ditulis semula sepenuhnya, yang menyokong penyahpepijatan jauh, tidak melambatkan aplikasi penyahpepijatan, menyokong penyepaduan dengan antara muka penyahpepijatan lanjutan (VSCode dan Chrome), boleh digunakan untuk menyahpepijat aplikasi berbilang benang dan berbilang proses, menyediakan antara muka pelaksanaan kod REPL, menawarkan keupayaan pengesanan lanjutan, boleh merakam dan memainkan semula coretan kod. Penyahpepijat lib/debug.rb yang ditawarkan sebelum ini telah dialih keluar daripada pengedaran asas.
    Keluaran bahasa pengaturcaraan Ruby 3.1
  • Melaksanakan serlahan visual ralat dalam laporan surih panggilan balik. Penandaan ralat disediakan menggunakan pakej permata terbina dalam dan didayakan lalai error_highlight. Untuk melumpuhkan pembenderaan ralat, anda boleh menggunakan tetapan "--disable-error_highlight". $ ruby ​​​​test.rb test.rb:1:in "": kaedah tidak ditentukan "masa" untuk 1:Integer (NoMethodError) 1.time {} ^^^^^ Adakah anda maksudkan? kali
  • Cangkang pengiraan interaktif IRB (REPL, Read-Eval-Print-Loop) melaksanakan penyiapan automatik kod yang dimasukkan (sambil anda menaip, pembayang dipaparkan dengan pilihan untuk meneruskan input, antaranya anda boleh bergerak dengan Tab atau Shift+ Kekunci tab). Selepas memilih pilihan sambungan, kotak dialog dipaparkan berdekatan yang memaparkan dokumentasi yang berkaitan dengan item yang dipilih. Pintasan papan kekunci Alt+d boleh digunakan untuk mengakses dokumentasi penuh.
    Keluaran bahasa pengaturcaraan Ruby 3.1
  • Sintaks bahasa kini membenarkan nilai dalam literal cincang dan hujah kata kunci dilangkau semasa memanggil fungsi. Sebagai contoh, bukannya ungkapan "{x: x, y: y}" anda kini boleh menentukan "{x:, y:}", dan bukannya "foo(x: x, y: y)" - foo( x:, y: )".
  • Sokongan yang stabil untuk padanan corak satu baris (ary => [x, y, z]), yang tidak lagi dibenderakan sebagai percubaan.
  • Operator "^" dalam padanan corak kini boleh mengandungi ungkapan arbitrari, contohnya: Prime.each_cons(2).lazy.find_all{_1 dalam [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Dalam padanan corak satu baris, anda boleh meninggalkan kurungan: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Bahasa anotasi jenis RBS, yang membolehkan anda menentukan struktur program dan jenis yang digunakan, telah menambah sokongan untuk menentukan had atas parameter jenis menggunakan simbol "<", menambah sokongan untuk alias jenis generik, melaksanakan sokongan untuk koleksi untuk mengurus permata, meningkatkan prestasi dan melaksanakan banyak tandatangan baharu untuk perpustakaan terbina dalam dan standard.
  • Sokongan eksperimen untuk persekitaran pembangunan bersepadu telah ditambahkan pada penganalisis jenis statik TypePro, yang menjana anotasi RBS berdasarkan analisis kod tanpa maklumat jenis eksplisit (contohnya, alat tambah telah disediakan untuk menyepadukan TypePro dengan editor VSCode).
  • Tertib memproses berbilang tugasan telah diubah. Sebagai contoh, sebelum ini komponen ungkapan "foo[0], bar[0] = baz, qux" telah diproses dalam susunan baz, qux, foo, bar, tetapi kini foo, bar, baz, qux.
  • Menambahkan sokongan percubaan untuk peruntukan memori untuk rentetan menggunakan mekanisme VWA (Variable Width Allocation).
  • Versi modul permata terbina dalam yang dikemas kini dan yang disertakan dalam pustaka standard. Pakej net-ftp, net-imap, net-pop, net-smtp, matriks, perdana dan nyahpepijat terbina dalam.

Sumber: opennet.ru

Tambah komen