LINUX.ORG.RU

Вышел Lua 5.3

 ,


2

8

Незаметно и внезапно вышла новая версия встраиваемого языка программирования Lua.

Значимые изменения:

  • Появился целочисленный тип (64-битный по умолчанию). До этого был тип number, хранящийся как число с плавающей точкой. При компиляции можно задать размер в 32 бита.
  • Битовые операции.
  • Базовая поддержка UTF-8.
  • Функции для сериализации данных в бинарные строки (похожа на python struct).
  • Удалён режим сборки мусора на основе поколений. Это была экспериментальная возможность в версии 5.2.

>>> Подробности

★★★★★

Проверено: fallout4all ()
Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от Stil

с использованием метатаблиц и библиотекой penlight - во многом перекрывает функционал js

makoven ★★★★★
()

Появился целочисленный тип (64-битный по умолчанию).

Базовая поддержка UTF-8.

И вот спустя 22 года разработки Lua перешел из категории «говно» в категорию «можно использовать».

Слоупоки.

Deleted
()
Ответ на: комментарий от anonymous

Еще была новость, что в новых версиях NetBSD собирались на нем модули ядра писать.

Модули ядра без целочисленной арифметики?

Deleted
()
Ответ на: комментарий от AVL2

целочисленный тип для применений луа не слишком актуален.

Целочисленный тип актуален всегда. Что двигало людьми, которые спроектировали в целом хороший язык с такой дырой дизайна — большая загадка.

Deleted
()
Ответ на: комментарий от Deleted

Не удивлюсь, если его пилит один чел с редкой помощью другого. Короче, поэтому и «слоу». Надо было луа метить на замену башу :)

menangen ★★★★★
()
Ответ на: комментарий от Deleted

Это высокоуровневый язык. Ты же в тетрадочке не пишешь int затраты на метро = 28р, float затраты на пиво 56.70. Итого хрен знает, типы не совпадают...

Изначально ставилась задача максимально упростить программирование, оставив низкоуровневые вещи для сишечки.

AVL2 ★★★★★
()
Ответ на: комментарий от mva

Ну тащемто функция print изначально не для бинарных данных. Ты еще пожалуйста, что терминал мусором покроется от такого вызова.

Бинарные данные, это загрузить, обработать и выгрузить. И это все работало.

AVL2 ★★★★★
()
Ответ на: комментарий от CYB3R

Ну, веб-сервер на луе, это несурьезно. Апач же есть с mod_lua. Nginx лично мне не нравится, но это вариант.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Это высокоуровневый язык. Ты же в тетрадочке не пишешь int затраты на метро = 28р, float затраты на пиво 56.70. Итого хрен знает, типы не совпадают...

Если это высокоуровневый язык, как мне на нём посчитать дебет с кредитом? На флоатах? У-ха-ха!

На интах можно эмулировать арифметику произвольной точности, это универсальная абстракция для рассчётов. А чтобы это делать на флоатах, сначала придётся на флоатах проэмулировать инты. facepalm.jpg

Изначально ставилась задача максимально упростить программирование, оставив низкоуровневые вещи для сишечки.

Каждый раз, когда кто-то думает, что может «оставить низкоуровневые вещи для сишечки» и при этом не дать прикладным программистам адекватных абстракций, и получается... Lua.

Deleted
()
Ответ на: комментарий от AVL2

В идеале конечно прямо в язык должна быть встроена поддержка типов а ля libgmp или аналогичных. Но не будем требовать столь многого, уже то, что появились инты, — гигантский шаг к ВЫСОКОУРОВНЕВОСТИ, лол. Теперь на этом языке можно проводить рассчеты, а не просто складывать пиво и билет на метро.

Deleted
()
Ответ на: комментарий от Deleted

На интах можно эмулировать арифметику произвольной точности, это универсальная абстракция для рассчётов. А чтобы это делать на флоатах, сначала придётся на флоатах проэмулировать инты.

Не надо разводить панику, The number type represents real (double-precision floating-point) numbers. Lua has no integer type, as it does not need it. There is a widespread misconception about floating-point arithmetic errors and some people fear that even a simple increment can go weird with floating-point numbers. The fact is that, when you use a double to represent an integer, there is no rounding error at all (unless the number is greater than 100,000,000,000,000). Specifically, a Lua number can represent any long integer without rounding problems. Moreover, most modern CPUs do floating-point arithmetic as fast as (or even faster than) integer arithmetic.

It is easy to compile Lua so that it uses another type for numbers, such as longs or single-precision floats. This is particularly useful for platforms without hardware support for floating point. See the distribution for detailed instructions.

We can write numeric constants with an optional decimal part, plus an optional decimal exponent. Examples of valid numeric constants are:

