لوا 5.4

پس از دو سال توسعه، در 29 ژوئن، نسخه جدیدی از زبان برنامه نویسی Lua، 5.4، بی سر و صدا و بی سر و صدا منتشر شد.

Lua یک زبان برنامه نویسی ساده و تفسیر شده است که می تواند به راحتی در برنامه ها ادغام شود. با توجه به این ویژگی ها، Lua به طور گسترده به عنوان زبانی برای گسترش یا توصیف پیکربندی برنامه ها (به ویژه بازی های رایانه ای) استفاده می شود. Lua تحت مجوز MIT توزیع می شود.

نسخه قبلی (5.3.5) در 10 جولای 2018 منتشر شد.

تغییرات اصلی در نسخه جدید

  • زباله جمع کن نسل جدید در تابع collectgarbage، پارامترهای setpause و setstepmul منسوخ شده اند و به جای آن پارامتر افزایشی توصیه می شود.

  • یک عملکرد جدید برای صدور هشدارهای هشدار با قابلیت غیرفعال کردن نمایش آنها.

  • پیاده سازی جدید math.random از الگوریتم xoshiro256** به جای libc ارائه شده استفاده می کند و مولد را با یک عدد تصادفی مقداردهی اولیه می کند.

  • متغیرهای ثابت؛

  • متغیرهای "to-be-closed" ثابت های محلی هستند که روش __close هنگام خروج از محدوده برای آنها اجرا می شود.

  • تابع جدید lua_resetthread - پشته را پاک می کند و همه متغیرهای "بسته" را می بندد.

  • تابع جدید coroutine.close - کوروتین مشخص شده و همه متغیرهای "بسته" آن را می بندد.

  • داده‌های کاربر می‌تواند شامل مجموعه‌ای از مقادیر باشد که توسط فهرست به آن‌ها دسترسی پیدا می‌کند. توابع جدیدی برای کار با آنها معرفی شده اند: lua_newuserdatauv، lua_setiuservalue و lua_getiuservalue.

  • اطلاعات اشکال زدایی در مورد پارامترها و مقادیر بازگشتی توابع در دسترس است.

  • اگر یک شاخص عدد صحیح در یک حلقه for استفاده شود و سرریز رخ دهد، حلقه به پایان می رسد.

  • یک آرگومان اختیاری به تابع string.gmatch اضافه شده است که مقدار افست را از ابتدای رشته برای جستجوی منطبقات مشخص می کند.

  • توابع برای تبدیل ضمنی رشته ها به اعداد به کتابخانه رشته منتقل شده اند و رفتار آنها تغییر کرده است. به عنوان مثال، نتیجه عملیات "1" + "2" اکنون یک عدد صحیح است نه یک عدد ممیز شناور.

  • در عملکرد تخصیص حافظه، ممکن است هنگام کاهش یک بلوک حافظه خطایی رخ دهد.

  • کاراکتر قالب‌بندی جدید در تابع string.format - %p (برای نشانگرها).

  • کتابخانه utf8 کدهای کاراکتر تا 2³¹ را می پذیرد (اگر یک پرچم خاص مشخص شده باشد، بدون آن فقط کدهای تا 0x10FFFF مجاز هستند و جایگزین ها مجاز نیستند).

  • ثابت های عدد صحیح خارج از محدوده مقادیر به اعداد شناور تبدیل می شوند (قبلاً برش بیت اتفاق افتاده است).

  • متامتد __lt دیگر برای تقلید از روش __le استفاده نمی شود؛ در صورت لزوم، متمتد __le باید به صراحت مشخص شود.

  • اگر برچسبی با همان نام قبلاً در محدوده فعلی وجود داشته باشد (حتی اگر در محدوده بیرونی تعریف شده باشد) نمی توان یک برچسب برای دستور goto ایجاد کرد.

  • متام متد __gc می تواند فراتر از یک تابع باشد. اگر تلاش برای فراخوانی یک روش با شکست مواجه شد، یک هشدار چاپ خواهد شد.

  • تابع print برای هر آرگومان tostring را فراخوانی نمی کند، بلکه از تبدیل های داخلی خود استفاده می کند.

  • تابع io.lines به جای یک مقدار، مجموعه ای از چهار مقدار را برمی گرداند؛ برای شبیه سازی رفتار قدیمی، اگر آن را به عنوان پارامتر به فراخوانی تابع دیگری ارسال می کنید، آن را در پرانتز قرار دهید.

منبع: linux.org.ru

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