Пять лет ожидания. Вышла Lua 5.5 — с защитой от опечаток и умным сборщиком мусора
NewsMakerLua 5.5 экономит 60% памяти и вводит обязательные глобальные переменные.
Спустя пять лет разработки команда из Папского католического университета Рио-де-Жанейро представила Lua 5.5 — новую версию популярного встраиваемого языка сценариев. Код интерпретатора написан на языке Си и распространяется под лицензией MIT.
Главное нововведение касается работы с глобальными переменными. Слово
Ещё одно важное изменение затрагивает циклы for: управляющие переменные теперь доступны только для чтения. Попытка изменить счётчик внутри цикла приведёт к ошибке, что делает поведение кода более предсказуемым.
Серьёзная работа проделана над оптимизацией памяти. Большие массивы с однотипными данными теперь занимают примерно на 60% меньше места. Экономия достигается благодаря тому, что информация о типе сохраняется не для каждого элемента отдельно, а для группы элементов. Сборщик мусора тоже стал умнее: в генерационном режиме полный цикл сборки теперь выполняется инкрементально, разбиваясь на отдельные шаги, чередующиеся с выполнением программы. Это позволяет избавиться от длительных пауз в приложениях с большим числом объектов в памяти.
Спустя пять лет разработки команда из Папского католического университета Рио-де-Жанейро представила Lua 5.5 — новую версию популярного встраиваемого языка сценариев. Код интерпретатора написан на языке Си и распространяется под лицензией MIT.
Главное нововведение касается работы с глобальными переменными. Слово
global теперь стало зарезервированным ключевым словом, а программистам предстоит явно объявлять глобальные переменные. Раньше любое присваивание неизвестному имени автоматически создавало глобальную переменную, что приводило к трудноуловимым ошибкам из-за опечаток. Теперь можно выбирать режим работы: использовать global * для совместимости со старым поведением, global * чтобы сделать все необъявленные переменные доступными только для чтения, или явно объявлять каждую глобальную переменную через global X. Это изменение делает код безопаснее и понятнее. Ещё одно важное изменение затрагивает циклы for: управляющие переменные теперь доступны только для чтения. Попытка изменить счётчик внутри цикла приведёт к ошибке, что делает поведение кода более предсказуемым.
Серьёзная работа проделана над оптимизацией памяти. Большие массивы с однотипными данными теперь занимают примерно на 60% меньше места. Экономия достигается благодаря тому, что информация о типе сохраняется не для каждого элемента отдельно, а для группы элементов. Сборщик мусора тоже стал умнее: в генерационном режиме полный цикл сборки теперь выполняется инкрементально, разбиваясь на отдельные шаги, чередующиеся с выполнением программы. Это позволяет избавиться от длительных пауз в приложениях с большим числом объектов в памяти.