LINUX.ORG.RU

[lua] Как решить вопрос с использованием патченого lua

 


0

1

lua хорош, но некоторых возможностей в нем нет. Но есть возможность наложить патч на сам lua и все будет хорошо. Да и сам он небольшой, поэтому его запросто можно поставлять вместе с программой. Однако, как лучше сделать, - поставлять архив оригинального lua, список патчей для применения, а когда делаем make - распаковываем архив, применяем патчи? Или есть другой способ, лучше?

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

Опубликуй патч здесь, кому надо, соберут.

http://lua-users.org/wiki/LuaPowerPatches

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

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

Я оттуда и брал, просто на их основе допилю еще того, что мне надо. И обратно отошлю.

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

XVilka ★★★★★
() автор топика

Остановился на решении тарбол + патчи. Тогда как проверить в Makefile, был ли применен патч уже, или нет? Чтобы не перекомпилировать lua по каждому чиху?

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

У них в листе полно желающих добавить «действительно нужные» вещи. Если часть послушать, получится питон. Если послушать всех, получится перл. Я встраивал все три, и никакого желания возвращаться к п* у меня нет. Я бы наоборот не хотел, чтобы луа стал /таким.

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

Согласись, что сабжевый патч нужен? Ну и приведи, пожалуйста, примеры «дествительно нужных вещей».

baverman ★★★
()

Lua — язык, полный по Тьюрингу, поэтому все нужные вещи вполне можно на нем самом и реализовать, без всяких патчей. Или, если важна производительность, вынести в отдельный модуль на C.

Кстати, чем tonumber(«11111111», 2) не двоичная константа? И чем http://bitop.luajit.org/ не устраивает?

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

чем tonumber(«11111111», 2) не двоичная константа?

Объясни это пользователям, которым данный паровоз нужно набирать в шелле hex-редактора (если не ошибаюсь).

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

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

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

Сабжевый патч нужен тем, кому нужен сабжевый патч. Не скажу за константы, по битлиб это уже легендарный «мем». Авторы и старожилы каждый раз каждому нубу в листе объясняют, что портабельный битлиб это нетривиально и его патч/либ просто неправильный. В 5.2 добавили свою реализацию. Из действительно нужно: чтобы было continue, чтобы object:method возвращал замыкание вокруг object, чтобы require был с параметрами, чтобы нил вставлять в массив, чтобы переопределять and/or/not.. Там каждому что-то нужно, свои 5%, и чтобы его utils.lua стал стандартной библиотекой. И у меня есть свой utils.lua :)

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

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

Еще есть вариант экспортировать функции bin, oct, hex:

x = hex «deadbeef» y = oct «7070123» + bin «10100101»

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