Lua 5.4 програмчлалын хэлийг гаргасан

Таван жилийн хөгжлийн дараа боломжтой суллах Lua 5.4, суулгагдсан хэл болгон өргөн хэрэглэгддэг хурдан бөгөөд авсаархан скрипт програмчлалын хэл (жишээлбэл, тохиргоог тодорхойлох эсвэл өргөтгөл бичихэд зориулагдсан). Lua орчуулагчийн код нь C болон хэл дээр бичигдсэн тараасан MIT лицензийн дагуу.

Луа нь энгийн процедурын синтаксийг ассоциатив массив болон хэлний өргөтгөх семантик ашиглан өгөгдөл дүрслэх хүчирхэг чадвартай хослуулсан. Луа динамик бичих аргыг ашигладаг бөгөөд хэлний бүтцийг автоматаар хог цуглуулдаг бүртгэлд суурилсан виртуал машин дээр ажилладаг байт код болгон хувиргадаг. Орчуулагч нь өөрөө C болон C++ хэл дээрх төслүүдэд хялбархан нэгтгэгдэх номын сан хэлбэрээр бүтээгдсэн.

Үндсэн инноваци:

  • Хог цуглуулагчийн ажиллах шинэ горим хэрэгжиж эхэллээ - "үеийн", энэ нь өмнө нь ашиглах боломжтой өсөн нэмэгдэж буй хог цуглуулах горимыг нөхсөн. Шинэ горим нь зөвхөн саяхан үүсгэсэн объектуудыг хамарсан богиносгосон мөлхөгчийг илүү олон удаа ажиллуулдаг. Богино аялсны дараа хүссэн санах ойн хэрэглээг хангах боломжгүй тохиолдолд л бүх объектыг бүрэн тойрон эргэлдэж болно. Энэ арга нь богино хугацаанд амьдардаг олон тооны объектыг хадгалахад илүү өндөр гүйцэтгэлд хүрч, санах ойн зарцуулалтыг багасгах боломжийг олгодог.
  • “const” атрибутаар тодорхойлогдсон тогтмол хувьсагчдыг тодорхойлох чадварыг нэмсэн. Ийм хувьсагчийг зөвхөн нэг удаа оноож болох бөгөөд нэгэнт эхлүүлсэн бол өөрчлөх боломжгүй.
  • Хувьсагчдын дэмжлэгийг нэмсэн "хаагдах"хүрээнээс гарах бүрт утга нь хаагддаг ("__close" аргыг дууддаг) гэдгээрээ тэдгээрээс ялгаатай нь "хаах" атрибутыг ашиглан томилогдсон бөгөөд тогтмол локал хувьсагчтай (const атрибуттай) төстэй, жишээ нь, Блокыг хэвийн хийж дууссаны дараа алдаа гарвал break/goto/return эсвэл гарах ашиглан шилжинэ.
  • Бичих "хэрэглэгчийн өгөгдөл", Lua хувьсагчид (санах ой дахь өгөгдлийн блокыг төлөөлдөг эсвэл C заагч агуулсан) ямар ч C өгөгдлийг хадгалах боломжийг олгодог) одоо хэд хэдэн утгыг агуулж болно (хэд хэдэн мета хүснэгттэй).
  • Хуурамч санамсаргүй тоо үүсгэх функцийн шинэ хэрэгжилтийг танилцуулж байна - math.random.
  • Илэрхийлэл ашиглан тодорхойлсон анхааруулах системийг нэмсэн анхааруулж байна мөн алдаанаас ялгаатай нь програмын цаашдын гүйцэтгэлд нөлөөлөхгүй.
  • Функцийн аргументууд болон буцах утгуудын талаар дибаг хийх мэдээллийг нэмсэн.
  • Бүхэл тоог гогцоонд тоолох шинэ семантикийг санал болгов "нь". Давталтын тоог давталт эхлэхээс өмнө тооцдог бөгөөд энэ нь хувьсагчийн халих, давтахаас зайлсхийдэг. Хэрэв анхны утга нь хязгаарласан утгаас их байвал алдаа гарч ирнэ.
  • функцэд 'string.gmatchХайлтыг ямар байрлалаас эхлүүлэхийг тодорхойлдог шинэ нэмэлт 'init' аргумент нэмсэн (анхдагчаар 1 тэмдэгтээс).
  • Шинэ боломжууд нэмэгдсэн 'lua_resetthread' (утасыг дахин тохируулж, дуудлагын стекийг бүхэлд нь цэвэрлэж, бүх "хаагдах" хувьсагчдыг хаадаг) болон 'coroutine.close' (корутин болон холбогдох бүх "хаагдах" хувьсагчдыг хаадаг).
  • Мөрүүдийг тоо болгон хувиргах функцуудыг "string" номын сан руу шилжүүлсэн.
  • Санах ойн блокийн хэмжээ багассан тохиолдолд санах ой хуваарилах функцийн дуудлага амжилтгүй болж магадгүй юм.
  • функцэд 'string.format' '%p' шинэ формат тодорхойлогчийн дэмжлэгийг нэмсэн (lua_topointer-ийн буцаасан заагч).
  • utf8 номын сан нь дэмжлэг үзүүлдэг тэмдэгтийн кодууд 2^31 хүртэлх тоотой.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх