LINUX.ORG.RU

Вышел Lua 5.3

 ,


2

8

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

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

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

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

★★★★★

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

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

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

Админка OpenWrt на нем написана

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

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

насколько я понял там вопрос был как раз в контексте операций для собственных типов

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

А чем mruby не устроил?

Когда я его последний раз видел, он требовал для себя bison, cmake и обычный ruby. А также тащить свои сорцы с помощью подрепозитария гита.

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

А можно как в lua, просто взять и скопировать в дерево проекта .c и .h файлы?

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

что хорошего?

  • ООП вменяемого нет
  • null вменяемого нет
    t = { 1, nil, 3 }
    t = { 1, 2, nil }
    
  • массивов нет, есть эмуляция, где длина массива вычисляется тупым перебором
  • со стороны C скалярами нельзя оперировать для складирования резульатов чего-то потокового, да есть буферы, но они блин косые и побайтовые
  • автоматического приведения типов нет
  • кучу вещей разработчики lua выдумывали сами (что творится в мире - совершенно не знают): школота: выдумали свои регекспы итп
  • файловые операции в языке неполноценные (в итоге каждый кто пользует lua пишет свою файлолибу)
  • то же с сокетами
  • очень медленный на реальных приложениях (lua любят хвалить «за бенчмарки», но бенчмарк вычисления
    a=b+c
    мало кому интересен
  • размер данных ограничен гигабайтом (JIT), при этом мусорщик преотстойный: длинные циклы с определением local внутри сами разработчики lua не рекомендуют

и в общем список продолжать можно бесконечно

из интересного: мы организовывали lua workshop в Москве. многие разработчики lua отказались ехать в Москву, потому что «в России притесняют геев»

тогда я понял почему lua такое УГ. кому интересно почитайте например здесь

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

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

Да, только для написания сишных байндингов для того же питончега вообще не надо знать никакого апи.

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

файловые операции в языке неполноценные (в итоге каждый кто пользует lua пишет свою файлолибу)
то же с сокетами

Я бы не хотел, чтобы кривой мод для очередной https://en.wikipedia.org/wiki/Category:Lua-scripted_video_games полез в инет или загадил файловую систему.

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

Я бы не хотел, чтобы кривой мод

Вот поэтому луа в этой жопе и будет сидеть до морковкиного заговенья, аминь.

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

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

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

ну и как же ты не зная апи вызовешь из сишного кода функцию написанную на питоне

Казалось бы, причем тут «сишные биндинги» и «ffi».

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

ООП вменяемого нет
автоматического приведения типов нет

А точно нужно?

кучу вещей разработчики lua выдумывали сами (что творится в мире - совершенно не знают)

И даже язык они выдумали сами :) Ничего плохого в их РВ нет. О каких других велосипедах речь?

Этот язык изначально разрабатывался для описания конфигураций, а не как универсальный ЯПВУ. Позже его назначение трансформировалось и потом он позиционировался как язык _расширения/дополнения/«клей»_ других программ. И для таких задач весьма хорошо себя показал.

Вы уверены, что используете его разумно?

NB Использую его довольно часто.

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

Ничего плохого в их РВ нет

Кроме того, что вы оба (с rsync) упорки: в string:{g,}{match,sub}() НЕ ИСПОЛЬЗУЮТСЯ РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ. Для них есть своя библиотека. А паттерны — НЕ ЯВЛЯЮТСЯ РЕГУЛЯРНЫМИ ВЫРАЖЕНИЯМИ.

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

А, и да, ООП там вполне себе есть на достаточном уровне. Больший уровень, если совсем захотелось упороться, вполне достижим метатаблицами.

В общем, как сказал один мой очень хороший знакомый, Matthew Wild (он же автор Prosody, он же XMPP Software Foundation Council):

Python tries to give you /as much/ as possible.
Lua tries to give you /as less/ as possible.

mva
()

Появился целочисленный тип
Битовые операции
Базовая поддержка UTF-8

Да вы издеваетесь!

FairyOstroGrad
()

Жаль, что LuaJIT остановился в развитии. Без LuaJIT мне LUA не нужна. Думайте, куда собирать манатки.

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

1)

LuaJIT остановился в развитии

4.2

2)

LUA

http://www.lua.org/about.html#name

Please do not write it as «LUA», which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write «Lua» right!

3)

мне <...> не нужна

мне

думайте

множественное число

мне

Не жмёт корона?

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

