انتشار زبان برنامه نویسی Lua 5.4

پس از پنج سال توسعه در دسترس رهایی لوا 5.4، یک زبان برنامه نویسی سریع و فشرده که به طور گسترده به عنوان یک زبان تعبیه شده استفاده می شود (مثلاً برای تعریف پیکربندی یا نوشتن پسوندها). کد مفسر Lua به زبان C و نوشته شده است توزیع شده توسط تحت مجوز MIT

Lua از طریق استفاده از آرایه‌های انجمنی و معنایی توسعه‌پذیر زبان، یک نحو رویه‌ای ساده را با قابلیت‌های قدرتمند توصیف داده‌ها ترکیب می‌کند. Lua از تایپ پویا استفاده می‌کند و ساختارهای زبان را به بایت کد تبدیل می‌کند که در بالای یک ماشین مجازی مبتنی بر ثبت با جمع‌آوری خودکار زباله اجرا می‌شود. خود مفسر به عنوان یک کتابخانه طراحی شده است که می تواند به راحتی در پروژه های زبان های C و C++ ادغام شود.

اصلی نوآوری ها:

  • حالت جدیدی از کار جمع کننده زباله اجرا شده است - "نسلی"، که مکمل حالت جمع آوری زباله افزایشی قبلا موجود بود. حالت جدید شامل اجرای مکرر خزیدن کوتاه شده است که فقط اشیاء ایجاد شده اخیر را پوشش می دهد. پیمایش کامل همه اشیا تنها در صورتی انجام می شود که پس از یک پیمایش کوتاه، امکان دستیابی به میزان مصرف حافظه مورد نظر وجود نداشته باشد. این رویکرد به شما امکان می دهد هنگام ذخیره تعداد زیادی از اشیاء که برای مدت کوتاهی زنده هستند، به عملکرد بالاتری دست یافته و مصرف حافظه را کاهش دهید.
  • قابلیت تعریف متغیرهای ثابت تعریف شده با ویژگی "const" اضافه شده است. چنین متغیرهایی را فقط می توان یک بار اختصاص داد و پس از مقدار دهی اولیه، نمی توان آنها را تغییر داد.
  • اضافه شدن پشتیبانی از متغیرها "بسته خواهد شد"، که با استفاده از ویژگی "close" تخصیص داده می شوند و شبیه متغیرهای محلی ثابت (با ویژگی const) هستند، که با آنها تفاوت دارند زیرا هر زمان که از محدوده خارج می شود، مقدار بسته می شود (روش "__close" فراخوانی می شود. پس از تکمیل عادی بلوک، انتقال با استفاده از break/goto/return یا خروج زمانی که خطا رخ می دهد.
  • تایپ کنید "داده های کاربر"، که توانایی ذخیره هر داده C را در متغیرهای Lua فراهم می کند (نماینده یک بلوک از داده ها در حافظه یا حاوی یک نشانگر C است)، اکنون می تواند حاوی چندین مقدار باشد (چند متاتابل دارد).
  • اجرای جدیدی از تابع برای تولید اعداد شبه تصادفی ارائه شده است - math.random.
  • یک سیستم هشدار اضافه شده است که با استفاده از عبارت تعیین می شود هشدار دادن و بر خلاف خطاها بر اجرای بیشتر برنامه تاثیری ندارد.
  • اطلاعات اشکال زدایی در مورد آرگومان های تابع و مقادیر بازگشتی اضافه شد.
  • یک معناشناسی جدید برای شمارش اعداد صحیح در حلقه ها پیشنهاد شده است.برای". تعداد تکرارها قبل از شروع حلقه محاسبه می شود که از سرریز و حلقه شدن متغیر جلوگیری می کند. اگر مقدار اولیه بیشتر از مقدار محدود باشد، یک خطا نمایش داده می شود.
  • در عمل 'string.gmatchیک آرگومان اختیاری جدید 'init' اضافه کرد که تعیین می کند جستجو در چه موقعیتی شروع شود (به طور پیش فرض از 1 کاراکتر).
  • ویژگی های جدید اضافه شدlua_resetthread' (رشته را بازنشانی می کند، کل پشته تماس را پاک می کند و همه متغیرهای "برای بسته شدن" را می بندد) و "coroutine.close' (coroutine و همه متغیرهای "to-be-closed" مرتبط را می بندد).
  • توابع تبدیل رشته ها به اعداد به کتابخانه "رشته" منتقل شده اند.
  • اگر اندازه بلوک حافظه کاهش یابد، ممکن است تماس با عملکرد تخصیص حافظه با شکست مواجه شود.
  • در عمل 'string.format' پشتیبانی از مشخص کننده فرمت جدید '%p' (نشانگر بازگشتی توسط lua_topointer) را اضافه کرد.
  • کتابخانه utf8 پشتیبانی می کند کدهای کاراکتر با اعداد تا 2^31.

منبع: opennet.ru

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