انتشار SBCL 2.3.11 (Steel Bank Common Lisp)، پیاده سازی رایگان زبان برنامه نویسی Common Lisp منتشر شد. کد پروژه با Common Lisp و C نوشته شده است و تحت مجوز BSD توزیع می شود. در نسخه جدید:
- ناسازگاری های جزئی:
- جریانهایی با قالب خارجی مشخصشده با «:REPLACEMENT»، دادهها را برای جایگزینی اطلاعات یک بار در هر جریان اعمال میکنند، که منجر به خطاهای رمزگشایی میشود (بهجای اینکه در برخی موارد، یکبار برای دنبالهای از بایتها که هر کدام از آنها یک کاراکتر معتبر نیست. موقعیت شروع برای این قالب خارجی).
- مشخصکنندههای قالب خارجی اکنون هنگام استفاده از انواع پشتیبانینشده یا ناشناخته خطایی را نشان میدهند.
- بهبودها:
- هنگام ارسال توابع عمومی که از روش ترکیبی استاندارد یا کوتاه استفاده می کنند، اگر هیچ روش اولیه در دسترس نباشد، سیستم تابع عمومی SB-PCL:NO-PRIMARY-METHOD را فراخوانی می کند که رفتار پیش فرض آن سیگنال دادن به خطا است. کاربران می توانند روش هایی را برای این تابع عمومی تعریف کنند.
- فرمت های خارجی اکنون از انواع خط جدید برای رمزگذاری های تک بایتی و utf-8 پشتیبانی می کنند.
- خطاهای رمزگذاری و رمزگشایی کاراکتر که توسط توابع جریان یا اکتت سیگنال میشوند، اکنون از راهاندازی مجدد USE-VALUE برای کنترلکنندههایی که جایگزینهای ورودی یا خروجی را ارائه میکنند، پشتیبانی میکنند.
- READ-SEQUENCE و WRITE-SEQUENCE از توالی های تعریف شده توسط کاربر پشتیبانی می کنند. اجرای استاندارد عنصر به عنصر را پردازش می کند، به ترتیب یک بایت یا کاراکتر را به/از جریان می خواند یا می نویسد.
- Optimizations:
- فرمتهای خارجی با :REPLACEMENT دیگر کنترلکنندههای خطا را برای توابع تبدیل متصل نمیکنند، که باید تعداد عملیاتهای منفی را کاهش دهد و عملکرد را بهبود بخشد.
- اگر :EXTERNAL-FORMAT آرگومان STRING-TO-OCTETS یا OCTETS-TO-STRING باشد و یک ثابت زمان کامپایل باشد، فرمت خارجی در زمان بارگذاری به جای هر تماس حل می شود.
- کامپایلر می تواند انواع آرگومان ها را برای برخی توابع بر اساس نوع استنتاج یا ضمنی مقداری که توسط آن تابع برگردانده می شود، محدود کند.
- کامپایلر تعداد بررسی های اضافی را در توابعی مانند ASSOC و GETF کاهش می دهد.
- رفع اشکال:
- OCTETS-TO-STRING هنگام استفاده از فرمت های خارجی تک بایتی برای کدگذاری های کمتر رایج (مانند iso-8859-3) به جای گرفتن بیت ها از آدرس NIL و تبدیل آن بیت ها به کاراکتر، به درستی سیگنال می دهد یا جایگزین می کند.
- اگر مقادیر ورودی در قالب جریان خارجی کدگذاری نشده باشند، اکنون FILE-STRING-LENGTH NIL را برمی گرداند.
- فرمتهای خارجی چند بایتی جدولی (EUC-JP، Shift-JIS، GBK) اکنون هنگام رمزگذاری به هشتها، به کاراکتر جایگزین (در قالب خارجی یا از طریق راهاندازی مجدد) احترام میگذارند.
- تبدیل از octets با استفاده از فرمتهای UCS-2، UCS-4 و UTF-32 خارجی، دیگر انتهای یک آرایه هشتگانه با تعداد غیرصحیح واحدهای دو یا چهار بایتی را نمیخواند.
- تبدیل از octets با استفاده از فرمت های خارجی UCS-2، UCS-4 و UTF-32 اکنون یک رشته ساده را برمی گرداند، همانطور که در تعریف نوع OCTETS-TO-STRING لازم است.
- استفاده از فرمت آرگومان خارجی نادرست برای OPEN یا WITH-OPEN-FILE (یا MAKE-FD-STREAM داخلی) دیگر باعث نشت توصیفگر فایل نمی شود.
- SB-ROTATE-BYTE مشخصات BYTE را خارج از محدوده قبل از معایب اعداد صحیح بسیار بزرگ برای استفاده از ماسک ها و شیفت ها تعریف می کند.
- هنگام کامپایل کردن فرمهای SB-ROTATE-BYTE با POSITION غیر صفر در تعریف بایت، استنتاج نوع را برطرف کنید.
- رفع چندین خطای اسمبلر هنگام کامپایل MAKE-ARRAY، MAKE-STRING و موارد دیگر با اندازه ثابت بزرگ.
- رفع خطای داخلی هنگام کامپایل (SETF-SBIT) با شاخص ثابت بزرگ.
- رفع خطای کامپایلر داخلی برای تابع لامبدا با لیست پارامترهای نادرست در LABELS.
- یک خطای کامپایلر داخلی را هنگام کامپایل کردن برخی از اشکال بی نهایت بازگشتی LABELS برطرف کنید.
- یک خطای کامپایلر داخلی هنگام تلاش برای وارد کردن یک پرش به یک برچسب قبلاً حذف شده برطرف شد.
- FILL-POINTER هرگز نباید منفی باشد.
منبع: opennet.ru