Please note: The main LuaJIT author (Mike Pall) is working on unrelated projects and cannot accept new sponsorships at this time.

Или у тебя запасной Майк Пол лежит под кроватью?

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

А точно нужно?

совершенно точно нужно. ООП позволяет реюзать много кода более удобно чем другие парадигмы в некоторых случаях.

например пишете вы скажем сетевое приложение: берете делаете два объекта: стейтмашина + коннектор. далее наследуясь (или инкапсулируя) оба вы можете написать скажем «коннектор к БД» а еще дальше наследуя можете написать скажем ORM итп итд

случаев когда ООП более удобен чем модульное/функциональное программирование море. даже на C с его отсутствием ООП в язке много программ в стиле ООП пишется. например весь сокетный API по сути ООП на C.

И даже язык они выдумали сами :) Ничего плохого в их РВ нет. О каких других велосипедах речь?

  • все строковые операции, все табличные операции
  • отсутствие оператора continue
  • велосипед при работе с кодом бросающим исключения (pcall и xpcall это натурально выдуманный на коленке велосипед)

итп итд

так же убивает индексация с 1 (конечно есть еще языки с таким дебилизмом)

Этот язык изначально разрабатывался для описания конфигураций, а не как универсальный ЯПВУ.

проблема в том что его пихают в каждую дырку затычкой например в nginx, базы данных, итп итд

как язык _расширения/дополнения/«клей»_ других программ

язык расширения уже должен быть полноценным языком.

Вы уверены, что используете его разумно?

я использую его там где он есть и с чем приходится работать. nginx, tarantool итп. awesome я снес сразу как увидел lua. сижу под i3wm. все хорошо :)

NB Использую его довольно часто.

я к несчастью тоже очень часто. приходится на lua писать и на perl. на perl душа отдыхает. а на lua подвергается истязаниям :)

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

1) Лежит.
2) Обсуждение LJ3 и GC2 вполне себе идёт.
3) Контрибьюшн он тоже вполне себе принимает. Это опенсорс, детка. Тут просто пользоваться, ничего не отдавая взамен — не покатит :)

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

на lua подвергается истязаниям

Ну так не пиши на Lua. Больше скажу, Lua в NgX, в отличие от Perl'а, не в коробке даже.

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

совершенно точно нужно

Ну так в чем проблема-то? http://lua-users.org/wiki/ObjectOrientedProgramming

проблема в том что его пихают в каждую дырку затычкой например в nginx

В nginx'е Lua просто прекрасен. Компактно, быстро, красиво. Псевдо-синхронный код на coroutines, интегрированный с асинхронным движком nginx просто сказка. Китайцу (или японцу) кто это пилит - респект и уважуха.

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

Китайцам. Там и несколько (agentzh тимлид, а не вся команда ☺). Ну и их спонсирует CloudFlare (а раньше Ali/TaoBao). Так что респект и уважуху они получают во вполне материальном эквиваленте. Но да, он вообще молодец. Я с ним во многих NginX-related (и Lua-related) проектах пересекаюсь. Впечатления сугубо положительные :)

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

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

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

Кстати, вот буквально меньше часа назад Майк впилил порт PPC64le :)

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

На самом деле:
1) за «основные программы на питоне» — нужно яйца отрывать :( // virt-manager, там, и прочие поделия
2) на Lua тоже вполне себе прекрасно пишутся C-модуля (я самолично пилю несколько)

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

Да, действительно, частью языка они не являются, т.е. выражениями их назвать нельзя. Однако для функций работы со строками они именно и являются выражениями. И?

ЗЫ Чо ж так глотку рвать и в грудь стучать? Такое последний раз видел в зоопарке...

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

Смотрите, что Вы сказали:

ООП позволяет реюзать много кода более удобно чем другие парадигмы в некоторых случаях.

Т.е. только в некоторых (меньше половины случаев) ООП позволяет повторно использовать код более удобно. Эээээ???....

Далее о велосипедах и прочем

все строковые операции, все табличные операции

Это базовые операции, они в любом языке как «велосипеды». Или Вам не хватает синтаксического сахара?

отсутствие оператора continue

