Setelah satu tahun pembangunan diterbitkan rilis cabang stabil baru dari bahasa pemrograman Perl - 5.44. Di mempersiapkan Rilis baru ini mengubah sekitar 270 baris kode (tidak termasuk dokumentasi dan kode yang dihasilkan secara otomatis - 110), perubahan tersebut memengaruhi 860 file, dan 71 pengembang berpartisipasi dalam pengembangannya.
Cabang 5.44 telah dirilis sesuai dengan jadwal pengembangan tetap yang ditetapkan tiga belas tahun lalu, yang menetapkan perilisan cabang stabil baru sekali setahun dan rilis minor setiap tiga bulan. Rilis minor pertama, Perl 5.44.1, dijadwalkan akan dirilis sekitar satu bulan lagi, memperbaiki bug paling signifikan yang ditemukan selama implementasi Perl 5.44.0. Dengan dirilisnya Perl 5.44, dukungan untuk cabang 5.40 telah berakhir; pembaruan untuk cabang tersebut mungkin akan dirilis di masa mendatang hanya jika ditemukan masalah keamanan kritis. Mulai Proses pengembangan cabang eksperimental 5.45, yang akan menjadi dasar untuk rilis stabil Perl 5.46 pada paruh pertama tahun 2027, kecuali ada keputusan yang dibuat. pergilah hingga penomoran 7.x.
Kunci perubahan:
- Ditambahkan kemungkinan eksperimental penggunaan parameter bernama dalam tanda tangan Fungsi yang mendefinisikan daftar variabel yang diteruskan ke fungsi bukan di dalam badan fungsi, tetapi selama deklarasinya. Fitur baru ini memungkinkan parameter diteruskan tidak dalam urutan yang ketat, tetapi dalam urutan apa pun, menggunakan pasangan kunci/nilai dan sintaks yang mirip dengan penugasan elemen dalam hash:
- sintaks lama: sub f { my ($x, $y) = @_; …} f(1, 2);
- tanda tangan: sub f ($x, $y) { … } f(1, 2);
- Tanda tangan dengan parameter bernama: sub f (:$x, :$y) { … } f(y => 2, x => 1);
- Menambahkan dukungan eksperimental untuk menggunakan alias (pointer ke pointer) dalam perulangan foreach dengan banyak variabel. Fitur ini memungkinkan Anda membuat alias dalam perulangan foreach saat mengambil beberapa nilai dalam satu iterasi perulangan. Misalnya, Anda dapat membuat alias untuk elemen hash dengan array saat melakukan iterasi atas kunci dan nilai hash: use v5.44; use feature qw( refaliasing declared_refs ); my %hash = ( one => [1], two => [2, 2], ); foreach my ( $key, @items ) ( %hash ) { say "Array $key berisi: @items"; } # Sebelum versi 5.44, dereferensi akan diperlukan: foreach my ( $key, $var ) ( %hash ) { say "Array $key berisi: @$var"; } } # Tanpa fitur refaliasing eksperimental dan declared_refs: foreach my $key (keys %hash) { say "Array $key berisi: @{$hash{$key}}"; }
- Dalam ekspresi reguler diimplementasikan Mode eksperimental 'enhanced_xx' memungkinkan pengubah /xx digunakan dengan kelas karakter dalam tanda kurung siku ([a-zA-Z]) untuk memisahkannya ke beberapa baris atau untuk menyisipkan komentar. Misalnya, kondisi if ($text =~ m/[a-zA-Z]/){ dapat ditulis sebagai: if ($text =~ m/[ a-z # huruf kecil A-Z # huruf besar ]/xx) {
- Generator bilangan pseudo-acak menggunakan panggilan sistem getentropy() untuk mendapatkan entropi pada sistem yang mendukungnya (Linux, BSD, macOSPada sistem lain, entropi diperoleh dengan membaca dari perangkat /dev/urandom atau menggunakan hash dari waktu, ID proses, dan nilai penunjuk.
- Dukungan spesifikasi tambahan Unicode 17.0.
- Kepatuhan ketat terhadap aturan Unicode telah dipastikan untuk nama pengenal dan grup ekspresi reguler, dengan sekitar 160 karakter Unicode yang sebelumnya dicakup oleh kelas w sekarang dilarang. Misalnya, kelas w, yang mencakup semua huruf, angka, dan karakter garis bawah, sekarang mengecualikan huruf Latin yang dilingkari, yang menyerupai huruf sebenarnya tetapi bukan huruf. Perubahan perilaku ini hanya memengaruhi program yang menggunakan mode utf8.
- Memperbaiki kerentanan yang disebabkan oleh buffer overflow pada fungsi Perl_study_chunk (CVE-2026-8376, muncul dalam assembly 32-bit) dan S_measure_struct (CVE-2026-57432), serta luapan penghitung 16-bit pada mesin Regex (CVE-2026-13221), yang dapat menyebabkan ekspresi reguler gagal.
- Melompat ke posisi di dalam perulangan dan konstruksi blok menggunakan operator goto dilarang. Fitur ini telah dihentikan penggunaannya pada tahun 2010.
- Optimalisasi kinerja dilakukan untuk mempercepat penjumlahan, pengurangan, dan perkalian bilangan bulat, pemrosesan tanda tangan fungsi, dan pengisian hash dari daftar kunci/nilai dengan kunci string yang diketahui pada waktu kompilasi.
Sumber: linux.org.ru
