انتشار زبان برنامه نویسی Perl 5.30.0

پس از 11 ماه توسعه صورت گرفت انتشار یک شاخه پایدار جدید از زبان برنامه نویسی Perl - 5.30. در آماده سازی نسخه جدید، حدود 620 هزار خط کد تغییر کرد، تغییرات بر 1300 فایل تأثیر گذاشت و 58 توسعه دهنده در توسعه شرکت کردند.

شعبه 5.30 مطابق با برنامه توسعه ثابت که شش سال پیش تصویب شده بود منتشر شد که به معنای انتشار شاخه های جدید پایدار یک بار در سال و انتشار اصلاحی هر سه ماه یکبار است. در حدود یک ماه دیگر، قرار است اولین نسخه اصلاحی Perl 5.30.1 منتشر شود که مهم ترین خطاهای شناسایی شده در هنگام اجرای Perl 5.30.0 را اصلاح می کند. همراه با انتشار Perl 5.30، پشتیبانی از شاخه 5.26 متوقف شد، که ممکن است به روز رسانی های بعدی تنها در صورت شناسایی مشکلات امنیتی حیاتی منتشر شود. روند توسعه شاخه آزمایشی 5.31 نیز آغاز شده است که بر اساس آن نسخه پایدار Perl 2020 در می 5.32 شکل خواهد گرفت.

کلید تغییرات:

  • پشتیبانی آزمایشی برای عملیات "" به عبارات منظم اضافه شده است.(؟<!الگو)"و"(?‹=الگو)» برای دسترسی محدود به الگوهای نامگذاری شده قبلی پردازش شده است. تعریف الگو باید در 255 کاراکتر از محل مرجع باشد.
  • حداکثر مقدار تعیین کننده اندازه ("n") در بلوک های عبارت منظم "{m,n}" به 65534 افزایش یافته است.
  • محدود اضافه شد پشتیبانی ماسک هایی برای برجسته کردن دسته های خاصی از کاراکترها در عبارات منظم، که مجموعه های مختلف یونیکد را پوشش می دهد. مثلاً عبارت «qr! \p{nv= /(?x) \A [0-5] \z / }!” به شما امکان می دهد تمام کاراکترهای یونیکد را که اعداد را از 0 تا 5 تعریف می کنند، از جمله املای اعداد تایلندی یا بنگالی انتخاب کنید.
  • پشتیبانی از کاراکترهای نامگذاری شده در عبارات منظم اضافه شده است
    داخل الگوهای مشخص شده توسط نقل قول تک (qr'\N{name}');

  • پشتیبانی از مشخصات یونیکد به نسخه به روز شد 12.1. پرچم توسعه آزمایشی از تماس ها حذف شده است sv_utf8_downgrade و sv_utf8_decode، در توسعه پسوندها در زبان C استفاده می شود.
  • قابلیت ساخت پرل با اجرای عملیات با محلی که از عملیات چند رشته ای پشتیبانی می کند اضافه شده است (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). پیش از این، چنین پیاده‌سازی فقط در هنگام ساخت نسخه چند رشته‌ای از Perl استفاده می‌شد، اما اکنون می‌توان آن را برای هر ساختی فعال کرد.
  • ترکیب پرچم‌های "-Dv" (خروجی اشکال زدایی پیشرفته) و "-Dr" (اشکال‌زدایی reex) اکنون باعث می‌شود که تمام حالت‌های اشکال‌زدایی عبارت معمولی ممکن فعال شوند.
  • ویژگی‌هایی که قبلاً منسوخ شده‌اند حذف شده‌اند:
    • اکنون به عنوان جداکننده خطوط و کاراکترهای عام مجاز فقط استفاده کنید نمودارها (کاراکترهای ترکیبی یونیکد مجاز نیستند).
    • متوقف شد پشتیبانی از برخی از اشکال قدیمی استفاده از کاراکتر "{" در عبارات منظم بدون فرار از آن.
    • ممنوع است با استفاده از توابع sysread()، syswrite()، recv() و send() با کنترل کننده های ":utf8".
    • استفاده از تعاریف «my» در عبارات شرطی ذاتاً نادرست ممنوع است (مثلاً «x $ من اگر 0 باشد»).
    • پشتیبانی از متغیرهای ویژه "$*" و "$#" حذف شده است.
      پشتیبانی از فراخوانی ضمنی تابع dump() متوقف شده است (اکنون باید به صراحت CORE::dump() را مشخص کنید).

    • تابع File::Glob::glob حذف شده است (شما باید از File::Glob::bsd_glob استفاده کنید).
    • حفاظتی به pack() در برابر بازگشت توالی های یونیکد نادرست اضافه شده است.
    • پایان پشتیبانی برای استفاده از ماکروهایی که عملیات با UTF-8 را در کد XS (بلوک‌های C) انجام می‌دهند به نسخه بعدی موکول شد.
  • بهینه سازی عملکرد:
    • عملیات ترجمه از UTF-8 به طرح نویسه تسریع شده است (نقطه کدبرای مثال، انجام عملیات ord("\x7fff") اکنون به 12٪ دستورالعمل کمتر نیاز دارد. عملکرد عملیات بررسی صحت توالی کاراکترهای UTF-8 نیز افزایش یافته است.
    • فراخوانی های بازگشتی در تابع finalize_op() حذف شده اند.
    • بهینه سازی های جزئی در کد برای جمع کردن کاراکترهای یکسان و تعریف کلاس های کاراکتر در عبارات منظم انجام شده است.
    • بهینه شده است تبدیل تعاریف نوع امضا شده به بدون علامت (IV به UV)؛
    • الگوریتم تبدیل اعداد صحیح به رشته با پردازش دو رقم همزمان به جای یک تسریع شده است.
    • بهبودهایی انجام شده است تهیه شده بر اساس تجزیه و تحلیل توسط LGTM؛
    • کد بهینه شده در فایل های regcomp.c، regcomp.h و regexec.c.
    • در عبارات منظم، پردازش الگوهایی مانند "qr/[^a]/" با کاراکترهای ASCII به طور قابل توجهی تسریع شده است.
  • پشتیبانی از پلتفرم Minix3 بازیابی شده است. امکان ساخت با استفاده از کامپایلر Microsoft Visual Studio 2019 (Visual C++ 14.2) وجود دارد.
  • نسخه های به روز شده ماژول های موجود در بسته اصلی. ماژول ها از ترکیب اصلی حذف شده اند ب:: اشکال زدایی и محل::کدها.

منبع: opennet.ru

اضافه کردن نظر