Релиз языка программирования Lua 5.3

После трёх лет разработки доступен релиз Lua 5.3, быстрого и компактного скриптового языка программирования, получившего большое распространения в роли встраиваемого в других проекты языка сценариев (например, для определения конфигурации или для написания расширений). Код интерпретатора Lua написан на языке Си и распространяется под лицензией MIT. Lua комбинирует простой процедурный синтаксис с мощными возможностями описания данных через использование ассоциативных массивов и расширяемой семантики языка. В Lua используется динамическая типизация, языковые конструкции преобразуются в байткод, который выполняется поверх регистровой виртуальной машины c автоматическим сборщиком мусора. Сам интерпретатор оформлен в виде библиотеки, легко интегрируемой в проекты на языках Си и Си++.

Основные новшества:

Реализация целочисленного типа «integer». Если ранее тип «number», обеспечивал хранение значений с плавающей точкой (в прошлых выпусках Lua для чисел использовалось только представление с плавающей точкой), то теперь внутренние представления чисел разделены на «integer» и «float». Так как Lua является языком с динамической типизацией, определение типа и преобразование целых и вещественных чисел осуществляется автоматически. При необходимости явного определения константы с плавающей точкой следует явно указывать ».0»; Возможность использования 32-разрядных числовых значений. По умолчанию числа хранятся в 64-разрядных переменных, но интерпретатор теперь можно собрать с поддержкой 32-разрядных чисел; Поддержка битовых операторов. Доступны новые операторы «band» (&), «bor» (|), «bxor» (~), «bnot», «shl» (<<) и "shr" (>>); Поддержка UTF-8 и набора библиотечных функций для манипуляции данными в этом формате (utf8.char, utf8.codes, utf8.codepoint, utf8.len, utf8.offset); Появление функций для упаковки и распаковки значений (форматирование и разбор строк): string.pack, string.unpack и string.packsize; В функцию string.dump добавлена опция strip — «string.dump (function [, strip])» для получения бинарного представления функции без отладочных данных; В библиотеку Table и итератор ipairs добавлена поддержка метаметодов; В библиотеку Table добавлена функция table.move для перемещения элементов из одной таблицы в другую; Упрощён API для определения продолжений (continuation function) на языке Си; В C API представлены новые функции: lua_geti, lua_seti, lua_isyieldable, lua_numbertointeger, lua_rotate, lua_stringtonumber; Обособленный интерпретатор Lua теперь может использоваться в качестве калькулятора, без необходимости указания префикса »=».

© OpenNet