Где? В цикле for он не нужен. Эту конструкцию запросто можно описать while`ом.

так же убивает индексация с 1 (конечно есть еще языки с таким дебилизмом)

Всего лишь речь о Вашей привычке, шаблоне мышления.

язык расширения уже должен быть полноценным языком.

В вашем понимании полноценный язык, это такой монстр который поддерживает все возможные парадигмы программирования? Уверен, что это ошибочное мнение. А вот по Тьюрингу язык Луа полный.

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

Виртуальная машина занимает 100кб.

размер данных ограничен гигабайтом

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

файловые операции в языке неполноценные

то же с сокетами

А зачем тебе из скрипта «игрок дёрнул за верёвку и на него упал кирпич» файловые операции? Или вообще в сеть лезть?

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

1 - таких программ больше чем ты думаешь, устанешь отрывать) (да, я тоже не рад этому, хотябы потому что они обычно ужасно тормозные и глючные) 2 - я ничего не говорил про си модули для луа потому что сам с ними не встречался и мало о них знаю, но я прокидывал сишные функции в луа машину и помню что это было очень удобно.

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

Ну вот, видишь как все просто.

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

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

да, я тоже не рад этому, хотябы потому что они обычно ужасно тормозные и глючные

mva

за «основные программы на питоне» — нужно яйца отрывать

Дартаньяны обычно забывают пару мелочей.

1) Этот софт написан, и судя по запаху гари — аналогов нет.

2) И даже если бы они были написаны на других языках, то были бы такие же тормозные и глючные, причем в отдельных случаях бы еще и в корку валились.

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

Ну... не факт, но с большой долей веротяности — да. Просто питон, как показывает какая-то давно прочитанная мной статья не умеет в нормальную мультитредовость от слова совсем. И не уверен, что там хотя бы есть корутины.

// Это я к тому, что делать гуй и работу с сетью в одном потоке — смертный грех...

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

Кстати, запах гари не по причине того, что нет аналогов, а того, что ЭТО пишут за деньги люди на фуллтайме в RH...

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

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

Не читай советских статей. Пока не нужно делить cpu, треды ведут себя как вполне обычные.

И не уверен, что там хотя бы есть корутины.

Внезапно есть. gevent как самый яркий представитель. Или asyncio в тройке.

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

Чушь. Асинхронные функции из glib/gio работают прекрасно.

Как-то с матчастью у тебя совсем хреново. Очень похоже, что и у авторов твоих нелюбимых поделок тоже))

bj
()

Появился целочисленный тип

Битовые операции

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

2015

А continue до сих пор нет?

Ждём размаска 5.2 и ебилдов 5.3.

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

Самое печальное, что они считают себя победителями в этой ситуации. Не прогнулись под гетерошлюх!

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

Пока в англоязычном Евангелие не появится строчка «возлюби гея, как самого себя» - какая же это победа?

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

Вы вообще «не в теме» язык очень мощный и быстрый используется как встраиваемый так и «отдельно» просто большинство «пионеров» сталкиваются с ним только в играх

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

Вы вообще «не в теме» язык очень мощный и быстрый используется как встраиваемый так и «отдельно» просто большинство «пионеров» сталкиваются с ним только в играх

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

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

Основным?

И в скором (надеюсь) времени будет основным языком для нового vim.

В нём же будет языковая независимость для плагинов (в том числе уже питонобиблиотека есть). Ну а код основного приложения - на сишечке, разумеется.

ЗЫ Я надеюсь мы сейчас оба про NeoVim?

anonymous
()
Ответ на: Основным? от anonymous

Может и независимость. Но 2.2% кода на луа. И на сайте всюду луа упоминается. Так что думаю луа будет основным.

В нынешнем виме ведь тоже есть биндинги для питона, луы и рубей. Но плагины пишут в основном на VimL

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

Но 2.2% кода на луа.

Это тесты же.

Но плагины пишут в основном на VimL

Это чуть ли не самый важный «selling point» neovim, что он усовершенствует архитектуру vim таким образом, что никакого основного обязательного языка для плагинов больше не нужно.

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

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

Это про выполнение команд через асинхронные JSON-запросы?

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

Это про выполнение команд через асинхронные JSON-запросы?

Коммуникация в msgpack. neovim предоставляет демона, в котором хранится состояние. Плагины — отдельные процессы, которые умеют с ним общаться посредством msgpack-rpc. Пользовательские интерфейсы — тоже плагины.

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

Плохо то, что нет золотой середины

есть же perl, никаких багов, эталонная поддержка unicode, лёгкий рантайм(неспроста он тоже в nginx встроен), отличная производительность, простой интерфейс к сишным модулям(можно хоть в инлайне писать), лучшая реализация регекспов, готовые модули на все случаи жизни, есть в любом дистрибутиве linux.

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