Ini adalah perintah perl589delta yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
perl589delta - apa yang baru untuk Perl v5.8.9
DESKRIPSI
Dokumen ini menjelaskan perbedaan antara rilis 5.8.8 dan rilis 5.8.9.
Melihat
Rilis 5.8.9 akan menjadi rilis signifikan terakhir dari seri 5.8.x. Masa depan apa pun
rilis 5.8.x kemungkinan hanya akan menangani masalah keamanan, dan pembangunan platform
kegagalan. Karenanya Anda harus melihat untuk bermigrasi ke 5.10.x, jika Anda belum memulai.
Lihat "Masalah yang Diketahui" untuk informasi lebih lanjut.
Tidak kompatibel Perubahan
Konstruksi tertentu dalam kode sumber ekstensi yang ditulis dalam C++ mungkin perlu
berubah. Lihat "Internal yang Diubah" untuk detail selengkapnya. Semua ekstensi ditulis dalam C, kebanyakan
ditulis dalam C++, dan semua ekstensi terkompilasi yang ada tidak terpengaruh. Ini perlu untuk
meningkatkan dukungan C++.
Selain ini, tidak ada perubahan yang sengaja tidak sesuai dengan 5.8.8. Jika ada
ada, mereka adalah bug dan laporan dipersilakan.
Core tambahan
Unicode Karakter Basis Data 5.1.0.
Salinan Basis Data Karakter Unicode yang disertakan dalam Perl 5.8 telah diperbarui ke 5.1.0
dari 4.1.0 Lihathttp://www.unicode.org/versions/Unicode5.1.0/#Perubahan Penting> untuk
perubahan penting.
Stat dan -X on direktori Menangani
Sekarang dimungkinkan untuk memanggil "stat" dan operator filestat "-X" pada pegangan direktori. Sebagai
baik direktori dan pegangan file adalah kata-kata kosong, mungkin ada ambiguitas yang mana
disengaja. Dalam situasi ini semantik penanganan file lebih disukai. Keduanya juga memperlakukan
*FILE{IO} menangani file seperti *FILE menangani file.
sumber filter in @INC
Dimungkinkan untuk meningkatkan mekanisme kait subrutin di @INC dengan menambahkan sumber
filter di atas pegangan file dibuka dan dikembalikan oleh kait. Fitur ini direncanakan
sudah lama sekali, tetapi tidak berfungsi sampai sekarang. Lihat "memerlukan" di perlfunc untuk
rincian. (Nicholas Clark)
Pengecualian in konstan lipat
Rutinitas pelipatan konstan sekarang dibungkus dalam penangan pengecualian, dan jika pelipatan melempar
pengecualian (seperti mencoba mengevaluasi 0/0), Perl sekarang mempertahankan optree saat ini,
daripada membatalkan seluruh program. Tanpa perubahan ini, program tidak akan dikompilasi
jika mereka memiliki ekspresi yang menghasilkan pengecualian, meskipun itu
ekspresi berada dalam kode yang tidak pernah bisa dicapai saat runtime. (Nicholas Clark, Dave
mitchell)
"tidak VERSI: KAPAN"
Anda sekarang dapat menggunakan "tidak" diikuti dengan nomor versi untuk menentukan bahwa Anda ingin menggunakan a
versi Perl lebih tua dari yang ditentukan.
peningkatan intern UTF-8 caching kode
Kode yang meng-cache offset UTF-8 byte yang dihitung untuk offset karakter untuk string memiliki
telah ditulis ulang. Beberapa bug telah ditemukan dan dihilangkan, dan kodenya sekarang membuat
lebih baik menggunakan informasi yang dimilikinya, jadi harus lebih cepat. Secara khusus, itu tidak memindai
ke akhir string sebelum menghitung offset dalam string, yang seharusnya mempercepat
up beberapa operasi pada string panjang. Sekarang dimungkinkan untuk menonaktifkan kode caching saat dijalankan
waktu, untuk memverifikasi bahwa itu bukan penyebab masalah yang dicurigai.
Runtime bisa direlokasi instalasi
Sekarang ada Konfigurasi dukungan untuk membuat perl tree yang dapat dipindahkan pada saat run time.
lihat "Instalasi yang dapat dipindahkan".
New intern variabel
"${^CHILD_ERROR_NATIVE}"
Variabel ini memberikan status asli yang dikembalikan oleh penutupan pipa terakhir, backtick
perintah, panggilan berhasil ke "tunggu" atau "waitpid", atau dari operator "sistem". Lihat
perlvar untuk detailnya. (Kontribusi oleh Gisle Aas.)
"${^UTF8CACHE}"
Variabel ini mengontrol status kode caching offset UTF-8 internal. 1 untuk
(default), 0 untuk nonaktif, -1 untuk men-debug kode caching dengan memeriksa semua hasilnya
terhadap pemindaian linier, dan panik pada perbedaan apa pun.
"pipa baca" is sekarang bisa diganti
Fungsi bawaan "readpipe" sekarang dapat diganti. Menggantinya juga memungkinkan untuk
menimpa mitra operatornya, "qx//" (juga dikenal sebagai "``").
sederhana pengecualian penanganan Macro
Perl 5.8.9 (dan 5.10.0 dan seterusnya) sekarang menyediakan beberapa makro untuk melakukan pengecualian yang sangat mendasar
penanganan dalam modul XS. Anda dapat menggunakan makro ini jika Anda memanggil kode yang mungkin "bersuara", tetapi
Anda perlu melakukan pembersihan sebelum memberikan kontrol kembali ke Perl. Lihat "Penanganan Pengecualian"
di perlguts untuk lebih jelasnya.
-D Option Perangkat tambahan
· "-Dq" menekan PELAKSANAAN... pesan saat berjalan di bawah "-D"
· "-Dl" log runops loop masuk dan keluar, dan melompat tingkat bermunculan.
· "-Dv" menampilkan id proses sebagai bagian dari keluaran jejak.
dibantu XS SWASHGET
Beberapa kode perl murni yang digunakan mesin regexp untuk mengambil properti Unicode dan
pemetaan transliterasi telah diterapkan kembali di XS untuk eksekusi yang lebih cepat. (SADAHIRO
Tomoyuki)
konstan subrutin
Internal interpreter sekarang mendukung bentuk inlineable yang jauh lebih hemat memori
konstanta. Menyimpan referensi ke nilai konstan dalam tabel simbol setara dengan a
full typeglob mereferensikan subrutin konstan, tetapi menggunakan memori sekitar 400 byte lebih sedikit.
Subrutin konstan proxy ini secara otomatis ditingkatkan ke typeglob nyata dengan
subrutin jika perlu. Pendekatan yang dilakukan dianalogikan dengan ruang yang ada
optimasi untuk deklarasi rintisan subrutin, yang disimpan sebagai skalar biasa di tempatnya
dari typeglob penuh.
Namun, untuk membantu kompatibilitas mundur dari kode yang ada, yang (salah) tidak diharapkan
apa pun selain typeglobs dalam tabel simbol, tidak ada inti yang menggunakan fitur ini, lainnya
daripada tes regresi.
Rintisan untuk subrutin prototipe telah disimpan dalam tabel simbol sebagai string biasa, dan
stub untuk subrutin yang tidak memiliki prototipe sebagai angka -1, sejak 5.005, jadi kode yang mengasumsikan
bahwa inti hanya menempatkan typeglobs di tabel simbol telah membuat asumsi yang salah
selama lebih dari tahun 10.
New Platform
Kompilasi dukungan ditambahkan untuk:
· DragonFlyBSD
· Tengah MalamBSD
· MirOS BSD
· OS RISC
· Cray XT4/Catamount
Modul dan Pragmatis
New Modul
· "Modul::Pluggable" adalah kerangka kerja sederhana untuk membuat modul yang menerima sub-
modul. Versi yang dibundel adalah 3.8
· "Module::CoreList" adalah hash dari hash yang dikunci pada versi perl seperti yang ditunjukkan pada
$]. Versi yang dibundel adalah 2.17
· "Win32API::File" sekarang tersedia dalam inti pada Microsoft Windows. Versi yang dibundel adalah
0.1001_01
· "Devel::InnerPackage" menemukan semua paket yang ditentukan oleh satu file. Ini adalah bagian dari
distribusi "Modul:: Dapat Dicolokkan". Versi yang dibundel adalah 0.3
Updated Modul
· "atribut" ditingkatkan ke versi 0.09
· "AutoLoader" ditingkatkan ke versi 5.67
· "Pemisahan Otomatis" ditingkatkan menjadi 1.06
· "penggunaan otomatis" ditingkatkan ke versi 1.06
· "B" ditingkatkan dari 1.09_01 menjadi 1.19
· menyediakan makro abstraksi terkait pad baru "B::NV::COP_SEQ_RANGE_LOW",
"B::NV::COP_SEQ_RANGE_HIGH", "B::NV::PARENT_PAD_INDEX",
"B::NV::PARENT_FAKELEX_FLAGS", yang menyembunyikan perbedaan penyimpanan di 5.10.0 dan
nanti.
· menyediakan "B::sub_generation", yang menampilkan "PL_sub_generation"
· menyediakan "B::GV::isGV_with_GP", yang pada pra-5.10 perls selalu mengembalikan true.
· Jenis baru "B::HE" ditambahkan dengan metode "VAL", "HASH" dan "SVKEY_force"
· Bendera "B::GVf_IMPORTED_CV" sekarang disetel dengan benar ketika konstanta proxy
subrutin diimpor.
· bug diperbaiki dalam penanganan "PMOP".
· "B::BM::SEBELUM" mengembalikan sekarang "U32", bukan "U16". "B::CV::MULAI" dan "B:CV::ROOT"
kembalikan sekarang "NULL" pada XSUB, "B::CV::XSUB" dan "B::CV::XSUBANY" kembalikan 0 pada a
bukan XSUB.
· "B::C" ditingkatkan menjadi 1.05
· "B::Ringkas" ditingkatkan menjadi 0.76
· opsi baru "-src" menyebabkan rendering setiap pernyataan (dimulai dengan
nextstate OP) didahului oleh baris pertama kode sumber yang menghasilkannya.
· opsi baru "-stash="somepackage"", "memerlukan "somepackage", dan kemudian merender masing-masing
fungsi yang didefinisikan dalam namespace-nya.
· sekarang memiliki dokumentasi simbol petunjuk rinci.
· "B::Debug" ditingkatkan ke versi 1.05
· "B::Deparse" ditingkatkan ke versi 0.87
· deparse "print readpipe $x, $y" dengan benar.
· sekarang menangani "''-"()>, "::()", "sub :: {}", dan sebagainya benar [RT #43010]. Semua bug
dalam menguraikan jenis sintaks ini sekarang diperbaiki:
perl -MO=Hapus -e '"%h saya = "->()'
perl -MO=Deparse -e '::->()'
perl -MO=Deparse -e 'sub :: {}'
perl -MO=Deparse -e 'paket a; sub a::b::c {}'
perl -MO=Deparse -e 'sub the::main::road {}'
· melakukan tidak deparse $^H{v_string}, yang secara otomatis disetel oleh internal.
· "B::Lint" ditingkatkan ke versi 1.11
· "B::Terse" ditingkatkan ke versi 1.05
· "basis" ditingkatkan ke versi 2.13
· memuat modul melalui base.pm akan menutupi $SIG{__DIE__} global dalam modul itu.
· Dorong semua kelas sekaligus di @ISA
· "Tolok ukur" ditingkatkan ke versi 1.10
· "besar" ditingkatkan menjadi 0.23
· "bignum" ditingkatkan menjadi 0.23
· "bigrat" ditingkatkan menjadi 0.23
· "blib" ditingkatkan menjadi 0.04
· "Carp" ditingkatkan ke versi 1.10
Kode backtrace argumen sekarang menunjukkan "undef" sebagai "undef", bukan string "tidak pasti".
· "CGI" ditingkatkan ke versi 3.42
· "charnames" ditingkatkan menjadi 1.06
· "konstan" ditingkatkan ke versi 1.17
· "CPAN" ditingkatkan ke versi 1.9301
· "Cwd" ditingkatkan ke versi 3.29 dengan beberapa peningkatan khusus platform (termasuk untuk
VMS).
· "Data::Dumper" ditingkatkan ke versi 2.121_17
· Memperbaiki posisi hash iterator saat ini dengan versi Perl murni [RT #40668]
· Peningkatan kinerja, yang akan paling jelas terlihat pada platform yang berulang
panggilan ke "realloc()" C lambat, seperti Win32.
· "DB_File" ditingkatkan ke versi 1.817
· "DB_Filter" ditingkatkan ke versi 0.02
· "Devel :: DProf" ditingkatkan ke versi 20080331.00
· "Devel::Peek" ditingkatkan ke versi 1.04
· "Devel::PPPort" ditingkatkan ke versi 3.14
· "diagnostik" ditingkatkan ke versi 1.16
· "Intisari" ditingkatkan ke versi 1.15
· "Intisari::MD5" ditingkatkan ke versi 2.37
· "DirHandle" ditingkatkan ke versi 1.02
· sekarang melokalkan $., $@, $!, $^E, dan $? sebelum menutup pegangan direktori ke
menekan membocorkan efek samping dari peringatan tentang hal itu sudah ditutup.
· "DynaLoader" ditingkatkan ke versi 1.09
"DynaLoader" sekarang dapat secara dinamis memuat objek yang dapat dimuat dari file dengan non-default
ekstensi file.
· "Encode" ditingkatkan ke versi 2.26
"Encode::Alias" termasuk perbaikan untuk encoding "646" pada Solaris (lebih dikenal sebagai ASCII).
· "Bahasa Inggris" ditingkatkan ke versi 1.03
· "Errno" ditingkatkan ke versi 1.10
· "Eksportir" ditingkatkan ke versi 5.63
· "ExtUtils::Command" ditingkatkan ke versi 1.15
· "ExtUtils::Constant" ditingkatkan ke versi 0.21
· "ExtUtils::Embed" ditingkatkan ke versi 1.28
· "ExtUtils::Install" ditingkatkan ke versi 1.50_01
· "ExtUtils::Installed" ditingkatkan ke versi 1.43
· "ExtUtils::MakeMaker" ditingkatkan ke versi 6.48
· dukungan untuk konfigurasi "INSTALLSITESCRIPT" dan "INSTALLVENDORSCRIPT".
· "ExtUtils::Manifest" ditingkatkan ke versi 1.55
· "ExtUtils :: ParseXS" ditingkatkan ke versi 2.19
· "Fatal" ditingkatkan ke versi 1.06
· memungkinkan built-in di "CORE::GLOBAL" menjadi fatal.
· "Fcntl" ditingkatkan ke versi 1.06
· "bidang" ditingkatkan ke versi 2.12
· "File:: Basename" ditingkatkan ke versi 2.77
· "FileCache" ditingkatkan ke versi 1.07
· "File::Compare" ditingkatkan ke 1.1005
· "File::Copy" ditingkatkan ke 2.13
· sekarang menggunakan 3-arg terbuka.
· "File::DosGlob" ditingkatkan ke 1.01
· "File::Find" ditingkatkan ke versi 1.13
· "File::Glob" ditingkatkan ke versi 1.06
· memperbaiki hasil palsu dengan tanda kurung di dalam kawat gigi.
· "File::Path" ditingkatkan ke versi 2.07_02
· "File::Spec" ditingkatkan ke versi 3.29
· peningkatan penanganan argumen yang buruk.
· beberapa peningkatan khusus platform (termasuk untuk VMS dan Cygwin), dengan
optimasi pada "abs2rel" saat menangani kedua argumen relatif.
· "File::stat" ditingkatkan ke versi 1.01
· "File::Temp" ditingkatkan ke versi 0.20
· "filetest" ditingkatkan ke versi 1.02
· "Filter::Util::Call" ditingkatkan ke versi 1.07
· "Filter::Simple" ditingkatkan ke versi 0.83
· "FindBin" ditingkatkan ke versi 1.49
· "GDBM_File" ditingkatkan ke versi 1.09
· "Getopt::Long" ditingkatkan ke versi 2.37
· "Getopt::Std" ditingkatkan ke versi 1.06
· "Hash::Util" ditingkatkan ke versi 0.06
· "jika" ditingkatkan ke versi 0.05
· "IO" ditingkatkan ke versi 1.23
Mengurangi jumlah panggilan ke "getpeername" di "IO::Socket"
· "IPC::Open" ditingkatkan ke versi 1.03
· "IPC::Open3" ditingkatkan ke versi 1.03
· "IPC::SysV" ditingkatkan ke versi 2.00
· "lib" ditingkatkan ke versi 0.61
· hindari peringatan tentang memuat .pasangan file.
· "libnet" ditingkatkan ke versi 1.22
· "Daftar::Util" ditingkatkan ke 1.19
· "Lokal::Maketext" ditingkatkan ke 1.13
· "Matematika::BigFloat" ditingkatkan ke versi 1.60
· "Matematika::BigInt" ditingkatkan ke versi 1.89
· "Matematika::BigRat" ditingkatkan ke versi 0.22
· mengimplementasikan metode "as_float" baru.
· "Matematika :: Kompleks" ditingkatkan ke versi 1.54.
· "Matematika::Trig" ditingkatkan ke versi 1.18.
· "NDBM_File" ditingkatkan ke versi 1.07
· memperbaiki g ++ penanganan untuk sistem yang menggunakan header kompatibilitas GDBM.
· "Net::Ping" ditingkatkan ke versi 2.35
· "NEXT" ditingkatkan ke versi 0.61
· perbaiki beberapa bug dengan "NEXT" saat bekerja dengan "AUTOLOAD", blok "eval", dan
dalam stringifikasi kelebihan beban.
· "ODBM_File" ditingkatkan ke 1.07
· "terbuka" ditingkatkan menjadi 1.06
· "ops" ditingkatkan menjadi 1.02
· "PerlIO::encoding" ditingkatkan ke versi 0.11
· "PerlIO::scalar" ditingkatkan ke versi 0.06
· [RT #40267] "PerlIO::scalar" tidak menghargai readonlyness.
· "PerlIO::via" ditingkatkan ke versi 0.05
· "Pod::Html" ditingkatkan ke versi 1.09
· "Pod :: Parser" ditingkatkan ke versi 1.35
· "Pod::Usage" ditingkatkan ke versi 1.35
· "POSIX" ditingkatkan ke versi 1.15
· Konstanta "POSIX" yang menduplikasi yang ada di "Fcntl" sekarang diimpor dari "Fcntl"
dan diekspor kembali, daripada diduplikasi oleh "POSIX"
· "POSIX::remove" dapat menghapus direktori kosong.
· "POSIX::setlocale" lebih aman untuk menelepon beberapa kali.
· "POSIX::SigRt" ditambahkan, yang menyediakan akses ke fungsi sinyal waktu nyata POSIX
pada sistem yang mendukungnya.
· "kembali" ditingkatkan ke versi 0.06_01
· "Aman" ditingkatkan ke versi 2.16
· "Skalar::Util" ditingkatkan ke 1.19
· "SDBM_File" ditingkatkan ke versi 1.06
· "SelfLoader" ditingkatkan ke versi 1.17
· "Shell" ditingkatkan ke versi 0.72
· "sigtrap" ditingkatkan ke versi 1.04
· "Socket" ditingkatkan ke versi 1.81
· ini memperbaiki penggunaan optimis "gethostbyname"
· "Dapat disimpan" ditingkatkan ke 2.19
· "Beralih" ditingkatkan ke versi 2.13
· "Sys::Syslog" ditingkatkan ke versi 0.27
· "Istilah::ANSIColor" ditingkatkan ke versi 1.12
· "Istilah :: Cap" ditingkatkan ke versi 1.12
· "Istilah::ReadLine" ditingkatkan ke versi 1.03
· "Tes:: Builder" ditingkatkan ke versi 0.80
· "Tes:: Harness" versi yang ditingkatkan ke 2.64
· ini membuatnya mampu menangani baris baru.
· "Tes::Lainnya" ditingkatkan ke versi 0.80
· "Uji:: Sederhana" ditingkatkan ke versi 0.80
· "Teks :: Seimbang" ditingkatkan ke versi 1.98
· "Teks::ParseWords" ditingkatkan ke versi 3.27
· "Teks :: Soundex" ditingkatkan ke versi 3.03
· "Teks:: Tab" ditingkatkan ke versi 2007.1117
· "Teks:: Bungkus" ditingkatkan ke versi 2006.1117
· "Utas" ditingkatkan ke versi 2.01
· "Utas::Semaphore" ditingkatkan ke versi 2.09
· "Utas:: Antrian" ditingkatkan ke versi 2.11
· kemampuan tambahan untuk menambahkan struktur kompleks (misalnya, hash dari hash) ke antrian.
· kemampuan tambahan untuk dequeue beberapa item sekaligus.
· menambahkan metode baru untuk memeriksa dan memanipulasi antrian: "mengintip", "menyisipkan" dan
"ekstrak"
· "Tie:: Handle" ditingkatkan ke versi 4.2
· "Tie::Hash" ditingkatkan ke versi 1.03
· "Tie::Memoize" ditingkatkan ke versi 1.1
· "Tie::Memoize::EXISTS" sekarang menyimpan hasil-hasilnya dengan benar.
· "Tie::RefHash" ditingkatkan ke versi 1.38
· "Tie::Scalar" ditingkatkan ke versi 1.01
· "Tie::StdHandle" ditingkatkan ke versi 4.2
· "Waktu::gmtime" ditingkatkan ke versi 1.03
· "Waktu::Lokal" ditingkatkan ke versi 1.1901
· "Waktu::HiRes" ditingkatkan ke versi 1.9715 dengan berbagai peningkatan versi (termasuk
VMS) dan perbaikan bug minor khusus platform (termasuk untuk HP-UX 11 ia64).
· "utas" ditingkatkan menjadi 1.71
· metode informasi status utas baru: "is_running", "is_detached" dan
"dapat_bergabung". metode "daftar" ditingkatkan untuk mengembalikan utas yang berjalan atau yang dapat digabungkan.
· metode sinyal utas baru: "bunuh"
· kemampuan tambahan untuk menentukan ukuran tumpukan utas.
· kemampuan tambahan untuk mengontrol perilaku keluar utas. Menambahkan metode "keluar" baru.
· "utas::dibagikan" ditingkatkan ke versi 1.27
· implementasi yang lebih kecil dan lebih cepat yang menghilangkan satu struktur internal dan
tingkat konsekuen dari tipuan.
· kunci pengguna sekarang disimpan dengan cara yang lebih aman.
· fungsi baru "shared_clone" membuat salinan objek yang meninggalkan elemen bersama
elemen non-shared apa adanya dan kloning dalam.
· menambahkan metode "is_shared" baru.
· "Unicode::Normalize" ditingkatkan ke versi 1.02
· "Unicode::UCD" ditingkatkan ke versi 0.25
· "peringatan" ditingkatkan ke versi 1.05_01
· "Win32" ditingkatkan ke versi 0.38
· menambahkan fungsi baru "GetCurrentProcessId" yang mengembalikan proses Windows biasa
pengidentifikasi proses saat ini, bahkan ketika dipanggil dari dalam fork.
· "XSLoader" ditingkatkan ke versi 0.10
· "XS::APItest" dan "XS::Typemap" hanya untuk penggunaan internal dan karenanya tidak lagi
diinstal. Lebih banyak tes telah ditambahkan ke "XS::APItest".
Kegunaan Perubahan
debugger upgrade untuk versi 1.31
· Andreas Koenig menyumbangkan dua fungsi untuk menyimpan dan memuat riwayat debugger.
· "NEXT::AUTOLOAD" tidak lagi memancarkan peringatan di bawah debugger.
· Debugger sekarang harus menemukan tty perangkat dengan benar pada OS X 10.5 dan VMS ketika
program "garpu".
· LVALUE subs sekarang bekerja di dalam debugger.
terima kasih
Perl 5.8.9 menambahkan utilitas baru terima kasih, yang merupakan varian dari perlbug, tapi untuk mengirim
non-bug-laporan kepada penulis dan pengelola Perl. Tidak mendapatkan apa-apa selain laporan bug
bisa menjadi sedikit demoralisasi - kita akan lihat apakah ini mengubah banyak hal.
perlbug
perlbug sekarang memeriksa apakah Anda melaporkan tentang modul non-inti dan menyarankan Anda untuk melaporkannya
kepada penulis CPAN sebagai gantinya.
h2xs
· tidak akan mendefinisikan string kosong sebagai konstanta [RT #25366]
· memiliki contoh untuk "h2xs -X"
h2ph
· sekarang mencoba untuk menangani secara bijaksana perbedaan implikasi jalur antara "" dan
"<>" mengutip pernyataan "#include".
· sekarang menghasilkan kode yang benar untuk "#jika ditentukan A || ditentukan B" [RT #39130]
New Dokumentasi
Seperti biasa, dokumentasi menerima bagiannya dari koreksi, klarifikasi, dan lainnya
nitfix. Lebih banyak tag "" ditambahkan untuk pengindeksan.
perlunitut adalah tutorial yang ditulis oleh Juerd Waalboer tentang terminologi terkait Unicode dan caranya
untuk menangani Unicode dengan benar dalam skrip Perl.
perlunicode diperbarui di bagian properti yang ditentukan pengguna.
perluniintro sudah diupdate contohnya mendeteksi data yang tidak valid di
pengkodean tertentu.
perlcommunity memberikan gambaran umum tentang Komunitas Perl bersama dengan sumber daya lebih lanjut.
CORE mendokumentasikan pseudo-namespace untuk rutinitas inti Perl.
Perubahan untuk yang ada Dokumentasi
perlglosarium menambahkan usang modul dan fitur dan untuk be menjatuhkan modul.
perlhack telah diperbarui dan menambahkan sumber daya pada pengujian asap.
FAQ Perl (perlfaq1..perlfaq9) telah diperbarui.
perlcheat diperbarui dengan detail yang lebih baik pada "\w", "\d", dan "\s".
perldebug diperbarui dengan informasi tentang cara memanggil debugger.
dokumentasi perldiag diperbarui dengan subrutin dengan an simbol untuk 'dan pada argumen untuk
"ada" dan "hapus" dan juga beberapa pembaruan terminologi pada peringatan.
perlfork mendokumentasikan batasan "exec" di dalam proses semu.
fungsi:
· Dokumentasi diperbaiki di bagian "penelepon" dan "pop".
· Fungsi "alarm" sekarang menyebutkan "Waktu::HiRes::ualarm" daripada "pilih".
· Mengenai prioritas dalam "-X", operator filetest sama dengan operator unary, tetapi
bukan tentang penguraian dan tanda kurung (ditemukan oleh Eirik Berg Hanssen).
· Dokumentasi fungsi "terbalik" menerima contoh konteks skalar.
dokumentasi perllocale disesuaikan untuk pelokalan nomor dan "POSIX::setlocale" untuk diperbaiki
Bug Debian #379463.
perlmodlib diperbarui dengan "CPAN::API::HOWTO" dan "Sys::Syslog::win32::Win32"
dokumentasi perlre diperbarui untuk mencerminkan perbedaan antara "[[:xxxxx:]]" dan
"\p{IsXxxxx}" cocok. Juga menambahkan bagian pada pengubah "/ g" dan "/ c".
perlreguts menggambarkan internal mesin ekspresi reguler. Telah
disumbangkan oleh Yves Orton.
perlrebackslash menjelaskan semua perl ekspresi reguler garis miring terbalik dan urutan melarikan diri.
perlrecharclass menjelaskan sintaks dan penggunaan kelas karakter di Perl Regular
Ekspresi.
perlrun diperbarui untuk mengklarifikasi tentang benih hash PERL_HASH_SEED. Juga informasi lebih lanjut di
opsi "-x" dan "-u".
contoh perlsub diperbarui untuk menggunakan variabel leksikal untuk sintaks "opendir".
perlvar memperbaiki kebingungan tentang GID $( dan efektif GID $).
Contoh tutorial utas Perl diperbaiki di bagian "Antrian: Melewati Data Sekitar" di
perlthrtut dan perlthrtut.
dokumentasi perlhack ditingkatkan secara ekstensif oleh Jarkko Hietaniemi dan lainnya.
perltoot memberikan informasi tentang memodifikasi @UNIVERSAL::ISA.
dokumentasi perlport diperluas untuk menyertakan semantik "kill(-9, ...)" yang berbeda pada
jendela. Itu juga dengan jelas menyatakan "dump" tidak didukung di Win32 dan cygwin.
INSTALL telah diperbarui dan dimodernisasi.
Performance tambahan
· Default sejak perl 5.000 adalah perl membuat skalar kosong dengan setiap
typeglob baru. Peningkatan penggunaan variabel leksikal berarti bahwa sebagian besar sekarang tidak digunakan.
Berkat upaya Nicholas Clark, Perl sekarang dapat dikompilasi dengan
"-DPERL_DONT_CREATE_GVSV" untuk menghindari pembuatan skalar kosong ini. Ini akan
secara signifikan mengurangi jumlah skalar yang dialokasikan untuk semua konfigurasi, dan
jumlah skalar yang perlu disalin untuk pembuatan utas. Sementara opsi ini adalah
biner kompatibel dengan instalasi Perl yang ada, itu mengubah lama
asumsi tentang internal, oleh karena itu tidak diaktifkan secara default, karena sepertiga
kode pesta mungkin bergantung pada perilaku lama.
Kami akan merekomendasikan pengujian dengan konfigurasi ini pada penerapan baru Perl,
terutama untuk server multi-utas, untuk melihat apakah semua kode pihak ketiga adalah
kompatibel dengannya, karena konfigurasi ini dapat memberikan peningkatan kinerja yang berguna.
Untuk instalasi yang ada, kami tidak akan merekomendasikan untuk mengubah konfigurasi ini
kecuali pengujian menyeluruh dilakukan sebelum penerapan.
· "diagnostik" tidak lagi menggunakan $&, yang menghasilkan percepatan besar untuk pencocokan regexp
di semua kode menggunakannya.
· Kelas ekspresi reguler dari satu karakter sekarang diperlakukan sama seperti jika
karakter telah digunakan sebagai literal, artinya kode yang menggunakan kelas char sebagai
mekanisme melarikan diri akan melihat percepatan. (Yves Orton)
· Membuat array anonim dan referensi hash (mis. "[]" dan "{}") sekarang tidak memerlukan biaya lagi
overhead daripada membuat daftar anonim atau hash. Nicholas Clark memberikan perubahan dengan
penghematan dua ops dan satu stack push, yang diukur sebagai sedikit lebih baik daripada
5% peningkatan untuk operasi ini.
· Banyak panggilan ke "strlen()" telah dihilangkan, baik karena panjangnya sudah
diketahui, atau dengan mengadopsi atau meningkatkan API yang melewati panjang. Ini telah dibantu oleh
adopsi pembungkus "my_sprintf()", yang mengembalikan nilai C89 yang benar - panjangnya
dari string yang diformat. Sebelumnya kami tidak dapat mengandalkan nilai pengembalian
"sprintf()", karena pada beberapa platform kuno tetapi masih ada, ia masih mengembalikan "char *".
· "indeks" sekarang lebih cepat jika string pencarian disimpan dalam UTF-8 tetapi hanya berisi
karakter dalam rentang Latin-1.
· Cache swatch Unicode di dalam mesin regexp sekarang digunakan. (pencarian memiliki kunci
ketidakcocokan, hadir sejak implementasi awal). [RT #42839]
Instalasi dan konfigurasi Perbaikan
Dapat direlokasi instalasi
Sekarang ada Konfigurasi dukungan untuk membuat pohon perl yang dapat dipindahkan. Jika kamu Konfigurasi dengan
"-Duserelocatableinc", maka jalur di @INC (dan yang lainnya di %Config) dapat
secara opsional terletak melalui jalur perl dapat dieksekusi.
Pada waktu mulai, jika ada jalur di @INC atau "Config" itu Konfigurasi ditandai sebagai dapat dipindahkan (oleh
memulainya dengan ".../"), lalu diawali dengan direktori $^X. Hal ini memungkinkan
relokasi dapat dikonfigurasi pada basis per-direktori, meskipun defaultnya dengan
"-Duserelocatableinc" adalah bahwa semuanya dipindahkan. Instalasi awal dilakukan untuk
awalan dikonfigurasi asli.
konfigurasi perbaikan
Konfigurasi sekarang lebih baik dalam menghapus file-file sementara. Tom Callaway (dari RedHat) juga
patch kontribusi yang melengkapi set flag yang diteruskan ke compiler dan linker,
khususnya bahwa "-fPIC" sekarang diaktifkan di Linux. Itu juga akan serak ketika Anda / dev / null
bukan perangkat.
Variabel konfigurasi baru "d_pseudofork" telah menjadi Konfigurasi, dan tersedia sebagai
$Config{d_pseudofork} dalam modul "Config". Ini membedakan dukungan "garpu" nyata dari
emulasi pseudofork yang digunakan pada platform Windows.
config.pod dan config.sh sekarang ditempatkan dengan benar untuk kompilasi silang.
$Config{useshrplib} sekarang 'benar' daripada 'ya' saat menggunakan perpustakaan perl bersama.
Kompilasi perbaikan
Merek paralel seharusnya berfungsi dengan baik sekarang, meskipun mungkin masih ada masalah jika "membuat
test" diinstruksikan untuk dijalankan secara paralel.
Banyak peringatan kompilasi telah dibersihkan. Peringatan kompiler yang sangat keras kepala di
"S_emulate_eaccess()" terbunuh setelah enam upaya. g ++ dukungan telah disesuaikan,
khusus untuk FreeBSD.
mkppport telah terintegrasi, dan semua ppport.h file di inti sekarang akan dibuat secara otomatis
pada waktu pembuatan (dan dihapus selama pembersihan).
Instalasi perbaikan.
tukang instal sekarang bekerja dengan "-Duserelocatableinc" dan "DESTDIR".
penginstal tidak lagi menginstal:
· file perpustakaan statis dari ekstensi yang ditautkan secara statis ketika perpustakaan perl bersama adalah
sedang digunakan. (Mereka tidak diperlukan. Lihat "Windows" di bawah).
· TANDA TANGAN dan JEDA*.pub (berkas CPAN)
· CATATAN dan MENambal (File ExtUtils)
· perlld dan ld2 (Berkas Cygwin)
Platform Spesifik Perubahan
Ada petunjuk yang ditingkatkan untuk AIX, Cygwin, DEC/OSF, FreeBSD, HP/UX, Irix 6 Linux, MachTen,
NetBSD, OS/390, QNX, SCO, Solaris, SunOS, Sistem V Rilis 5.x (UnixWare 7, OpenUNIX 8),
Ultrix, UMIPS, uts dan VOS.
FreeBSD
· Jatuhkan "-std=c89" dan "-ansi" jika menggunakan "long long" sebagai tipe integral utama, selain itu di
FreeBSD 6.2 (dan mungkin rilis lainnya), header sistem tidak mendeklarasikan beberapa fungsi
dibutuhkan oleh perl.
Solaris
· Dimulai dengan Solaris 10, kami tidak ingin perpustakaan bersama berversi, karena itu
sering menunjukkan perpustakaan khusus penggunaan pribadi. Masalah-masalah ini sering kali dapat dipicu
ketika SUNWbdb (Berkeley DB) diinstal. Oleh karena itu jika Solaris 10 terdeteksi set
"ignore_versioned_solibs=y".
VMS
· Izinkan matematika IEEE untuk tidak dipilih pada OpenVMS I64 (tetapi tetap default).
· Rekam penggunaan IEEE di "config.h"
· Bantu kompiler VMS lama dengan menggunakan "ccflags" saat membuat "munchconfig.exe".
· Jangan mencoba membangun ekstensi "Utas" lama di VMS ketika "-Duseithreads" telah dipilih.
· Melewati string mentah "NaN" ke nakal menyebabkan core dump - jadi string telah
diubah menjadi "*NaN*"
· t/op/stat.t tes sekarang akan menguji tautan keras pada VMS jika didukung.
Windows
· Saat menggunakan perpustakaan perl bersama penginstal tidak lagi menginstal file perpustakaan statis,
mengimpor file perpustakaan dan mengekspor file perpustakaan (ekstensi yang ditautkan secara statis) dan
file bootstrap kosong (dari ekstensi yang ditautkan secara dinamis). Ini memperbaiki masalah
membangun PAR-Packer di Win32 dengan build debug dari Perl.
· Berbagai peningkatan pada proses pembuatan win32, termasuk dukungan untuk Visual C++ 2005
Edisi Ekspres (alias Visual C++ 8.x).
· perl.exe sekarang akan memiliki ikon jika dibangun dengan MinGW atau Borland.
· Perbaikan pada proses pembuatan perl-static.exe.
· Tambahkan opsi makefile Win32 untuk menautkan semua ekstensi secara statis.
· Itu Menggerenyet direktori telah digabungkan ke dalam Win32 direktori.
· Tes "setlocale" telah diaktifkan kembali untuk Windows XP dan seterusnya.
Terpilih Bug Perbaikan
Unicode
Banyak bug yang terkait dengan implementasi Unicode internal (UTF-8) telah diperbaiki. Di dalam
khusus, bug lama yang terkait dengan mengembalikan Unicode melalui "tie", overloading atau $@
sekarang hilang, beberapa di antaranya tidak pernah dilaporkan.
"unpack" secara internal akan mengonversi string kembali dari UTF-8 pada tipe numerik. Ini adalah sebuah
kompromi antara konsistensi penuh sekarang di 5.10, dan perilaku saat ini, yaitu
sering digunakan sebagai "fitur" pada tipe string.
Menggunakan lapisan IO ":crlf" dan "UTF-16" bersama-sama sekarang akan berfungsi.
Memperbaiki masalah dengan "split", Unicode "/\s+/" dan "/ \0/".
Memperbaiki bug RT #40641 - penyandian karakter Unicode dalam ekspresi reguler.
Memperbaiki bug ketika menggunakan pola tertentu dalam regexp menyebabkan kepanikan. [RT #45337]
Perl tidak lagi segfault (karena rekursi internal tak terbatas) jika karakter lokal adalah
bukan UTF-8 [RT #41442]:
gunakan buka ':lokal';
cetak STDERR "\x{201e}"; #
Perlio
Inkonsistensi telah diperbaiki dalam penghitungan referensi yang digunakan PerlIO untuk melacak
Deskriptor file Unix, dan API yang digunakan oleh kode XS untuk mengelola mendapatkan dan merilis "FILE
*"S
Sihir
Beberapa bug telah diperbaiki di Magic, sistem internal yang digunakan untuk mengimplementasikan fitur-fitur seperti
sebagai "dasi", pewarnaan dan berbagi benang.
"undef @array" pada array terikat sekarang dengan benar memanggil metode "CLEAR".
Beberapa operasi bitwise tidak memeriksa apakah argumen mereka ajaib sebelumnya
menggunakan mereka. [RT #24816]
Sihir tidak lagi dipanggil dua kali dengan ekspresi "\&$x"
Bug dengan menetapkan jumlah besar dan noda telah diselesaikan. [RT #40708]
Entri baru telah ditambahkan ke tabel MAGIC - "svt_local". Ini digunakan saat menyalin
sihir ke nilai baru selama "lokal", memungkinkan masalah tertentu dengan pelokalan dibagikan
variabel yang akan diselesaikan.
Untuk detail implementasi, lihat "Tabel Virtual Ajaib" di perlguts.
berkat kelebihan beban objek sekarang bekerja
Secara internal, objek-ness Perl ada pada referensi, bukan referensi, meskipun metode
hanya dapat dipanggil melalui referensi. Namun, implementasi asli dari kelebihan beban
bendera yang disimpan terkait dengan kelebihan beban pada referensi, bergantung pada bendera yang disalin
ketika referensi disalin, atau ditetapkan pada pembuatan referensi baru. Ini memanifestasikan
dalam bug - jika Anda mengubah objek dari kelas yang kelebihan beban, menjadi yang melakukannya
tidak, maka referensi lain yang ada berpikir bahwa mereka (masih) menunjuk ke kelebihan beban
objek, pilih jalur kode C ini, lalu lempar kesalahan. Analoginya, berkat menjadi an
kelas yang kelebihan beban ketika referensi lain ada akan mengakibatkan mereka tidak menggunakan kelebihan beban.
Implementasi telah diperbaiki untuk 5.10, tetapi perbaikan ini mengubah semantik flag
bit, jadi tidak kompatibel dengan biner, jadi tidak dapat diterapkan ke 5.8.9. Namun, 5.8.9 memiliki
work-around yang mengimplementasikan perbaikan bug yang sama. Jika referensi memiliki banyak referensi,
kemudian semua referensi lain ditempatkan dan dikoreksi. Pencarian penuh dihindari kapan pun
mungkin dengan memindai leksikal keluar dari subrutin saat ini, dan argumen
tumpukan.
Vendor Linux terkenal tertentu menerapkan versi yang tidak lengkap dari perbaikan bug ini ke mereka
/usr/bin/Perl dan kemudian menutup laporan bug sebelum waktunya tentang masalah kinerja tanpa
konsultasi kembali ke hulu. Ini tidak cukup, mereka kemudian melanjutkan untuk mengabaikan
perbaikan yang diperlukan untuk perubahan yang belum dirilis ini selama 11 bulan, hingga tekanan besar-besaran terjadi
diterapkan oleh pelanggan berbayar mereka yang telah lama menderita, dikatalisasi oleh kegagalan yang ditampilkan
di blog terkemuka dan Slashdot.
"ketat" sekarang menyebarkan benar ke string evaluasi
Di bawah 5.8.8 dan sebelumnya:
$ perl5.8.8 -e 'gunakan ketat; eval "gunakan bilah foo" atau mati $@'
Tidak dapat menemukan foo.pm di @INC (@INC berisi: ... .) di (eval 1) baris 2.
BEGIN gagal--kompilasi dibatalkan pada (eval 1) baris 2.
Di bawah 5.8.9 dan yang lebih baru:
$ perl5.8.9 -e 'gunakan ketat; eval "gunakan bilah foo" atau mati $@'
Bareword "bar" tidak diperbolehkan saat "strict subs" digunakan pada (eval 1) baris 1.
Ini dapat menyebabkan masalah dengan program yang mengurai pesan kesalahan dan mengandalkan buggy
tingkah laku.
Lainnya tetap
· Tokenizer tidak lagi memperlakukan "=cute" (dan kata lain yang dimulai dengan "=cut") sebagai
sinonim untuk "= potong".
· Memanggil "CORE::require"
"CORE::require" dan "CORE::do" selalu diurai sebagai "require" dan "do" ketika mereka
diganti. Ini sekarang sudah diperbaiki.
· Menghentikan kebocoran memori lama / etc / groups entri.
· "sementara ($x saya ...) { ...; redo }" tidak boleh "undef $x".
Di hadapan "saya" dalam kondisi "sementara ()", "sampai ()", atau "untuk (;;)"
loop, kami sekarang menambahkan ruang lingkup ekstra ke badan sehingga "ulangi" tidak "membatalkan"
leksikal.
· Pragma "pengkodean" sekarang dengan benar mengabaikan apa pun yang mengikuti karakter "@" di
Variabel lingkungan "LC_ALL" dan "LANG". [RT#49646]
· Segfault diamati dengan beberapa gcc 3.3 pengoptimalan diselesaikan.
· Kemungkinan segfault ketika "membongkar" yang digunakan dalam konteks skalar dengan grup "()" diselesaikan.
[RT #50256]
· Terselesaikan masalah di mana $! dapat diubah oleh penangan sinyal yang mengganggu "sistem"
panggilan.
· Memperbaiki bug RT #37886, dereferencing simbolis diizinkan dalam argumen "didefinisikan"
bahkan di bawah pengaruh "gunakan 'ref' yang ketat".
· Memperbaiki bug RT #43207, di mana "lc"/"uc" di dalam "sort" memengaruhi nilai pengembalian.
· Memperbaiki bug RT #45607, di mana "*{"BONK"} = \&{"BONK"}" tidak berfungsi dengan benar.
· Memperbaiki bug RT #35878, serak dari XSUB yang dipanggil melalui "goto &xsub" merusak perl
internal.
· Memperbaiki bug RT #32539, DynaLoader.o dipindahkan ke lipperl.so untuk menghindari kebutuhan untuk
hubungkan DynaLoader secara statis ke dalam stub Perl yang dapat dieksekusi. Dengan ini lipperl.so
menyediakan semua yang diperlukan untuk menjalankan juru bahasa Perl tertanam fungsional.
· Perbaiki bug RT #36267 sehingga menetapkan hash terikat tidak mengubah hash yang mendasarinya.
· Perbaiki bug RT #6006, penggantian regexp menggunakan variabel pengganti besar gagal beberapa
waktu, yaitu ketika substitusi berisi sesuatu seperti "${10}" (perhatikan tanda kurung)
bukannya hanya $10.
· Perbaiki bug RT #45053, "Perl_newCONSTSUB()" sekarang aman untuk thread.
Platform Spesifik Perbaikan
darwin / MacOS X
· Berbagai peningkatan pada build 64 bit.
· Perlindungan Mutex ditambahkan di "PerlIOStdio_close()" untuk menghindari kondisi balapan. Semoga
ini memperbaiki kegagalan dalam tes utas gratis.t dan blok.t.
· Menambahkan dukungan terminal bercabang ke debugger, dengan kemampuan untuk memperbarui jendela
judul.
OS / 2
· Masalah pembuatan dengan menentukan "USE_MULTI" dan "USE_ITHREADS" tetapi tanpa
"USE_IMP_SYS" telah diperbaiki.
· "OS2::REXX" ditingkatkan ke versi 1.04
Tru64
· Kebijakan pembangunan titik mengambang yang selaras untuk cc dan gcc.
RedHat Linux
· Meninjau kembali patch dari 5.6.1 untuk RH7.2 untuk Intel icc [RT #7916], menambahkan tambahan
periksa $Config{gccversion}.
Solaris/i386
· Gunakan "-DPTR_IS_LONG" saat menggunakan bilangan bulat 64 bit
VMS
· Memperbaiki pembacaan gaya rekaman file dalam memori "PerlIO::Scalar".
· pipa shutdown pada proses keluar sekarang harus lebih kuat.
· Bug dalam penanganan keluar VMS yang digelitik oleh "Test::Harness" 2.64 telah diperbaiki.
· Perbaiki uji kemampuan penguncian "fcntl()" di konfigurasi.com.
· Mengganti "shrplib='define'" dengan "useshrplib='true'" di VMS.
Windows
· "File::Find" digunakan untuk gagal ketika direktori target adalah huruf drive kosong dan
"no_chdir" adalah 1 (standarnya adalah 0). [RT #41555]
· Masalah pembuatan dengan menentukan "USE_MULTI" dan "USE_ITHREADS" tetapi tanpa
"USE_IMP_SYS" telah diperbaiki.
· Id proses tidak lagi terpotong menjadi 16 bit pada beberapa platform Windows (
http://bugs.activestate.com/show_bug.cgi?id=72443 )
· Memperbaiki bug RT #54828 di perlio.c di mana memanggil "binmode" di Win32 dan Cygwin dapat menyebabkan
kesalahan segmentasi.
Lebih kecil tetap
· Sekarang mungkin untuk membebani "eq" saat menggunakan "nomethod".
· Berbagai masalah menggunakan "overload" dengan bilangan bulat 64 bit dikoreksi.
· Jumlah referensi deskriptor file "PerlIO" sekarang ditangani dengan benar.
· Pada VMS, titik-titik yang lolos akan dipertahankan saat dikonversi ke sintaks Unix.
· "keys %+" tidak lagi memberikan peringatan 'ambigu'.
· Menggunakan "#!perl -d" dapat memicu pernyataan, yang telah diperbaiki.
· Jangan merangkai referensi kode terikat di @INC saat memanggil "memerlukan".
· Referensi kode di @INC melaporkan nama file yang benar ketika "__FILE__" digunakan.
· Lebar dan presisi dalam sprintf tidak menangani karakter di atas 255 dengan benar. [RT
# 40473]
· Daftar irisan dengan indeks di luar jangkauan sekarang bekerja lebih konsisten. [RT #39882]
· Perubahan yang diperkenalkan dengan Perl 5.8.1 mematahkan penguraian argumen dari formulir
"-foo=bar" dengan "-s" pada baris <#!>. Ini telah diperbaiki. Lihat
http://bugs.activestate.com/show_bug.cgi?id=43483
· "tr///" sekarang threadsafe. Sebelumnya itu menyimpan sapuan di dalam OP-nya, bukan
daripada di pad.
· pod2html label berlabuh lebih konsisten dan menangani daftar definisi bersarang dengan lebih baik.
· Veto pembersihan "utas" telah diperpanjang untuk menyertakan "perl_free()" dan
"perl_destruct()"
· Pada beberapa sistem, perubahan pada $ENV{TZ} tidak selalu diikuti oleh yang mendasarinya
panggilan ke "localtime_r()". Perl sekarang memaksa inspeksi lingkungan pada ini
sistem.
· Variabel khusus $^R sekarang lebih konsisten disetel saat menjalankan regexps menggunakan
Konstruksi "(?{...})". Secara khusus, itu akan tetap disetel bahkan jika referensi balik atau
sub-pola opsional "(?:...)?" digunakan.
New or Berubah Diagnostik
panik: sv_chop %s
Kesalahan fatal baru ini terjadi ketika rutinitas C "Perl_sv_chop()" melewati posisi yang
tidak berada dalam buffer string skalar. Ini disebabkan oleh kode XS kereta, dan pada saat ini
pemulihan poin tidak mungkin.
Maksimal menghitung of tertunda sinyal (%S) melampaui
Kesalahan fatal baru ini terjadi ketika proses perl harus dibatalkan karena terlalu banyak yang tertunda
sinyal, yang terikat untuk mencegah Perl agar tidak dapat menangani sinyal masuk lebih lanjut
aman.
panik: usaha untuk panggilan %s in %s
Kesalahan fatal baru ini terjadi ketika operator uji file versi ACL digunakan di tempatnya
tidak tersedia di platform saat ini. Pemeriksaan sebelumnya berarti tidak boleh
mungkin untuk mendapatkan ini.
UKURAN PENGAMBILAN dikembalikan a negatif nilai
Kesalahan baru menunjukkan bahwa larik terikat mengklaim memiliki jumlah elemen negatif.
Tidak bisa meningkatkan %s (%D) untuk %d
Sebelumnya kesalahan internal dari kode pemutakhiran SV kurang informatif Tidak bisa
meningkatkan bahwa jenis of skalar. Sekarang melaporkan tipe internal saat ini, dan tipe baru
diminta.
%s argumen is tidak a HASH or HIMPUNAN elemen or a subrutin
Kesalahan ini, dilemparkan jika argumen yang tidak valid disediakan untuk "ada" sekarang dengan benar termasuk
"atau subrutin". [RT #38955]
Tidak bisa membuat itu tidak dapat ditimpa builtin %s fatal
Kesalahan dalam "Fatal" ini sebelumnya tidak menunjukkan nama bawaan yang dimaksud (sekarang
diwakili oleh %s di atas).
Tidak dikenali karakter '%S' in kolom %d
Kesalahan ini sebelumnya tidak menyatakan kolom.
Mengimbangi di luar string
Ini sekarang juga dapat dihasilkan dengan "mencari" pada pegangan file menggunakan "PerlIO::scalar".
Cacat melarikan diri in itu ditentukan encoding in ekspresi reguler; ditandai by <- SINI in MS/
Kesalahan baru, diperkenalkan sebagai bagian dari perbaikan RT #40641 untuk menangani penyandian Unicode
karakter dalam komentar ekspresi reguler.
Anda mesin tidak mendukung membuang/membuang.
Kesalahan fatal yang lebih informatif dikeluarkan saat memanggil "dump" di Win32 dan Cygwin. (Mengingat bahwa
tujuan "dump" adalah untuk menggugurkan dengan core dump, dan core dump tidak dapat diproduksi di
platform ini, ini lebih berguna daripada keluar secara diam-diam.)
Berubah Internal
Sumber perl sekarang dapat dikompilasi dengan kompiler C++ alih-alih kompiler C. A
detail implementasi yang diperlukan adalah bahwa di bawah C++, makro "XS" digunakan untuk mendefinisikan XSUBs
sekarang menyertakan definisi "C" eksternal. Efek samping dari ini adalah C + + kode yang digunakan
konstruksi
typedef XS(SwigPerlWrapper);
sekarang perlu ditulis
typedef XSPROTO(SwigPerlWrapper);
menggunakan makro "XSPROTO" baru, untuk dikompilasi. Ekstensi C tidak terpengaruh, meskipun
Ekstensi C didorong untuk menggunakan "XSPROTO" juga. Perubahan ini hadir di 5.10.0
rilis Perl, jadi setiap kode yang dipelihara secara aktif yang kebetulan menggunakan konstruksi ini
seharusnya sudah disesuaikan. Kode yang perlu diubah akan gagal dengan kompilasi
kesalahan.
sihir "set" pada pelokalan/penugasan ke variabel ajaib sekarang hanya akan memicu untuk
wadah sihir, yaitu untuk %ENV atau %SIG tetapi tidak untuk $#array.
Makro API baru "newSVpvs()" dapat digunakan sebagai pengganti konstruksi seperti
"newSVpvn("ISA", 3)". Dibutuhkan konstanta string tunggal, dan pada waktu kompilasi C menentukan
panjangnya.
Fungsi API baru "Perl_newSV_type()" dapat digunakan sebagai pengganti yang lebih efisien dari
idiom umum
sv = baruSV(0);
sv_upgrade(sv, ketik);
Demikian pula "Perl_newSVpvn_flags()" dapat digunakan untuk menggabungkan "Perl_newSVpv()" dengan
"Perl_sv_2mortal()" atau yang setara dengan "Perl_sv_newmortal()" dengan "Perl_sv_setpvn()"
Dua makro baru "mPUSHs()" dan "mXPUSHs()" ditambahkan, untuk mempermudah mendorong SV fana
ke tumpukan. Mereka kemudian digunakan untuk memperbaiki beberapa bug di mana nilai pada tumpukan tidak
telah mati.
Fungsi "Perl_signbit()" ditambahkan untuk menguji tanda "NV". Ini memetakan ke sistem
satu bila tersedia.
"Perl_av_reify()", "Perl_lex_end()", "Perl_mod()", "Perl_op_clear()", "Perl_pop_return()",
"Perl_qerror()", "Perl_setdefout()", "Perl_vivify_defelem()" dan "Perl_yylex()" sekarang
terlihat oleh ekstensi. Ini diperlukan untuk memungkinkan "Data::Alias" bekerja di Windows.
"Perl_find_runcv()" sekarang terlihat oleh ekstensi inti Perl. Ini diperlukan untuk mengizinkan
"Sub::Current" untuk bekerja di Windows.
Fungsi "ptr_table*" sekarang tersedia di perl yang tidak berulir. "Dapat disimpan" memanfaatkan
ini.
Ada banyak pembersihan kecil yang dilakukan pada internal. Secara khusus,
"Perl_sv_upgrade()" telah sangat disederhanakan, dengan jalur kode langsung
yang menggunakan "memset()" dan "memcpy()" untuk menginisialisasi badan baru, daripada penugasan melalui
beberapa variabel sementara. Itu juga mendapat manfaat dari penyederhanaan dan de-duplikasi
dari kode manajemen arena.
Banyak perbaikan kecil dalam basis kode dibuat karena laporan dari Coverity
penganalisis kode statis.
Penggunaan dan dokumentasi yang diperbaiki dari "Perl_gv_stashpv()", "Perl_gv_stashpvn()",
Fungsi "Perl_gv_stashsv()" (parameter terakhir adalah bitmask, bukan boolean).
Makro "PERL_SYS_INIT", "PERL_SYS_INIT3" dan "PERL_SYS_TERM" telah diubah menjadi
fungsi.
"PERLSYS_TERM" tidak lagi membutuhkan konteks. "PerlIO_teardown()" sekarang dipanggil tanpa a
konteks, dan output debug dalam fungsi ini telah dinonaktifkan karena itu diperlukan
bahwa seorang juru bahasa hadir, asumsi yang tidak valid pada waktu penghentian.
Semua opsi waktu kompilasi yang memengaruhi kompatibilitas biner telah dikelompokkan bersama menjadi
variabel global ("PL_bincompat_options").
Nilai "PERL_REVISION", "PERL_VERSION" dan "PERL_SUBVERSION" sekarang dimasukkan ke dalam
variabel global (dan karenanya ke perpustakaan Perl bersama). Selain itu di bawah
"MULTIPLICITY", perl yang dapat dieksekusi sekarang mencatat ukuran struktur juru bahasa
(total, dan untuk versi ini). Ditambah dengan "PL_bincompat_options" ini akan memungkinkan 5.8.10
(dan yang lebih baru), ketika dikompilasi dengan perpustakaan perl bersama, untuk melakukan pemeriksaan kewarasan di
"main()" untuk memverifikasi bahwa pustaka bersama memang kompatibel dengan biner.
Referensi simbolik sekarang dapat memiliki NUL yang disematkan. Fungsi publik baru
"Perl_get_cvn_flags()" dapat digunakan dalam ekstensi jika Anda harus menanganinya.
Makro pembersihan
Kode inti, dan kode XS di ext yang tidak dual-lived di CPAN, tidak lagi menggunakan
makro "PL_na", "NEWSV()", "Null()", "Nullv", "Nullcv", "Nullhv", "Nullhv" dll. Penggunaan mereka
tidak disarankan dalam kode baru, terutama "PL_na", yang merupakan hit kinerja kecil.
New Tes
Banyak modul yang diperbarui dari CPAN menggabungkan tes baru. Beberapa tes khusus inti telah
menambahkan:
ext/DynaLoader/t/DynaLoader.t
Pengujian untuk modul "DynaLoader".
t/komp/lipat.t
Tes untuk pelipatan konstan waktu kompilasi.
t/io/pvbm.t
Pengujian dimasukkan dari 5.10.0 yang memeriksa bahwa tidak ada interaksi yang tidak terduga
antara tipe internal "PVBM" dan "PVGV".
t/lib/proxy_constant_subs.t
Tes untuk bentuk baru dari subrutin konstan.
t/op/attrhand.t
Pengujian untuk "Atribut::Penangan".
t/op/dbm.t
Tes untuk "dbmopen".
t/op/inccode-tie.t
Panggil semua tes di t/op/inccode.t setelah pertama kali mengikat @INC.
t/op/incfilter.t
Tes untuk filter sumber dikembalikan dari referensi kode di @INC.
t/op/bunuh0.t
Tes untuk RT #30970.
t/op/qrstack.t
Tes untuk RT #41484.
t/op/qr.t
Tes untuk konstruksi "qr//".
t/op/regexp_qr_embed.t
Tes untuk konstruksi "qr//" dalam regexp lain.
t/op/regexp_qr.t
Tes untuk konstruksi "qr//".
t/op/rxcode.t
Tes untuk RT #32840.
t/op/studytied.t
Tes untuk "studi" pada skalar terikat.
t/op/substT.t
Tes untuk "subst" berjalan di bawah mode "-T".
t/op/symbolcache.t
Tes untuk "undef" dan "delete" pada entri simpanan yang terikat pada subrutin atau
metode.
t/op/upgrade.t
Tes untuk "Perl_sv_upgrade()".
t/mro/package_aliases.t
Tes MRO untuk "isa" dan alias paket.
t/pod/dua kali.t
Tes untuk memanggil "Pod::Parser" dua kali.
t/jalankan/cloexec.t
Tes untuk mewarisi deskriptor file di "exec" (close-on-exec).
t/uni/cache.t
Tes untuk kode caching UTF-8.
t/uni/chr.t
Uji bahwa penyandian aneh tidak mengganggu "Perl_pp_chr()".
t/uni/yunani.t
Tes untuk RT #40641.
t/uni/latin2.t
Tes untuk RT #40641.
t/uni/kelebihan beban.t
Pengujian untuk mengembalikan Unicode dari nilai yang kelebihan beban.
t/uni/dasi.t
Tes untuk mengembalikan Unicode dari variabel terikat.
Diketahui Masalah
Tidak ada bug baru yang diketahui.
Namun, program yang mengandalkan bug yang telah diperbaiki akan mengalami masalah. Juga, banyak
perbaikan bug yang ada di 5.10.0 tidak dapat di-back-port ke cabang 5.8.x, karena memerlukan
perubahan yang biner tidak kompatibel, atau karena perubahan kode terlalu besar dan karenanya
terlalu berisiko untuk dimasukkan.
Kami hanya memiliki tenaga sukarelawan yang terbatas, dan beban pemeliharaan semakin meningkat
kompleks. Oleh karena itu, ini akan menjadi rilis signifikan terakhir dari seri 5.8.x. Masa depan apa pun
rilis 5.8.x kemungkinan hanya akan menangani masalah keamanan, dan pembangunan platform
kegagalan. Karenanya Anda harus melihat untuk bermigrasi ke 5.10.x, jika Anda belum memulai.
Atau, jika persyaratan bisnis membatasi Anda untuk terus menggunakan 5.8.x, Anda dapat
ingin mempertimbangkan dukungan komersial dari perusahaan seperti ActiveState.
Platform Spesifik Catatan
Win32
"readdir()", "cwd()", $^X dan @INC sekarang menggunakan nama file alternatif (pendek) jika nama panjang
berada di luar halaman kode saat ini (Jan Dubois).
Updated Modul
· "Win32" ditingkatkan ke versi 0.38. Sekarang memiliki tanggapan 'WinVista' yang terdokumentasi dari
"GetOSName" dan dukungan untuk peningkatan hak istimewa Vista di "IsAdminUser". Mendukung
Karakter unicode dalam nama jalur. Kompatibilitas cygwin dan Win64 yang ditingkatkan.
· "Win32API" diperbarui ke 0.1001_01
· Dukungan "killpg()" ditambahkan ke "MSWin32" (Jan Dubois).
· "File::Spec::Win32" ditingkatkan ke versi 3.2701
OS / 2
Updated Modul
· "OS2::Proses" ditingkatkan ke 1.03
Ilya Zakharevich telah menambahkan dan mendokumentasikan beberapa fungsi "Window*" dan "Clipbrd*".
· "OS2::REXX::DLL", "OS2::REXX" diperbarui ke versi 1.03
VMS
Updated Modul
· "DCLsym" ditingkatkan ke versi 1.03
· "Stdio" ditingkatkan ke versi 2.4
· "VMS::XSSymSet" ditingkatkan ke 1.1.
Berita kematian
Nick Ing-Simmons, peretas Perl lama, penulis modul "Tk" dan "Encode", perlio.c
di inti, dan 5.003_02 labu, meninggal karena serangan jantung pada 25 September 2006. Dia akan
dirindukan.
Ucapan Terima Kasih
Beberapa pekerjaan dalam rilis ini didanai oleh hibah TPF.
Steve Hay bekerja di belakang layar untuk mencari tahu penyebab perbedaan antara inti
modul, rilis CPAN mereka, dan rilis inti sebelumnya, dan cara terbaik untuk memperbaiki
mereka. Dia tidak ingin melakukannya lagi. Saya tahu perasaan ini, dan saya sangat senang dia melakukannya
kali ini, bukan aku.
Paul Fenwick membentuk tim yang terdiri dari 18 sukarelawan, yang memecahkan masalah menulis ini
dokumen. Secara khusus, Bradley Dean, Eddy Tan, dan Vincent Pit memberikan setengah dari tim
kontribusi.
Schwern memverifikasi daftar versi modul yang diperbarui, mengoreksi beberapa kesalahan yang saya
(dan semua orang lain) telah melewatkan, keduanya salah menyatakan versi modul, dan mengubah modul
yang belum terdaftar.
Tim QA yang berbasis di Berlin yang terdiri dari Andreas Koenig dan Slaven Rezic tanpa lelah membangun kembali
snapshot, menguji hampir semua CPAN terhadap mereka, dan kemudian mengidentifikasi perubahannya
bertanggung jawab atas regresi modul apa pun, memastikan bahwa beberapa bug show-stopper telah
diinjak sebelum kandidat rilis pertama dipotong.
Committer inti lainnya menyumbang sebagian besar perubahan, dan menerapkan sebagian besar tambalan
dikirim oleh ratusan kontributor yang terdaftar di PENULIS.
Dan jelas, Larry Wall, tanpanya kita tidak akan memiliki Perl.
Pelaporan Bug
Jika Anda menemukan apa yang menurut Anda bug, Anda dapat memeriksa artikel yang baru-baru ini diposting ke
comp.lang.perl.misc newsgroup dan database bug perl di http://bugs.perl.org. Sana
mungkin juga informasi di http://www.perl.org, Halaman Beranda Perl.
Jika Anda yakin memiliki bug yang belum dilaporkan, jalankan perlbug program disertakan dengan
rilis Anda. Pastikan untuk memangkas bug Anda menjadi test case yang kecil tapi cukup. Bugmu
laporan, bersama dengan output dari "perl -V", akan dikirim ke perlbug@perl.org menjadi
dianalisis oleh tim porting Perl. Anda dapat menelusuri dan mencari bug Perl 5 di
http://bugs.perl.org/
Jika bug yang Anda laporkan memiliki implikasi keamanan, yang membuatnya tidak pantas untuk
kirim ke milis yang diarsipkan secara publik, lalu kirimkan ke
perl5-security-report@perl.org. Ini menunjuk ke langganan tertutup surat yang tidak diarsipkan
daftar, yang mencakup semua pembuat komitmen inti, yang akan dapat membantu menilai dampaknya
masalah, mencari solusi, dan membantu mengoordinasikan rilis tambalan untuk
mengurangi atau memperbaiki masalah di semua platform yang mendukung Perl. Harap hanya
gunakan alamat ini untuk masalah keamanan di inti Perl, bukan untuk modul secara mandiri
didistribusikan di CPAN.
Gunakan perl589delta online menggunakan layanan onworks.net