Bahasa pemrograman Perl 5.36.0 tersedia

Setelah satu tahun pengembangan, rilis cabang stabil baru dari bahasa pemrograman Perl - 5.36 - telah diterbitkan. Dalam persiapan rilis baru, sekitar 250 ribu baris kode diubah, perubahan tersebut mempengaruhi 2000 file, dan 82 pengembang mengambil bagian dalam pengembangan.

Cabang 5.36 dirilis sesuai dengan jadwal pengembangan tetap yang disetujui sembilan tahun lalu, yang berarti pelepasan cabang stabil baru setahun sekali dan rilis korektif setiap tiga bulan. Dalam waktu sekitar satu bulan, direncanakan untuk merilis rilis korektif pertama Perl 5.36.1, yang akan memperbaiki kesalahan paling signifikan yang diidentifikasi selama implementasi Perl 5.36.0. Seiring dengan dirilisnya Perl 5.36, dukungan untuk cabang 5.32 dihentikan, sehingga pembaruan di masa mendatang hanya dapat dirilis jika masalah keamanan kritis teridentifikasi. Proses pengembangan cabang eksperimental 5.37 juga telah dimulai, atas dasar itu rilis stabil Perl 2023 akan dibentuk pada bulan Mei atau Juni 5.38, kecuali keputusan dibuat untuk beralih ke penomoran 7.x.

