Lua 5.5 proqramlaşdırma dili mövcuddur

Beş illik inkişafdan sonra Lua 5.5-in buraxılışı, tez və kompakt skript proqramlaşdırma dili, geniş yayılmış bir strukturlasma dili və genişləndirmələr yazmaq üçün mövcuddur. Lua'nın interpretator kodu C dilində yazılmışdır və MIT lisenziyasına görə yayılır.

Lua, prosedur sintaksisini sadəliklə birləşdirir, eyni zamanda assosiativ massivlər və genişlənə bilən dil semantikası vasitəsilə məlumatların təsvirini təmin edir. Lua-da dinamik tipləşdirmə istifadə olunur və dil strukturları, avtomatik tullantı toplayan rejimlə işləyən bir qeyd virtual maşında icra olunan bayt koduna çevrilir. Interpretator, C və C++ dillərində layihələrə inteqrasiya edilə bilən bir kitabxana kimi hazırlanmışdır.

Əsas yeniliklər:

  • Tullantı toplayıcı əməliyyatlarının əksər hissəsi artımlı moddan istifadə olunaraq həyata keçirilir. Bu vəziyyətdə tullantı toplayıcı dövrü müstəqil addımlara bölünür və proqramın icrası ilə dəyişir, bu da yaddaşda çox sayda obyekt olan tətbiqlərin uzun müddətli dayanmalarını aradan qaldırmağa imkan tanıyır.
  • Eyni tip verilənlər üçün massivlərin 60% daha az yaddaş tələb edən kompakt bir implementasiyası təklif edilmişdir (bu qənaət, tip məlumatlarının hər bir element üçün deyil, elementlər qrupuna saxlanılması sayəsində əldə edilir).
  • İndi kod bloklarının istənilən yerində “global” açar sözü ilə qlobal dəyişənlərin açıq şəkildə elan olunma imkanı əlavə edildi. Kod blokunda “global” açar sözü ilə ifadələr göstərildikdə, bütün dəyişənlər mütləq açıq şəkildə elan edilməlidir. “Global” elan olunmadıqda, “global *” ifadəsi istifadəyə verilir ki, bu da köhnə davranışı saxlayır və bütün dəyişənlər qlobal kimi qəbul edilir. Həmçinin, bütün qeyri-müəyyən qlobal dəyişənlərin yalnız oxumaq üçün əlçatan olduğu “global<const> *” ifadəsi əlavə olunmuşdur. X = 1 — Tamam, X — qlobal dəyişkəndir, köhnə davranış. do global Y — Y dəyişkəninin qlobal olaraq elan edilməsi, blokdakı bütün digər dəyişkənlər açıq şəkildə eland olunmalıdır; Y = 1 — Tamam, Y əvvəlcə müəyyən edilmişdir; X = 1 — Səhv, X dəyişkəni müəyyən olunmamışdır; end; X = 2 — Tamam, global blokdan kənarda köhnə davranış fərqlidir.
  • İndi “for” döngələrində göstərilən idarə edən dəyişənlər yalnız oxumaq üçün əlçatandır və dövrün içində dəyişdirilə bilməz. Məsələn, “for i = 1, 5 do” döngəsində elan olunmuş i dəyişəni dövrün daxilində dəyişdirilə bilməz.
  • Nömrələri print funksiyası ilə çıxararkən, string-dən orijinal göstərişə düzgün qarşı çevrilməsi üçün kifayət qədər rəqəm göstərilir.
  • Masaq tərtibatçılarının iç içə olma səviyyələrinin icazə verilmiş sayı artırıldı.
  • Boş masa yaratmaq və göstərilən element sayı üçün yaddaşı əvvəlcədən ayırmaq üçün table.create(nseq, nrec) funksiyası əlavə edildi.
  • utf8.offset funksiyasında simvolun başlanğıcına qədər olan bayt offsetindən əlavə, simvolun sonunun mövqeyi də təmin edilir.
  • Lua tərəfindən idarə olunmayan yaddaşda yerləşdirilən xarici sətirlərin yaradılmasına dəstək əlavə edildi.
  • luaL_openselectedlibs funksiyası seçilmiş kitabxananı yükləmək üçün əlavə olundu, həmçinin lua_newstate funksiyası üçün seed şablonu yaradan luaL_makeseed funksiyası əlavə edildi.
  • lua.c-da ‘readline’ kitabxanasının dinamik yüklənməsi təmin edildi (əgər sistemdə kitabxana varsa - yüklənir və sətir redaktə funksiyaları istifadəyə verilmiş olur).
  • Öncədən tərtib olunmuş bayt kodunu yükləyərkən yaddaşı qənaət etməyə yönəlmiş optimizasiya daxil edildi - Lua indi bəzi daxili strukturlar üzrə təkrar istifadə edilən yaddaşı təkrarlanan bayt kodunu yüklədikdə yaradılan nüsxələr olmadan istifadə edə bilir.
  • Dump və undump əməliyyatlarında bütün sətirlərin təkrar istifadəsi təmin edildi.
  • Yardımçı tamponlarda final sətiri yaradılan zaman tamponların yenidən istifadəsi (yeni tampona kopyalanmadan) təmin edildi.

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster