Phát hành SBCL 2.3.11, triển khai ngôn ngữ Common Lisp

Việc phát hành SBCL 2.3.11 (Steel Bank Common Lisp), một bản triển khai miễn phí của ngôn ngữ lập trình Common Lisp, đã được xuất bản. Mã dự án được viết bằng Common Lisp và C và được phân phối theo giấy phép BSD. Trong bản phát hành mới:

  • Sự không tương thích nhỏ:
    • Các luồng có định dạng bên ngoài được chỉ định bằng ":REPLACEMENT" sẽ áp dụng dữ liệu để thay thế thông tin một lần trên mỗi luồng, dẫn đến lỗi giải mã (thay vì, trong một số trường hợp, một lần đối với một chuỗi byte, mỗi luồng không phải là ký tự hợp lệ vị trí bắt đầu cho định dạng bên ngoài này).
    • Giờ đây, công cụ xác định định dạng bên ngoài sẽ báo hiệu lỗi khi sử dụng các biến thể không được hỗ trợ hoặc không được nhận dạng.
  • Cải tiến:
    • Khi gửi các hàm chung sử dụng phương thức kết hợp tiêu chuẩn hoặc ngắn, nếu không có phương thức chính nào, hệ thống sẽ gọi hàm chung SB-PCL:NO-PRIMARY-METHOD, có hành vi mặc định là báo hiệu lỗi. Người dùng có thể định nghĩa các phương thức cho hàm chung này.
    • Các định dạng bên ngoài hiện hỗ trợ các biến thể dòng mới cho mã hóa một byte và utf-8.
    • Các lỗi mã hóa và giải mã ký tự được báo hiệu bởi các hàm luồng hoặc octet hiện hỗ trợ khởi động lại USE-VALUE cho các trình xử lý cung cấp các thay thế đầu vào hoặc đầu ra.
    • READ-SEQUENCE và WRITE-SEQUENCE hỗ trợ các trình tự do người dùng xác định; việc triển khai tiêu chuẩn xử lý từng phần tử, đọc hoặc ghi một byte hoặc ký tự vào/từ luồng tương ứng.
  • Tối ưu hóa:
    • Các định dạng bên ngoài với :REPLACEMENT không còn liên kết các trình xử lý lỗi cho các chức năng chuyển đổi, điều này sẽ làm giảm số lượng thao tác nhược điểm và cải thiện hiệu suất.
    • Nếu :EXTERNAL-FORMAT là đối số của STRING-TO-OCTETS hoặc OCTETS-TO-STRING và là hằng số thời gian biên dịch thì định dạng bên ngoài được giải quyết tại thời điểm tải thay vì tại mỗi lệnh gọi.
    • Trình biên dịch có thể hạn chế các loại đối số cho một số hàm dựa trên loại giá trị được suy ra hoặc ngụ ý được hàm đó trả về.
    • Trình biên dịch giảm số lần kiểm tra kiểu dư thừa trong các hàm như ASSOC và GETF.
  • Sửa lỗi:
    • OCTETS-TO-STRING báo hiệu chính xác hoặc áp dụng các thay thế khi sử dụng các định dạng bên ngoài một byte cho các mã hóa ít phổ biến hơn (chẳng hạn như iso-8859-3), thay vì lấy các bit từ địa chỉ NIL và chuyển đổi các bit đó thành ký tự.
    • FILE-STRING-LENGTH hiện trả về NIL nếu giá trị đầu vào không được mã hóa sang định dạng luồng bên ngoài.
    • Các định dạng bên ngoài nhiều byte dạng bảng (EUC-JP, Shift-JIS, GBK) hiện tôn trọng ký tự thay thế (ở định dạng bên ngoài hoặc thông qua khởi động lại) khi mã hóa thành octet.
    • Chuyển đổi từ các octet bằng cách sử dụng các định dạng UCS-2, UCS-4 và UTF-32 bên ngoài không còn đọc phần cuối của mảng octet với số lượng đơn vị hai hoặc bốn byte không nguyên.
    • Chuyển đổi từ octet bằng các định dạng UCS-2, UCS-4 và UTF-32 bên ngoài hiện trả về một chuỗi đơn giản, theo yêu cầu của định nghĩa loại OCTETS-TO-STRING.
    • Việc sử dụng định dạng đối số bên ngoài không chính xác cho OPEN hoặc WITH-OPEN-FILE (hoặc MAKE-FD-STREAM bên trong) không còn gây rò rỉ bộ mô tả tệp.
    • SB-ROTATE-BYTE xác định các thông số kỹ thuật BYTE vượt quá giới hạn trước các nhược điểm của số nguyên rất lớn để sử dụng mặt nạ và dịch chuyển.
    • Sửa lỗi suy luận kiểu khi biên dịch biểu mẫu SB-ROTATE-BYTE với POSITION khác XNUMX trong định nghĩa byte.
    • Đã sửa một số lỗi trình biên dịch khi biên dịch MAKE-ARRAY, MAKE-STRING và các lỗi khác có kích thước không đổi lớn.
    • Sửa lỗi nội bộ khi biên dịch (SETF-SBIT) với chỉ số không đổi lớn.
    • Đã sửa lỗi trình biên dịch nội bộ cho hàm lambda với danh sách tham số không chính xác trong LABELS.
    • Sửa lỗi trình biên dịch nội bộ khi biên dịch một số dạng LABELS đệ quy vô hạn.
    • Đã sửa lỗi trình biên dịch nội bộ khi cố gắng nội tuyến chuyển sang nhãn đã bị xóa.
    • FILL-POINTER không bao giờ được âm.

Nguồn: opennet.ru

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster