Lua 5.4 programlama dilinin piyasaya sürülmesi

Beş yıllık gelişimin ardından kullanılabilir serbest Lua 5.4, yerleşik bir dil olarak yaygın şekilde kullanılan (örneğin, yapılandırmayı tanımlamak veya uzantıları yazmak için) hızlı ve kompakt bir komut dosyası programlama dili. Lua yorumlayıcı kodu C dilinde yazılmıştır ve tarafından dağıtıldı MIT lisansı altında.

Lua, dilin ilişkisel dizileri ve genişletilebilir semantiğini kullanarak basit bir prosedür sözdizimini güçlü veri tanımlama yetenekleriyle birleştirir. Lua, dinamik yazmayı kullanarak dil yapılarını otomatik çöp toplama özelliğine sahip kayıt tabanlı bir sanal makinenin üzerinde çalışan bayt koduna dönüştürüyor. Yorumlayıcının kendisi, C ve C++ dillerindeki projelere kolaylıkla entegre edilebilecek bir kütüphane olarak tasarlanmıştır.

Ana yenilikler:

  • Çöp toplayıcının yeni bir çalışma modu uygulandı - "kuşakDaha önce mevcut olan artımlı çöp toplama modunu tamamlayan ". Yeni mod, yalnızca yakın zamanda oluşturulan nesneleri kapsayan, kısaltılmış bir taramanın daha sık çalıştırılmasını içerir. Tüm nesnelerin tam geçişi, yalnızca kısa bir geçişten sonra istenen bellek tüketiminin elde edilmesi mümkün olmadığında gerçekleştirilir. Bu yaklaşım, kısa süreliğine yaşayan çok sayıda nesneyi saklarken daha yüksek performans elde etmenize ve bellek tüketimini azaltmanıza olanak tanır.
  • “Const” özelliğiyle tanımlanan sabit değişkenleri tanımlama yeteneği eklendi. Bu tür değişkenler yalnızca bir kez atanabilir ve başlatıldıktan sonra değiştirilemez.
  • Değişkenler için destek eklendi "kapatılacak"close" özniteliği kullanılarak atanan ve sabit yerel değişkenlere benzeyen (const özniteliğiyle), değerin kapsamdan her çıktığında kapalı olması ("__close" yöntemi çağrılır) bakımından onlardan farklıdır, örneğin, bloğun normal tamamlanmasından sonra, bir hata oluştuğunda break/goto/return veya çıkış kullanarak geçiş yapın.
  • Tip "Kullanıcı bilgisiHerhangi bir C verisini Lua değişkenlerinde saklama olanağı sağlayan (bellekteki bir veri bloğunu temsil eder veya bir C işaretçisi içerir) artık birkaç değer içerebilir (birkaç metatabloya sahiptir).
  • Sözde rastgele sayılar üretmeye yönelik fonksiyonun yeni bir uygulaması sunulmaktadır - math.random.
  • İfadesi kullanılarak belirlenen bir uyarı sistemi eklendi uyarmak ve hatalardan farklı olarak programın daha sonraki yürütülmesini etkilemez.
  • İşlev bağımsız değişkenleri ve dönüş değerleri hakkında hata ayıklama bilgileri eklendi.
  • Döngülerdeki tam sayıların numaralandırılması için yeni bir anlambilim önerildi "için". Yineleme sayısı döngü başlamadan önce hesaplanır, bu da değişken taşmayı ve döngüyü önler. Başlangıç ​​değeri sınır değerinden büyükse bir hata görüntülenir.
  • ' işlevindestring.gmatchAramanın hangi konumda başlatılacağını belirleyen yeni bir isteğe bağlı bağımsız değişken olan 'init' eklendi (varsayılan olarak 1 karakterden).
  • Yeni özellikler eklendi ‘lua_resetthread' (iş parçacığını sıfırlar, tüm çağrı yığınını temizler ve tüm "kapatılacak" değişkenleri kapatır) ve 'coroutine.close' (eşyordamı ve ilişkili tüm "kapatılacak" değişkenleri kapatır).
  • Dizeleri sayılara dönüştürme işlevleri "string" kitaplığına taşındı.
  • Bellek bloğu boyutu azaltılırsa, bellek ayırma işlevine yapılan çağrılar artık başarısız olabilir.
  • ' işlevindedize.format' yeni format belirticisi '%p' için destek eklendi (lua_topointer tarafından döndürülen işaretçi).
  • Utf8 kütüphanesi destek sağlar karakter kodları 2^31'e kadar sayılarla.

Kaynak: opennet.ru

Yorum ekle