Rilis bahasa pemrograman Ruby 3.1

Ruby 3.1.0 telah dirilis, bahasa pemrograman berorientasi objek dinamis yang sangat efisien dalam pengembangan program dan menggabungkan fitur terbaik dari Perl, Java, Python, Smalltalk, Eiffel, Ada dan Lisp. Kode proyek didistribusikan di bawah lisensi BSD ("2-clause BSDL") dan "Ruby", yang mengacu pada versi terbaru lisensi GPL dan sepenuhnya kompatibel dengan GPLv3.

Perbaikan utama:

  • Kompiler JIT dalam proses eksperimental baru, YJIT, telah ditambahkan, dibuat oleh pengembang platform e-commerce Shopify sebagai bagian dari inisiatif untuk meningkatkan kinerja program Ruby yang menggunakan kerangka Rails dan memanggil banyak metode. Perbedaan utama dari kompiler MJIT JIT yang digunakan sebelumnya, yang didasarkan pada pemrosesan seluruh metode dan menggunakan kompiler eksternal dalam bahasa C, adalah YJIT menggunakan Lazy Basic Block Versioning (LBBV) dan berisi kompiler JIT terintegrasi. Dengan LBBV, JIT mula-mula hanya mengkompilasi awal metode, dan mengkompilasi sisanya beberapa waktu kemudian, setelah jenis variabel dan argumen yang digunakan ditentukan selama eksekusi. Saat menggunakan YJIT, peningkatan performa sebesar 22% tercatat saat menjalankan pengujian railsbench, dan peningkatan sebesar 39% pada pengujian rendering cair. YJIT saat ini terbatas pada dukungan untuk OS mirip unix pada sistem dengan arsitektur x86-64 dan dinonaktifkan secara default (untuk mengaktifkan, tentukan tanda β€œ--yjit” di baris perintah).
  • Peningkatan kinerja kompiler MJIT JIT lama. Untuk proyek yang menggunakan Rails, ukuran cache maksimum default (--jit-max-cache) telah ditingkatkan dari 100 menjadi 10000 instruksi. Berhenti menggunakan JIT untuk metode dengan lebih dari 1000 instruksi. Untuk mendukung Zeitwerk of Rails, kode JIT tidak lagi dibuang ketika TracePoint diaktifkan untuk acara kelas.
  • Ini mencakup debugger debug.gem yang sepenuhnya ditulis ulang, yang mendukung debugging jarak jauh, tidak memperlambat aplikasi yang di-debug, mendukung integrasi dengan antarmuka debugging tingkat lanjut (VSCode dan Chrome), dapat digunakan untuk men-debug aplikasi multi-thread dan multi-proses, menyediakan antarmuka eksekusi kode REPL, menawarkan kemampuan penelusuran tingkat lanjut, dapat merekam dan memutar ulang cuplikan kode. Debugger lib/debug.rb yang ditawarkan sebelumnya telah dihapus dari distribusi dasar.
    Rilis bahasa pemrograman Ruby 3.1
  • Menerapkan penyorotan visual atas kesalahan dalam laporan pelacakan panggilan balik. Penandaan kesalahan disediakan menggunakan paket permata bawaan dan diaktifkan secara default, error_highlight. Untuk menonaktifkan penandaan kesalahan, Anda dapat menggunakan pengaturan β€œ--disable-error_highlight”. $ ruby ​​​​test.rb test.rb:1:in "": metode "waktu" yang tidak ditentukan untuk 1:Integer (NoMethodError) 1.time {} ^^^^^ Maksud Anda? waktu
  • Cangkang perhitungan interaktif IRB (REPL, Read-Eval-Print-Loop) mengimplementasikan penyelesaian otomatis dari kode yang dimasukkan (saat Anda mengetik, petunjuk ditampilkan dengan opsi untuk melanjutkan input, di antaranya Anda dapat berpindah dengan Tab atau Shift+ tombol tab). Setelah memilih opsi lanjutan, kotak dialog ditampilkan di dekatnya yang menampilkan dokumentasi terkait dengan item yang dipilih. Pintasan keyboard Alt+d dapat digunakan untuk mengakses dokumentasi lengkap.
    Rilis bahasa pemrograman Ruby 3.1
  • Sintaks bahasa sekarang memungkinkan nilai dalam literal hash dan argumen kata kunci dilewati saat memanggil fungsi. Misalnya, alih-alih menggunakan ekspresi β€œ{x: x, y: y}” Anda kini dapat menentukan β€œ{x:, y:}”, dan sebagai ganti β€œfoo(x: x, y: y)” - foo( x:, kamu: )".
  • Dukungan stabil untuk kecocokan pola garis tunggal (ary => [x, y, z]), yang tidak lagi ditandai sebagai eksperimental.
  • Operator "^" dalam pencocokan pola kini dapat berisi ekspresi arbitrer, misalnya: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= > ? [[3, 5], [5, 7], [11, 13]]
  • Pada pencocokan pola satu baris, Anda dapat menghilangkan tanda kurung: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • Bahasa anotasi tipe RBS, yang memungkinkan Anda menentukan struktur program dan tipe yang digunakan, telah menambahkan dukungan untuk menentukan batas atas parameter tipe menggunakan simbol β€œ<”, menambahkan dukungan untuk alias tipe generik, menerapkan dukungan untuk koleksi untuk mengelola permata, meningkatkan kinerja, dan menerapkan banyak tanda tangan baru untuk perpustakaan bawaan dan standar.
  • Dukungan eksperimental untuk lingkungan pengembangan terintegrasi telah ditambahkan ke penganalisis tipe statis TypePro, yang menghasilkan anotasi RBS berdasarkan analisis kode tanpa informasi tipe eksplisit (misalnya, add-on telah disiapkan untuk mengintegrasikan TypePro dengan editor VSCode).
  • Urutan pemrosesan beberapa tugas telah diubah. Misalnya, sebelumnya komponen ekspresi β€œfoo[0], bar[0] = baz, qux” diproses dengan urutan baz, qux, foo, bar, tetapi sekarang foo, bar, baz, qux.
  • Menambahkan dukungan eksperimental untuk alokasi memori untuk string menggunakan mekanisme VWA (Variable Wide Allocation).
  • Versi terbaru dari modul permata bawaan dan yang disertakan dalam perpustakaan standar. Paket net-ftp, net-imap, net-pop, net-smtp, matriks, prime dan debug sudah ada di dalamnya.

Sumber: opennet.ru

Tambah komentar