زبان برنامه نویسی Perl 5.36.0 موجود است

پس از یک سال توسعه، انتشار یک شاخه پایدار جدید از زبان برنامه نویسی Perl - 5.36 - منتشر شد. در تهیه نسخه جدید، حدود 250 هزار خط کد تغییر کرد، تغییرات روی 2000 فایل تأثیر گذاشت و 82 توسعه دهنده در توسعه شرکت کردند.

شعبه 5.36 مطابق با برنامه توسعه ثابت مصوب 5.36.1 سال پیش منتشر شد که دلالت بر انتشار شعب جدید پایدار یک بار در سال و انتشار اصلاحی هر سه ماه یکبار دارد. حدود یک ماه دیگر قرار است اولین نسخه اصلاحی Perl 5.36.0 منتشر شود که مهم ترین خطاهای شناسایی شده در حین اجرای Perl 5.36 را اصلاح می کند. همراه با انتشار Perl 5.32، پشتیبانی از شاخه 5.37 متوقف شد، که ممکن است به روز رسانی های بعدی فقط در صورت شناسایی مشکلات امنیتی حیاتی منتشر شود. روند توسعه شاخه آزمایشی 2023 نیز آغاز شده است که بر اساس آن نسخه پایدار Perl 5.38 در ماه می یا ژوئن 7 شکل خواهد گرفت، مگر اینکه تصمیمی برای تغییر شماره گذاری XNUMX.x گرفته شود.

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

  • پشتیبانی از امضاهای تابع تثبیت شده است و اکنون در هنگام مشخص کردن پراگما "use v5.36" در دسترس است، به شما امکان می دهد لیست متغیرهای مورد استفاده در تابع را به صراحت تعریف کنید و عملیات بررسی و تخصیص مقادیر را از یک آرایه به صورت خودکار انجام دهید. پارامترهای ورودی برای مثال، کدی که قبلا استفاده شده بود: sub foo { die "Too many arguments for subroutine" مگر اینکه @_ >= 2; die "خیلی کم آرگومان برای زیربرنامه" مگر اینکه @_ <= 2; my($ چپ، $راست) = @_; بازگشت $ چپ + راست $; }

    هنگام استفاده از امضا، می توان آن را با موارد زیر جایگزین کرد:

    sub foo ($left, $right) { return $left + $right; }

    اگر foo را با بیش از دو آرگومان فراخوانی کنید، مفسر خطا خواهد کرد. این لیست همچنین از یک متغیر ویژه "$" پشتیبانی می کند، که به شما امکان می دهد برخی از آرگومان ها را نادیده بگیرید، به عنوان مثال، "sub foo ($left, $, $right)" به شما امکان می دهد تنها آرگومان های اول و سوم را در متغیرها کپی کنید. ، در حالی که دقیقاً سه باید به آرگومان تابع منتقل شود.

    نحو امضا همچنین به شما این امکان را می دهد که آرگومان های اختیاری را مشخص کنید و در صورت وجود آرگومان، مقادیر پیش فرض را مشخص کنید. به عنوان مثال، با تعیین "sub foo ($left, $right = 0)" آرگومان دوم اختیاری می شود و در صورت عدم وجود، مقدار 0 ارسال می شود. در عملیات انتساب می توانید عبارات دلخواه از جمله استفاده از متغیرهای دیگر را مشخص کنید. از لیست یا متغیرهای سراسری. تعیین یک هش یا آرایه به جای یک متغیر (به عنوان مثال، "sub foo ($left، @right)") اجازه می دهد یک یا چند آرگومان ارسال شود.

  • در توابع اعلام شده با استفاده از امضا، پشتیبانی از تخصیص پارامتر اختیاری از آرایه "@_" آزمایشی اعلام می شود و منجر به اخطار می شود (هشدار فقط در صورتی صادر می شود که @_ در توابع اعلام شده با استفاده از نحو جدید استفاده شود). به عنوان مثال، یک هشدار برای تابع نمایش داده می شود: use v5.36; sub f ($x, $y = 123) { بگویید "اولین آرگومان $_[0] است"; }
  • هنگام تعیین پراگما "use v5.36"، عملگر infix "isa" برای بررسی اینکه آیا یک شی نمونه ای از کلاس مشخص شده است یا یک کلاس مشتق شده از آن، تثبیت شده و در دسترس است. برای مثال: if( $obj isa Package::Name ) { … }
  • هنگام تعیین پراگما "use v5.36"، پردازش هشدار فعال می شود (حالت "استفاده از هشدارها" فعال می شود).
  • هنگام مشخص کردن پراگما "use v5.36"، پشتیبانی از نماد غیرمستقیم برای فراخوانی اشیاء ("ویژگی غیرمستقیم") غیرفعال است - روشی قدیمی برای فراخوانی اشیاء، که در آن به جای "->" از یک فاصله استفاده می شود ("روش $" به جای «$object-> $method(@param)» شی @param"). به عنوان مثال، به جای "my $cgi = CGI جدید" باید از "my $cgi = CGI->new" استفاده کنید.
  • هنگام مشخص کردن پراگما «use v5.36»، پشتیبانی از شبیه‌سازی آرایه‌ها و هش‌های چند بعدی در سبک پرل 4 («ویژگی چند بعدی») غیرفعال می‌شود و امکان ترجمه چند کلید را به یک آرایه میانی فراهم می‌کند (به عنوان مثال، « $hash{1, 2}”) به "$hash{join($;, 1, 2)}" تبدیل شد.
  • هنگام تعیین پراگما «use v5.36»، پشتیبانی از مکانیسم انشعاب آزمایشی («ویژگی سوئیچ»)، شبیه به سوئیچ و عبارات case، غیرفعال است (پرل از کلمات کلیدی داده شده و زمانی استفاده می کند). برای استفاده از این ویژگی، با شروع پرل 5.36، باید به صراحت "استفاده از ویژگی "سوئیچ" را مشخص کنید و اگر "نسخه استفاده" را مشخص کنید، دیگر به طور خودکار فعال نخواهد شد.
  • پشتیبانی از کلاس‌های کاراکتر اضافی در براکت‌های مربع درون عبارات منظم تثبیت شده است و به‌طور پیش‌فرض در دسترس است. این ویژگی به شما امکان می دهد با استفاده از قوانین پیشرفته برای تقاطع، حذف و اتحاد مجموعه کاراکترها مطابقت را انجام دهید. برای مثال، «[AZ - W]» - نویسه‌های A تا Z به استثنای W.
  • پشتیبانی از عملیات "(?"، "( )"، "{ }" و "[ ]" تا حدی تثبیت شده است و به طور پیش فرض در دسترس است؛ می توانید از نمادهای "" ""، """"، و غیره استفاده کنید. به عنوان مثال. , "qr"pat "".
  • فراخوانی تابع مرتب سازی بدون آرگومان ممنوع است که اکنون منجر به خطا می شود. @a = مرتب سازی @empty; # ادامه خواهد یافت @a = sort; # یک خطا چاپ خواهد شد @a = sort(); # یک خطا چاپ خواهد شد
  • یک پرچم خط فرمان جدید "-g" پیشنهاد شده است، که حالت بارگیری کل فایل را به عنوان یک کل، به جای خط به خط، فعال می کند. عملکرد پرچم مشابه علامت "-0777" است.
  • پشتیبانی از مشخصات یونیکد به نسخه 14.0 به روز شده است.
  • مدیریت فوری استثناهای نقطه شناور (SIGFPE) را مشابه سایر آلارم‌ها مانند SIGSEGV ارائه می‌کند، به شما این امکان را می‌دهد تا کنترل‌کننده‌های خود را برای SIGFPE از طریق $SIG{FPE} متصل کنید، برای مثال شماره خطی را که در آن مشکل رخ داده است را خروجی بگیرید.
  • نسخه های به روز شده ماژول های موجود در بسته اصلی.
  • بهینه سازی عملکرد اضافه شده است. امکان ذخیره کلیدهای هش بزرگ با کارایی بیشتر بدون استفاده از جداول رشته مشترک فراهم شده است. عملکرد ایجاد مقادیر اسکالر جدید به طور قابل توجهی بهبود یافته است، به عنوان مثال کد زیر اکنون 30٪ سریعتر اجرا می شود: $str = "A" x 64; برای (0..1_000_000) { @svs = split //, $str }
  • کد مفسر شروع به استفاده از برخی از ساختارهای تعریف شده در استاندارد C99 کرد. ساخت Perl اکنون به یک کامپایلر نیاز دارد که از C99 پشتیبانی کند. پشتیبانی از ساخت در نسخه های قدیمی MSVC++ (قبل از VC12) متوقف شده است. اضافه شدن پشتیبانی برای ساخت در Microsoft Visual Studio 2022 (MSVC++ 14.3).
  • پشتیبانی از پلتفرم های AT&T UWIN، DOS/DJGPP و Novell NetWare متوقف شده است.

منبع: opennet.ru

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