Lua 5.4 proqramlaşdırma dilinin buraxılışı

Beş illik inkişafdan sonra mövcuddur buraxın Lua 5.4, daxili dil kimi geniş istifadə olunan sürətli və yığcam skript proqramlaşdırma dili (məsələn, konfiqurasiyanın müəyyən edilməsi və ya genişlənmələrin yazılması üçün). Lua tərcüməçi kodu C və dilində yazılmışdır yayılır MIT lisenziyası altında.

Lua assosiativ massivlərdən və dilin genişləndirilə bilən semantikasından istifadə etməklə sadə prosedur sintaksisini güclü məlumat təsviri imkanları ilə birləşdirir. Lua dinamik yazmadan istifadə edir, dil konstruksiyalarını avtomatik zibil yığımı ilə registr əsaslı virtual maşının üstündə işləyən baytkoda çevirir. Tərcüməçinin özü C və C++ dillərində layihələrə asanlıqla inteqrasiya oluna bilən kitabxana kimi nəzərdə tutulmuşdur.

Əsas yeniliklər:

  • Zibilyığan yeni iş rejimi tətbiq edilib - “nəsil", bu, əvvəllər mövcud artımlı zibil toplama rejimini tamamlayır. Yeni rejim yalnız bu yaxınlarda yaradılmış obyektləri əhatə edən qısaldılmış taramanın daha tez-tez həyata keçirilməsini nəzərdə tutur. Bütün obyektlərin tam keçidi yalnız qısa bir keçiddən sonra istədiyiniz yaddaş istehlakına nail olmaq mümkün olmadıqda həyata keçirilir. Bu yanaşma qısa müddət ərzində yaşayan çoxlu sayda obyektləri saxlayarkən daha yüksək performansa nail olmağa və yaddaş istehlakını azaltmağa imkan verir.
  • “const” atributu ilə müəyyən edilmiş sabit dəyişənləri təyin etmək imkanı əlavə edildi. Belə dəyişənlər yalnız bir dəfə təyin edilə bilər və bir dəfə işə salındıqdan sonra dəyişdirilə bilməz.
  • Dəyişənlər üçün əlavə dəstək "bağlanacaq"yaxın" atributundan istifadə etməklə təyin edilən və daimi yerli dəyişənlərə (const atributu ilə) bənzəyir, onlardan fərqli olaraq, əhatə dairəsini tərk etdikdə dəyərin bağlanması ("__close" metodu çağırılır), məsələn, blokun normal tamamlanmasından sonra, xəta baş verdikdə break/goto/return və ya çıxışdan istifadə edərək keçid.
  • yazın "istifadəçi məlumatları"Lua dəyişənlərində hər hansı bir C məlumatını saxlamaq imkanı verən (yaddaşda məlumat blokunu təmsil edir və ya C göstəricisini ehtiva edir) indi bir neçə dəyəri ehtiva edə bilər (bir neçə metatables var).
  • Yalançı təsadüfi ədədlərin yaradılması funksiyasının yeni tətbiqi təqdim olunur - math.random.
  • İfadədən istifadə edərək müəyyən edilən xəbərdarlıq sistemi əlavə edildi xəbərdarlıq və səhvlərdən fərqli olaraq, proqramın sonrakı icrasına təsir göstərmir.
  • Funksiya arqumentləri və qaytarılan dəyərlər haqqında sazlama məlumatı əlavə edildi.
  • Döngələrdə tam ədədlərin sadalanması üçün yeni semantika təklif edilmişdir.üçün". İterasiyaların sayı döngə başlamazdan əvvəl hesablanır ki, bu da dəyişənlərin daşması və dövrələnməsinin qarşısını alır. İlkin dəyər məhdudlaşdırıcı dəyərdən böyükdürsə, xəta göstərilir.
  • funksiyasındastring.gmatch' axtarışa hansı mövqedən başlamağı təyin edən yeni isteğe bağlı 'init' arqumenti əlavə etdi (standart olaraq 1 simvoldan).
  • Yeni funksiyalar əlavə edildi 'lua_resetthread' (mövzu sıfırlayır, bütün zəng yığınını təmizləyir və bütün "bağlanacaq" dəyişənləri bağlayır) və 'coroutine.close' (korutini və bütün əlaqəli "bağlanacaq" dəyişənləri bağlayır).
  • Sətirləri rəqəmlərə çevirmək üçün funksiyalar "string" kitabxanasına köçürüldü.
  • Yaddaş blokunun ölçüsü azalarsa, yaddaşın ayrılması funksiyasına edilən zənglər indi uğursuz ola bilər.
  • funksiyasındastring.format' yeni format təyinedicisi '%p' üçün dəstək əlavə edildi (göstərici lua_topointer tərəfindən qaytarıldı).
  • Utf8 kitabxanası dəstək verir simvol kodları 2^31-ə qədər rəqəmlərlə.

Mənbə: opennet.ru

Добавить комментарий