Phát hành ngôn ngữ lập trình Perl 5.30.0

Sau 11 tháng phát triển đã diễn ra phát hành một nhánh ổn định mới của ngôn ngữ lập trình Perl - 5.30. Trong quá trình chuẩn bị phát hành mới, khoảng 620 nghìn dòng mã đã được thay đổi, những thay đổi này ảnh hưởng đến 1300 tệp và 58 nhà phát triển đã tham gia vào quá trình phát triển.

Nhánh 5.30 đã được phát hành theo lịch trình phát triển cố định đã được phê duyệt sáu năm trước, ngụ ý việc phát hành các nhánh ổn định mới mỗi năm một lần và phát hành điều chỉnh ba tháng một lần. Trong khoảng một tháng, dự kiến ​​sẽ phát hành bản phát hành sửa lỗi đầu tiên của Perl 5.30.1, bản này sẽ sửa những lỗi nghiêm trọng nhất được xác định trong quá trình triển khai Perl 5.30.0. Cùng với việc phát hành Perl 5.30, việc hỗ trợ cho nhánh 5.26 đã bị ngừng, các bản cập nhật trong tương lai chỉ có thể được phát hành nếu xác định được các vấn đề bảo mật nghiêm trọng. Quá trình phát triển nhánh thử nghiệm 5.31 cũng đã bắt đầu, trên cơ sở đó bản phát hành Perl 2020 ổn định sẽ được hình thành vào tháng 5.32 năm XNUMX.

Chìa khóa thay đổi:

  • Hỗ trợ thử nghiệm cho các thao tác "" đã được thêm vào biểu thức chính quy.(?<!mẫu)"Và"(?‹=mẫu)» để có quyền truy cập hạn chế vào các mẫu có tên đã được xử lý trước đó. Định nghĩa mẫu phải nằm trong phạm vi 255 ký tự của vị trí tham chiếu;
  • Giá trị tối đa của bộ xác định kích thước (“n”) trong các khối biểu thức chính quy “{m,n}” đã được tăng lên 65534;
  • Đã thêm giới hạn ủng hộ mặt nạ để làm nổi bật một số loại ký tự nhất định trong biểu thức chính quy, bao gồm các bộ Unicode khác nhau. Ví dụ: biểu thức “qr! \p{nv= /(?x) \A [0-5] \z / }!” cho phép bạn chọn tất cả các ký tự Unicode xác định các số từ 0 đến 5, bao gồm cả cách viết số bằng tiếng Thái hoặc tiếng Bengali;
  • Đã thêm hỗ trợ cho các ký tự được đặt tên trong biểu thức chính quy
    các mẫu bên trong được phân tách bằng dấu ngoặc đơn (qr'\N{name}');

  • Hỗ trợ đặc tả Unicode được cập nhật lên phiên bản 12.1. Cờ phát triển thử nghiệm đã bị xóa khỏi cuộc gọi sv_utf8_downgrade và sv_utf8_decode, được sử dụng để phát triển các tiện ích mở rộng bằng ngôn ngữ C;
  • Đã thêm khả năng xây dựng Perl bằng cách triển khai các hoạt động với một ngôn ngữ hỗ trợ hoạt động đa luồng (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Trước đây, cách triển khai như vậy chỉ được sử dụng khi xây dựng phiên bản Perl đa luồng, nhưng giờ đây có thể được kích hoạt cho bất kỳ bản dựng nào;
  • Việc kết hợp các cờ "-Dv" (đầu ra gỡ lỗi nâng cao) và "-Dr" (gỡ lỗi biểu thức chính quy) hiện khiến tất cả các chế độ gỡ lỗi biểu thức chính quy có thể được bật;
  • Các tính năng trước đây không được dùng nữa đã bị xóa:
    • Bây giờ là ký tự phân cách dòng và ký tự đại diện cho phép chỉ sử dụng biểu đồ (không cho phép các ký tự Unicode tổng hợp).
    • Đã ngừng sản xuất hỗ trợ một số hình thức sử dụng ký tự “{” trong biểu thức chính quy mà không thoát khỏi nó đã lỗi thời từ lâu.
    • Cấm sử dụng các hàm sysread(), syswrite(), recv() và send() với trình xử lý ":utf8".
    • Nghiêm cấm sử dụng các định nghĩa về “của tôi” trong các câu điều kiện vốn đã sai (ví dụ: “$x của tôi nếu 0”).
    • Hỗ trợ cho các biến đặc biệt “$*” và “$#” đã bị xóa.
      Hỗ trợ gọi hàm dump() đã bị ngừng (bây giờ bạn phải chỉ định rõ ràng CORE::dump()).

    • Hàm File::Glob::glob đã bị xóa (bạn nên sử dụng File::Glob::bsd_glob).
    • Đã thêm tính năng bảo vệ cho pack() khỏi việc trả về các chuỗi Unicode không chính xác.
    • Việc ngừng hỗ trợ sử dụng macro thực hiện các thao tác với UTF-8 trong mã XS (khối C) đã bị hoãn lại cho đến bản phát hành tiếp theo.
  • Tối ưu hóa hiệu suất:
    • Hoạt động dịch từ UTF-8 sang bố cục ký tự đã được tăng tốc (điểm mã), ví dụ: việc thực hiện thao tác ord(“\x7fff”) hiện yêu cầu ít lệnh hơn 12%. Hiệu suất của các thao tác kiểm tra tính chính xác của chuỗi ký tự UTF-8 cũng được tăng lên;
    • Các lệnh gọi đệ quy trong hàm Finalize_op() đã bị loại bỏ;
    • Thực hiện các tối ưu hóa nhỏ cho mã để thu gọn các ký tự giống hệt nhau và xác định các lớp ký tự trong biểu thức chính quy;
    • Tối ưu hóa chuyển đổi định nghĩa kiểu đã ký thành kiểu không dấu (IV sang UV);
    • Thuật toán chuyển đổi số nguyên thành chuỗi đã được tăng tốc bằng cách xử lý hai chữ số cùng một lúc thay vì một;
    • Những cải tiến đã được thực hiện chuẩn bị dựa trên phân tích của LGTM;
    • Mã được tối ưu hóa trong các tệp regcomp.c, regcomp.h và reregec.c;
    • Trong biểu thức chính quy, quá trình xử lý các mẫu như “qr/[^a]/” bằng ký tự ASCII đã được tăng tốc đáng kể.
  • Hỗ trợ cho nền tảng Minix3 đã được khôi phục. Có thể xây dựng bằng trình biên dịch Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Phiên bản cập nhật của các mô-đun có trong gói cơ bản. Các mô-đun đã bị xóa khỏi thành phần chính B :: Gỡ lỗi и Ngôn ngữ :: Mã.

Nguồn: opennet.ru

Thêm một lời nhận xét