4 0.4 4.57e-3 0.3e12 5e+20

AVL2 ★★★★★
()
Ответ на: комментарий от Deleted

Луа тем и отличается от большинства ЯП, что в нем есть только то, что нужно. И ничего больше.

Numeric Lua is a numerical package for the Lua programming language. It includes support for complex numbers, multidimensional matrices, random number generation, and special functions. Most of the routines are simple wrappers for stable and well known libraries from Netlib.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Не надо разводить панику

Если задача поиграться, то действительно не надо. А если задача «посчитать что-либо», и программисту дали флоаты, то надо.

Мне вот в реальной жизни, например, гораздо чаще нужны «инты с NaN», чем флоаты. И поскольку их ни CPU, ни распространённые ЯП не поддерживают, использую самописную библиотеку.

Я так понимаю, вы и в самом деле предлагаете эмулировать на флоатах инты, чтобы потом на них писать реальные алгоритмы для рассчётов.

Странная какая-то высокоуровневость, да.

Deleted
()
Ответ на: комментарий от Deleted

Да не нужно это. Для общеупотребительных вещей хватает встроенного типа, на чем бы он не был. А если нужно что-то другое, быстрое, экономичное или комплексные числа - есть тонкий интерфейс в си и куча либ на том же СИ, в которых есть все нужное. Модуль пишется за минуты.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Луа тем и отличается от большинства ЯП, что в нем есть только то, что нужно. И ничего больше.

Опять-таки в реальном мире нужны языки, в которых «есть то, что не нужно», а языки, в которых «есть только то, что нужно», никому не нужны.

Ну как встраиваемый ЯП для игрового движка сойдёт, да. Игровые скрипты на чем только не писали, Lua тут совсем не худший вариант, скорее даже лучший.

Deleted
()
Ответ на: комментарий от AVL2

Да не нужно это. Для общеупотребительных вещей хватает встроенного типа, на чем бы он не был. А если нужно что-то другое, быстрое, экономичное или комплексные числа - есть тонкий интерфейс в си и куча либ на том же СИ, в которых есть все нужное. Модуль пишется за минуты.

Вот кстати вопрос, насколько они интегрированы с ЯП?

Я смогу над типом данных из модуля сделать a * b + c * b средствами ЯП, или надо будет явно вызывать функции?

Deleted
()
Ответ на: комментарий от Deleted

распространённые ЯП не поддерживают, использую самописную библиотеку.

В перл сто лет в обед.

Deleted
()
Ответ на: комментарий от Deleted

В перл сто лет в обед.

В перл есть всё! (c)

Deleted
()
Ответ на: комментарий от Deleted

Каждый раз, когда кто-то думает, что может «оставить низкоуровневые вещи для сишечки» и при этом не дать прикладным программистам адекватных абстракций, и получается... Lua.

Каждый раз когда пишут очередной «высокоуровневый» bloat-язык, навроде руби с питоном, сообщество переписывает на его многочисленных абстракциях все «низкоуровневые вещи». Которые в результате становятся непереносимы за пределы языка. А в аду устанавливается новый котел.

При этом, как правило его ffi получается настолько переусложненным, что писать сишные биндинги могут только специально обученные старцы

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 2)
Ответ на: комментарий от makoven

Это другая крайность. Плохо то, что нет золотой середины. Или наколенная поделка с кучей багов (дизайна, в том числе), или монстр Руби. При том что я знаю и люблю Руби, это действительно переусложнённый монстр с неясными перспективами.

Впрочем, с Lua я знакомился в его ипостаси 5.1. Возможно, 5.3 стал немного ближе к золотой середине.

Deleted
()
Ответ на: комментарий от redhat

Гентушники, спокойно! Нам даже 5.2 в ближайшее время не светит.

redhat (12.01.2015 23:00:28)

Шаблон затрещал, но выдержал.

anonymous
()
Ответ на: комментарий от redhat

Сам с собой пообщался. Молодец.

anonymous
()
Ответ на: комментарий от AVL2

Апач же есть с mod_lua. Nginx лично мне не нравится, но это вариант.

Я никогда не пойму этих людей...

mva
()
Ответ на: комментарий от Deleted

Я смогу над типом данных из модуля сделать a * b + c * b средствами ЯП

Эти операции можно переопределить. Возможно, что в модуле это уже будет сделано.

aiker ★★
()

Good news, everyone!
Говносрач детектед. :-) Узнаю милый добрый ЛОР с его мелкими такими, косыми такими, лоровцами. ;-)
А если по теме, то язык очень годный, используется во многих проектах и весьма удобен. (в minetest он используется для описания всех высокоуровневых вещей, что очень удобно).

