Bahasa pengaturcaraan Perl 5.36.0 tersedia

Selepas setahun pembangunan, keluaran cabang stabil baru bahasa pengaturcaraan Perl - 5.36 - telah diterbitkan. Dalam menyediakan keluaran baharu, kira-kira 250 ribu baris kod telah diubah, perubahan itu menjejaskan 2000 fail, dan 82 pembangun mengambil bahagian dalam pembangunan.

Cawangan 5.36 dikeluarkan mengikut jadual pembangunan tetap yang diluluskan sembilan tahun lalu, yang membayangkan pelepasan cawangan stabil baharu sekali setahun dan keluaran pembetulan setiap tiga bulan. Dalam masa kira-kira sebulan, ia dirancang untuk mengeluarkan keluaran pembetulan pertama Perl 5.36.1, yang akan membetulkan ralat paling ketara yang dikenal pasti semasa pelaksanaan Perl 5.36.0. Bersama-sama dengan keluaran Perl 5.36, sokongan untuk cawangan 5.32 telah dihentikan, yang mana kemas kini masa hadapan boleh dikeluarkan hanya jika masalah keselamatan kritikal dikenal pasti. Proses membangunkan cawangan percubaan 5.37 juga telah bermula, berdasarkan keluaran stabil Perl 2023 akan dibentuk pada Mei atau Jun 5.38, melainkan keputusan dibuat untuk beralih kepada penomboran 7.x.

