Rilis bahasa pemrograman Perl 5.30.0

Setelah 11 bulan pengembangan terjadi rilis cabang stabil baru dari bahasa pemrograman Perl - 5.30. Dalam persiapan rilis baru, sekitar 620 ribu baris kode diubah, perubahan tersebut mempengaruhi 1300 file, dan 58 pengembang mengambil bagian dalam pengembangan.

Cabang 5.30 dirilis sesuai dengan jadwal pengembangan tetap yang disetujui enam 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.30.1, yang akan memperbaiki kesalahan paling signifikan yang diidentifikasi selama implementasi Perl 5.30.0. Seiring dengan dirilisnya Perl 5.30, dukungan untuk cabang 5.26 dihentikan, sehingga pembaruan dapat dirilis di masa mendatang hanya jika masalah keamanan kritis teridentifikasi. Proses pengembangan cabang eksperimental 5.31 juga telah dimulai, yang menjadi dasar rilis stabil Perl 2020 akan dibentuk pada Mei 5.32.

Kunci perubahan:

  • Dukungan eksperimental untuk operasi "" telah ditambahkan ke ekspresi reguler.(?<!pola)"Dan"(?β€Ή=pola)Β» untuk akses terbatas ke templat bernama yang telah diproses sebelumnya. Definisi pola harus berada dalam 255 karakter dari titik referensi;
  • Nilai maksimum penentu ukuran (β€œn”) di blok ekspresi reguler β€œ{m,n}” telah ditingkatkan menjadi 65534;
  • Ditambahkan terbatas mendukung masker untuk menyorot kategori karakter tertentu dalam ekspresi reguler, yang mencakup kumpulan Unicode yang berbeda. Misalnya ungkapan β€œqr! \p{nv= /(?x) \A [0-5] \z / }!” memungkinkan Anda memilih semua karakter Unicode yang menentukan angka dari 0 hingga 5, termasuk ejaan angka Thailand atau Bengali;
  • Menambahkan dukungan untuk karakter bernama dalam ekspresi reguler
    pola di dalam yang dibatasi oleh tanda kutip tunggal (qr'\N{nama}');

  • Dukungan spesifikasi Unicode diperbarui ke versi 12.1. Bendera pengembangan eksperimental telah dihapus dari panggilan sv_utf8_downgrade dan sv_utf8_decode, digunakan dalam pengembangan ekstensi dalam bahasa C;
  • Menambahkan kemampuan untuk membangun Perl dengan implementasi operasi dengan lokal yang mendukung operasi multi-thread (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Sebelumnya, implementasi seperti itu hanya digunakan saat membuat Perl versi multi-thread, tetapi sekarang dapat diaktifkan untuk build apa pun;
  • Menggabungkan flag "-Dv" (output debugging yang ditingkatkan) dan "-Dr" (regex debugging) sekarang menyebabkan semua kemungkinan mode debugging ekspresi reguler diaktifkan;
  • Fitur-fitur yang sebelumnya tidak digunakan lagi telah dihapus:
    • Sekarang tersedia sebagai pemisah baris dan karakter wildcard diizinkan gunakan saja grafem (karakter Unicode gabungan tidak diperbolehkan).
    • Dihentikan dukungan untuk beberapa bentuk penggunaan karakter β€œ{” yang sudah lama tidak digunakan dalam ekspresi reguler tanpa menghindarinya.
    • Terlarang menggunakan fungsi sysread(), syswrite(), recv() dan send() dengan penangan ":utf8".
    • Dilarang menggunakan definisi β€œmy” dalam pernyataan kondisional yang salah (misalnya, β€œmy $x if 0”).
    • Dukungan untuk variabel khusus β€œ$*” dan β€œ$#” telah dihapus.
      Dukungan untuk pemanggilan implisit fungsi dump() telah dihentikan (Anda sekarang harus secara eksplisit menentukan CORE::dump()).

    • Fungsi File::Glob::glob telah dihapus (Anda harus menggunakan File::Glob::bsd_glob).
    • Menambahkan perlindungan ke pack() terhadap pengembalian urutan Unicode yang salah.
    • Berakhirnya dukungan untuk penggunaan makro yang menjalankan operasi dengan UTF-8 dalam kode XS (blok C) telah ditunda hingga rilis berikutnya.
  • Optimasi Kinerja:
    • Operasi penerjemahan dari UTF-8 ke tata letak karakter telah dipercepat (titik kode), misalnya, melakukan operasi ord(β€œ\x7fff”) sekarang memerlukan instruksi 12% lebih sedikit. Performa operasi pengecekan kebenaran rangkaian karakter UTF-8 juga telah ditingkatkan;
    • Panggilan rekursif dalam fungsi finalize_op() telah dihilangkan;
    • Melakukan sedikit optimasi pada kode untuk menciutkan karakter identik dan mendefinisikan kelas karakter dalam ekspresi reguler;
    • Dioptimalkan mengubah definisi tipe yang ditandatangani menjadi definisi yang tidak ditandatangani (IV ke UV);
    • Algoritme untuk mengubah bilangan bulat menjadi string telah dipercepat dengan memproses dua digit sekaligus, bukan satu;
    • Perbaikan telah dilakukan terlatih berdasarkan analisis LGTM;
    • Kode yang dioptimalkan dalam file regcomp.c, regcomp.h dan regexec.c;
    • Dalam ekspresi reguler, pemrosesan pola seperti β€œqr/[^a]/” dengan karakter ASCII telah dipercepat secara signifikan.
  • Dukungan untuk platform Minix3 telah dipulihkan. Dimungkinkan untuk membangun menggunakan kompiler Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Versi modul yang diperbarui termasuk dalam paket dasar. Modul telah dihapus dari komposisi utama B::Men-debug ΠΈ Lokal::Kode.

Sumber: opennet.ru

Tambah komentar