Perubahan utama:

  • Dukungan untuk tanda tangan fungsi telah distabilkan dan sekarang tersedia saat menentukan pragma "gunakan v5.36", memungkinkan Anda untuk secara eksplisit menentukan daftar variabel yang digunakan dalam fungsi dan mengotomatiskan operasi pemeriksaan dan penetapan nilai dari array parameter masuk. Misalnya kode yang digunakan sebelumnya: sub foo { die "Terlalu banyak argumen untuk subrutin" kecuali @_ >= 2; die "Terlalu sedikit argumen untuk subrutin" kecuali @_ <= 2; saya($kiri, $kanan) = @_; kembalikan $kiri + $kanan; }

    bila menggunakan tanda tangan dapat diganti dengan:

    sub foo ($kiri, $kanan) { kembalikan $kiri + $kanan; }

    Jika Anda memanggil foo dengan lebih dari dua argumen, penerjemah akan memberikan kesalahan. Daftar ini juga mendukung variabel khusus “$”, yang memungkinkan Anda mengabaikan beberapa argumen, misalnya, “sub foo ($left, $, $right)” akan memungkinkan Anda menyalin hanya argumen pertama dan ketiga ke dalam variabel , sedangkan tepat tiga harus diteruskan ke argumen fungsi.

    Sintaks tanda tangan juga memungkinkan Anda menentukan argumen opsional dan menentukan nilai default jika ada argumen yang hilang. Misalnya, dengan menentukan "sub foo ($kiri, $kanan = 0)" argumen kedua menjadi opsional dan jika tidak ada, nilai 0 akan diteruskan. Dalam operasi penugasan, Anda dapat menentukan ekspresi arbitrer, termasuk menggunakan variabel lain dari daftar atau variabel global. Menentukan hash atau array sebagai pengganti variabel (misalnya, "sub foo ($left, @right)") akan memungkinkan satu atau lebih argumen untuk diteruskan.

  • Dalam fungsi yang dideklarasikan menggunakan tanda tangan, dukungan untuk penetapan parameter opsional dari larik "@_" dinyatakan eksperimental dan akan menghasilkan peringatan (peringatan hanya dikeluarkan jika @_ digunakan dalam fungsi yang dideklarasikan menggunakan sintaks baru). Misalnya, peringatan akan ditampilkan untuk fungsi: use v5.36; sub f ($x, $y = 123) { katakan "Argumen pertama adalah $_[0]"; }
  • Stabil dan tersedia saat menentukan pragma "gunakan v5.36", operator infiks "isa" untuk memeriksa apakah suatu objek merupakan turunan dari kelas yang ditentukan atau kelas turunannya. Misalnya: if( $obj isa Paket::Nama ) { … }
  • Saat menentukan pragma “gunakan v5.36”, pemrosesan peringatan diaktifkan (mode “gunakan peringatan” diaktifkan).
  • Saat menentukan pragma "gunakan v5.36", dukungan untuk notasi tidak langsung untuk memanggil objek ("fitur tidak langsung") dinonaktifkan - cara yang sudah ketinggalan zaman untuk memanggil objek, di mana spasi digunakan sebagai pengganti "->" ("metode $ objek @param” alih-alih “$objek-> $metode(@param)"). Misalnya, alih-alih “my $cgi = new CGI” Anda perlu menggunakan “my $cgi = CGI->new”.
  • Saat menentukan pragma “gunakan v5.36”, dukungan untuk meniru array multidimensi dan hash dalam gaya Perl 4 (“fitur multidimensi”) dinonaktifkan, memungkinkan indikasi beberapa kunci untuk diterjemahkan ke dalam array perantara (misalnya, “ $hash{1, 2}”) dikonversi menjadi "$hash{join($;, 1, 2)}").
  • Saat menentukan pragma “gunakan v5.36”, dukungan untuk mekanisme percabangan eksperimental (“saklar fitur”), mirip dengan pernyataan sakelar dan kasus, dinonaktifkan (Perl menggunakan kata kunci yang diberikan dan kapan). Untuk menggunakan fitur ini, mulai dari Perl 5.36, Anda harus secara eksplisit menentukan 'gunakan fitur "saklar"', dan jika Anda menentukan "gunakan versi", fitur tersebut tidak lagi diaktifkan secara otomatis.
  • Dukungan untuk kelas karakter tambahan dalam tanda kurung siku di dalam ekspresi reguler telah distabilkan dan tersedia secara default. Fitur ini memungkinkan Anda melakukan pencocokan menggunakan aturan lanjutan untuk perpotongan, pengecualian, dan penyatuan kumpulan karakter. Misalnya, '[AZ - W]' - karakter dari A hingga Z tidak termasuk W.
  • Dukungan untuk operasi "(?", "( )", "{ }" dan "[ ]" sebagian distabilkan dan tersedia secara default; Anda dapat menggunakan simbol "" "", "" "", dll. Misalnya , "qr"tepuk "".
  • Dilarang memanggil fungsi pengurutan tanpa argumen, yang sekarang akan menghasilkan kesalahan. @a = urutkan @kosong; # akan melanjutkan @a = sortir; # kesalahan akan dicetak @a = sort(); # kesalahan akan dicetak
  • Bendera baris perintah baru “-g” telah diusulkan, yang memungkinkan mode memuat seluruh file secara keseluruhan, bukan baris demi baris. Tindakan bendera ini mirip dengan indikasi “-0777”.
  • Dukungan untuk spesifikasi Unicode telah diperbarui ke versi 14.0.
  • Menyediakan penanganan instan pengecualian floating point (SIGFPE) serupa dengan alarm lain seperti SIGSEGV, memungkinkan Anda mengikat penangan Anda sendiri untuk SIGFPE melalui $SIG{FPE}, misalnya mengeluarkan nomor baris tempat masalah terjadi.
  • Versi modul yang diperbarui termasuk dalam paket dasar.
  • Menambahkan optimalisasi kinerja. Kemampuan untuk menyimpan kunci hash besar secara lebih efisien tanpa menggunakan tabel string bersama telah disediakan. Kinerja pembuatan nilai skalar baru telah ditingkatkan secara signifikan, misalnya kode berikut sekarang berjalan 30% lebih cepat: $str = "A" x 64; untuk (0..1_000_000) { @svs = dibagi //, $str }
  • Kode juru bahasa mulai menggunakan beberapa konstruksi yang ditentukan dalam standar C99. Membangun Perl sekarang memerlukan kompiler yang mendukung C99. Dukungan untuk membangun versi MSVC++ yang lebih lama (pra-VC12) telah dihentikan. Menambahkan dukungan untuk membangun di Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Dukungan untuk platform AT&T UWIN, DOS/DJGPP dan Novell NetWare telah dihentikan.

Sumber: opennet.ru

Tambah komentar