Perubahan utama:

  • Sokongan untuk tandatangan fungsi telah distabilkan dan kini tersedia apabila menentukan pragma "gunakan v5.36", membolehkan anda mentakrifkan secara eksplisit senarai pembolehubah yang digunakan dalam fungsi dan mengautomasikan operasi menyemak dan menetapkan nilai daripada tatasusunan parameter masuk. Contohnya, kod yang digunakan sebelum ini: sub foo { die "Terlalu banyak argumen untuk subrutin" melainkan @_ >= 2; mati "Terlalu sedikit hujah untuk subrutin" melainkan @_ <= 2; my($kiri, $kanan) = @_; kembali $kiri + $kanan; }

    apabila menggunakan tandatangan, ia boleh digantikan dengan:

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

    Jika anda memanggil foo dengan lebih daripada dua hujah, jurubahasa akan membuang ralat. Senarai ini juga menyokong pembolehubah khas "$", yang membolehkan anda mengabaikan beberapa argumen, contohnya, "sub foo ($kiri, $, $kanan)" akan membolehkan anda menyalin hanya argumen pertama dan ketiga ke dalam pembolehubah , manakala tepat tiga mesti dihantar ke hujah fungsi.

    Sintaks tandatangan juga membolehkan anda menentukan argumen pilihan dan menentukan nilai lalai jika argumen tiada. Sebagai contoh, dengan menyatakan "sub foo ($kiri, $kanan = 0)" hujah kedua menjadi pilihan dan jika tiada, nilai 0 diluluskan. Dalam operasi tugasan, anda boleh menentukan ungkapan arbitrari, termasuk menggunakan pembolehubah lain daripada senarai atau pembolehubah global. Menentukan cincang atau tatasusunan dan bukannya pembolehubah (contohnya, "sub foo ($kiri, @kanan)") akan membenarkan satu atau lebih argumen dihantar.

  • Dalam fungsi yang diisytiharkan menggunakan tandatangan, sokongan untuk penetapan parameter pilihan daripada tatasusunan "@_" diisytiharkan sebagai percubaan dan akan menghasilkan amaran (amaran hanya dikeluarkan jika @_ digunakan dalam fungsi yang diisytiharkan menggunakan sintaks baharu). Sebagai contoh, amaran akan dipaparkan untuk fungsi: gunakan v5.36; sub f ($x, $y = 123) { sebut "Argumen pertama ialah $_[0]"; }
  • Distabilkan dan tersedia apabila menentukan pragma "use v5.36", operator infix "isa" untuk menyemak sama ada objek ialah contoh kelas yang ditentukan atau kelas yang diperoleh daripadanya. Contohnya: if( $obj isa Package::Name ) { … }
  • Apabila menentukan pragma "guna v5.36", pemprosesan amaran didayakan (mod "guna amaran" diaktifkan).
  • Apabila menentukan pragma "gunakan v5.36", sokongan untuk tatatanda tidak langsung untuk memanggil objek ("ciri tidak langsung") dilumpuhkan - cara yang lapuk untuk memanggil objek, di mana ruang digunakan dan bukannya "->" ("kaedah $ objek @param” dan bukannya β€œ$objek-> $method(@param)"). Sebagai contoh, bukannya "$cgi saya = CGI baharu" anda perlu menggunakan "$cgi saya = CGI->baru".
  • Apabila menentukan pragma "gunakan v5.36", sokongan untuk meniru tatasusunan berbilang dimensi dan cincang dalam gaya Perl 4 ("ciri multidimensi") dilumpuhkan, membenarkan penunjuk beberapa kunci diterjemahkan ke dalam tatasusunan perantaraan (contohnya, " $hash{1, 2}”) telah ditukar kepada "$hash{join($;, 1, 2)}").
  • Apabila menentukan pragma "gunakan v5.36", sokongan untuk mekanisme percabangan percubaan ("suis ciri"), serupa dengan pernyataan suis dan kes, dilumpuhkan (Perl menggunakan kata kunci yang diberikan dan apabila). Untuk menggunakan ciri ini, bermula dari Perl 5.36 anda perlu menyatakan secara eksplisit 'gunakan ciri "suis" dan apabila anda menentukan "versi gunakan" ia tidak akan didayakan secara automatik lagi.
  • Sokongan untuk kelas aksara tambahan dalam kurungan segi empat sama dalam ungkapan biasa telah distabilkan dan tersedia secara lalai. Ciri ini membolehkan anda melakukan padanan menggunakan peraturan lanjutan untuk persilangan, pengecualian dan penyatuan set aksara. Contohnya, '[A-Z - W]' - aksara dari A hingga Z tidak termasuk W.
  • Sokongan untuk operasi "(?", "( )", "{ }" dan "[ ]" sebahagiannya stabil dan tersedia secara lalai; anda boleh menggunakan simbol "" "", "" "", dsb. Contohnya. , "qr"tepuk "".
  • Memanggil fungsi isihan tanpa hujah adalah dilarang, yang kini akan mengakibatkan ralat. @a = susun @kosong; # akan terus @a = sort; # ralat akan dicetak @a = sort(); # ralat akan dicetak
  • Bendera baris arahan baharu "-g" telah dicadangkan, yang membolehkan mod memuatkan keseluruhan fail secara keseluruhan, bukannya baris demi baris. Tindakan bendera adalah serupa dengan petunjuk "-0777".
  • Sokongan untuk spesifikasi Unicode telah dikemas kini kepada versi 14.0.
  • Menyediakan pengendalian segera bagi pengecualian titik terapung (SIGFPE) serupa dengan penggera lain seperti SIGSEGV, membolehkan anda mengikat pengendali anda sendiri untuk SIGFPE melalui $SIG{FPE}, contohnya mengeluarkan nombor talian tempat masalah berlaku.
  • Versi modul yang dikemas kini termasuk dalam pakej asas.
  • Menambahkan pengoptimuman prestasi. Keupayaan untuk menyimpan kunci cincang besar dengan lebih cekap tanpa menggunakan jadual rentetan kongsi telah disediakan. Prestasi mencipta nilai skalar baharu telah dipertingkatkan dengan ketara, contohnya kod berikut kini berjalan 30% lebih pantas: $str = "A" x 64; untuk (0..1_000_000) { @svs = split //, $str }
  • Kod penterjemah mula menggunakan beberapa binaan yang ditakrifkan dalam piawaian C99. Membina Perl kini memerlukan pengkompil yang menyokong C99. Sokongan untuk membina dalam versi lama MSVC++ (pra-VC12) telah dihentikan. Menambah sokongan untuk membina dalam Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • Sokongan untuk platform AT&T UWIN, DOS/DJGPP dan Novell NetWare telah dihentikan.

Sumber: opennet.ru

Tambah komen