Michail_Ul ★★
()
Ответ на: комментарий от makoven

При этом, как правило его ffi получается настолько переусложненным, что писать сишные биндинги могут только специально обученные старцы

Рабинович напел?

bj
()
Ответ на: комментарий от bj

Луашный сишный api вместе с описанием синтаксиса и всех функций стандартной библиотеки помещается на одной странице

makoven ★★★★★
()
Ответ на: комментарий от Deleted

в реальном мире нужны языки, в которых «есть то, что не нужно»

Отсыпь, хочу тоже увидеть этот мир ненужностей.

vurdalak ★★★★★
()

Эх, до сих пор помню, как писал скрипты для ботов в одной ММО, затем это дело подавал.

X10Dead ★★★★★
()

Незаметно и внезапно

... быстро и решительно

В комментариях уже успели выяснить, какие ЯП превосходят луа наголову?

Virtuos86 ★★★★★
()
Ответ на: комментарий от anonymous

нет, на ней конфиги для какого-то быдлоWM пишут

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

В комментариях уже успели выяснить, какие ЯП превосходят луа наголову?

Да, там выше на странице глянь - те, в которых есть ненужное.

YogSagot ★★★
()
Ответ на: комментарий от Virtuos86

Из не наколеночных поделок, я бы назвал схему. Но скобочный синтаксис очень уж многих пугает до чёртиков.

Dark_SavanT ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Я смогу над типом данных из модуля сделать a * b + c * b средствами ЯП, или надо будет явно вызывать функции?

Я не так плотно сейчас с луа работаю. Насколько я помню, перегрузки операторов там нет. Так что функциями.

AVL2 ★★★★★
()

а почему там не добавляют операций типа

+=, ++, -=
и так далее? это же делает код более удобным для чтения

и циклы типа for выглядят как из барсика (либо итератор, либо пределы и шаг), как проитерировать по 2-м переменным сразу, типа

for(a = 0, b = 1; a < 10 || b < 20; a++, b = func())
.....

вроде скриптовый язык, а такого типа конструкций почему-то нет... когда программировал плуги под Far Manager (да-да, под офтоп) было ощущение что красивый по сути язык пошел 'слишком' своим путем :)

hoopoe ★★
()
Последнее исправление: hoopoe (всего исправлений: 1)
Ответ на: комментарий от hoopoe

вроде скриптовый язык, а такого типа конструкций почему-то нет...

А при чём тут скриптовость? Такие конструкции есть только в C и языках, которые от него произошли.

anonymous
()
Ответ на: комментарий от rogerw

что-то типа wsgi?

XXXGI сейчас не в моде. Намного удобнее взять какую-нибудь реализацию HTTP (пофиг на степень полноты/кривости) и запилить REST.

От большого/злого/страшного внешнего мира, прикрываем каким-нибудь reverse-proxy по вкусу (да хоть IIS'ом), который помимо основной своей задачи будет раздавать статику, кешировать ответы, делать TLS с отдачей подзащитному сабжекта/номера клиентского сертификата в X-заголовках, прозрачно сжимать ответы и прочие тривиальные но сложнореализуемые вещи.

Macil ★★★★★
()
Ответ на: комментарий от hoopoe

Да, но подмена метатаблиц выполняется довольно часто для действительно нужных вещей. Я бы не стал это делать для синтаксического сахара.

AVL2 ★★★★★
()
Ответ на: комментарий от hoopoe

+= нет из-за того, что непонятно что делать, если слева стоит выражение с сайдэффектом, например.

PolarFox ★★★★★
()
Ответ на: комментарий от nikolnik

В World of Warcraft он для скриптов используется и интерфейс вроде тоже на нем написан.

A-234 ★★★★★
()
Ответ на: комментарий от Deleted

монстр Руби. При том что я знаю и люблю Руби, это действительно переусложнённый монстр с неясными перспективами.

«Я конечно либерал, но вы все должны быть уничтожены», ага. Переусложнённый это ты будешь говорить когда шаблоны на плюсах писать будешь. Есть ещё mruby, если ты решил поупарываться.

anonymous
()

Прекрасный язык. Полезные новшества.

Deleted
()
Ответ на: комментарий от nikolnik

А для другого рода задач как он вообще подходит? Есть истории успеха?

Еще в 2009 году я сделал на нем систему конфигурации и инициализации кое-каких сетевых устройств. Получилось неплохо, при том что я все делал один. До Lua использовался Perl.

Deleted
()
Ответ на: комментарий от Deleted

потому что ничего не умеет даже в сравнении с js

js научился уже coroutines, чтобы везде и нормально?

aiker ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.