myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Lua 5.2, тестовый вариант

Теги
Нет тегов для показа
Setuper
сообщение 28.1.2010, 21:31
Сообщение #1


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




http://www.lua.org/news.html

Изменения в lua.

  • По умолчанию не загружается debug библиотека. Для загрузки нужно использовать require"debug".
  • Функций setfenv и getfenv больше нету. Вместо этого используйте функцию loadin или используйте соответствующие функции из debug библиотеки.
  • Функции math.log10 больше нету. Используйте math.log с десяткой во втором аргументе.
  • Функции table.maxn больше нету. Если вам она необходима, напишите её на lua.
  • Функция unpack внесена в таблицу table. Теперь эта функция вызывается так: table.unpack



Изменения в api.

  • Псевдоиндекс LUA_GLOBALSINDEX был удалён. Вместо этого нужно использовать псевдоиндекс LUA_ENVIRONINDEX, если C функция не изменяет своего стандартного окружения. В противном случае вы должны получить глобальное окружение из реестра.
  • Макросы lua_getglobal, lua_setglobal и lua_register теперь действуют в окружении функции вместо глобального окружения.
  • Функция luaL_typerror была переименована в функцию luaL_typeerror, для корректности.
  • Функция lua_cpcall была удалена. Вместо ней используйте функцию cpcall из реестра.
  • Функции lua_equal и lua_lessthan были удалены. Вместо них используйте функцию lua_compare с соответствующей опцией.
  • Функция lua_objlen была переименована в функцию lua_rawlen.
  • Окончательно удалены макросы lua_open(), lua_getregistry(L), lua_getgccount(L), lua_Chunkreader и lua_Chunkwriter.


Спасибо сказали:
Go to the top of the page
+Quote Post
Jaska
сообщение 28.1.2010, 21:48
Сообщение #2


Освоившийся участник
*****

Группа: Администраторы
Сообщений: 344
Регистрация: 2.6.2008
Из: RB,Ufa
Пользователь №: 8
Спасибо сказали: 106 раз




Советую еще почитать не самую свежую, но тем не менее полезную статейку на хабре. :-)


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 28.1.2010, 21:57
Сообщение #3


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Я уже в плагин рус хаба встроил Lua 5.2 чтобы проверить изменения big_smile.gif
За статейку спасибо.
Go to the top of the page
+Quote Post
Jaska
сообщение 28.1.2010, 22:01
Сообщение #4


Освоившийся участник
*****

Группа: Администраторы
Сообщений: 344
Регистрация: 2.6.2008
Из: RB,Ufa
Пользователь №: 8
Спасибо сказали: 106 раз




Отлично) кстати погляди еще http://article.gmane.org/gmane.comp.lang.lua.general/61505 мне кажется кое чего в списке нехватает, например luaL_tostring() и lua_copy()
Go to the top of the page
+Quote Post
Setuper
сообщение 28.1.2010, 22:05
Сообщение #5


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Эти дополнительные функции не используются пока, и как их использовать пока не известно. Поэтому ждём финального релиза big_smile.gif
Go to the top of the page
+Quote Post
Ksan
сообщение 28.1.2010, 22:08
Сообщение #6


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Чем эта версия Луа лучше предыдущей?
Из списка изменений не очевидны преимущества (на мой непросвещённый взгляд).
Go to the top of the page
+Quote Post
Jaska
сообщение 28.1.2010, 22:13
Сообщение #7


Освоившийся участник
*****

Группа: Администраторы
Сообщений: 344
Регистрация: 2.6.2008
Из: RB,Ufa
Пользователь №: 8
Спасибо сказали: 106 раз




Trans не скажи, меня лично порадовало loadin (что это такое можешь почитать на хабре, ссылкой выше). Если встраивал луа в си, тогда оценишь преимущества. А так, о преимуществах можно говорить только поработав и с тем и с другим.

Setuper ну они есть в lua 5.2? Ну я так полагаю luaL_tostring() аналогична tostring() только применяется в другом.
Go to the top of the page
+Quote Post
Setuper
сообщение 28.1.2010, 22:15
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




luaL_tostring() - это сишная функция, а не lua функция.
Go to the top of the page
+Quote Post
Ksan
сообщение 28.1.2010, 22:16
Сообщение #9


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Понятно. Это даже не альфа..
"То, что выложено на публику даже не альфа — это просто снапшот рабочего кода. К релизу может измениться всё, что угодно." (с)
Go to the top of the page
+Quote Post
alex82
сообщение 29.1.2010, 23:43
Сообщение #10


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата
Функции table.maxn больше нету. Если вам она необходима, напишите её на lua.

Идиотизм, чесслово. Кому она мешала?

И вообще, в чейнджлоге только и видно, что "Удалено-Переименовано", "Переименовано-Удалено". А что добавлено-то? Это больше напоминает имитацию бурной деятельности, чем разработку.

PS. Переименовывать и кромсать мы и сами могем, даже при полном незнании С/С++.


Спасибо сказали:
Go to the top of the page
+Quote Post
Ksan
сообщение 30.1.2010, 15:03
Сообщение #11


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




2alex82:

Хотел написать то же самое...
Go to the top of the page
+Quote Post
alex82
сообщение 8.4.2013, 18:24
Сообщение #12


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Уже почти полтора года прошло с момента выхода Lua 5.2, и вот наконец я добрался до тестирования сего чуда программерской мысли. И вот что я вам скажу. Дела с ним обстоят еще хуже, чем я ожидал...

Уже на этапе сборки выяснилось, что опция LUA_COMPAT_MODULE, добавляющая обратно "устаревшую" функцию luaL_register, используемую при подключении дополнительных библиотек, не работает как надо. А все потому, что функция luaL_register не может экспортироваться, ибо реализована она как макрос:
Код
#define luaL_register(L,n,l)    (luaL_openlib(L,(n),(l),0))

Слегка недоумевая, переписываем функцию по-человечески:
Код
LUALIB_API void (luaL_register) (lua_State *L, const char *libname, const luaL_Reg *l) {
  luaL_openlib(L, libname, l, 0);
}
Теперь вроде как все в порядке, совместимость со старыми библиотеками обеспечена (за исключением тех, что используют lua_setfenv и lua_getfenv, ибо окружение функций теперь тоже устарело). Но не тут-то было. Библиотеки одна за другой отказываются подключаться, ибо не находят в lua.dll то lua_tonumber, то lua_call, то еще какую-нибудь важную функцию C API. Снова открываем lauxlib.h, в котором совсем недавно мы нашли чудо-функцию-макрос luaL_register, который по мнению разработчиков должен был экспортироваться, и медленно выпадаем в осадок:

Код
#define luaL_loadfile(L,f)    luaL_loadfilex(L,f,NULL)

Код
#define luaL_newlibtable(L,l)    \
  lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)

#define luaL_newlib(L,l)    (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))

#define luaL_argcheck(L, cond,numarg,extramsg)    \
        ((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))
#define luaL_checkstring(L,n)    (luaL_checklstring(L, (n), NULL))
#define luaL_optstring(L,n,d)    (luaL_optlstring(L, (n), (d), NULL))
#define luaL_checkint(L,n)    ((int)luaL_checkinteger(L, (n)))
#define luaL_optint(L,n,d)    ((int)luaL_optinteger(L, (n), (d)))
#define luaL_checklong(L,n)    ((long)luaL_checkinteger(L, (n)))
#define luaL_optlong(L,n,d)    ((long)luaL_optinteger(L, (n), (d)))

#define luaL_typename(L,i)    lua_typename(L, lua_type(L,(i)))

#define luaL_dofile(L, fn) \
    (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))

#define luaL_dostring(L, s) \
    (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))

#define luaL_getmetatable(L,n)    (lua_getfield(L, LUA_REGISTRYINDEX, (n)))

#define luaL_opt(L,f,n,d)    (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))

#define luaL_loadbuffer(L,s,sz,n)    luaL_loadbufferx(L,s,sz,n,NULL)

И.т.д., и.т.п. Всего около двадцати функций. Важных функций, без которых не написать сколько-нибудь серьезную библиотеку.

Первым делом у меня мелькнула мысль, что я чего-то недопонимаю, но непродолжительное общение с гуглом расставило все точки над Ё - макрос есть директива препроцессору, и линковщик НИКАК не сможет экспортировать его.

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

P.P.S. Давайте жить дружно, и юзать Lua 5.1 big_smile.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 8.4.2013, 20:15
Сообщение #13


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Дааа... не хорошо.
Получается они оставили только статическую совместимость

Цитата
Here we list the incompatibilities that you may find when moving a program from Lua 5.1 to Lua 5.2. You can avoid some incompatibilities by compiling Lua with appropriate options (see file luaconf.h). However, all these compatibility options will be removed in the next version of Lua. Similarly, all features marked as deprecated in Lua 5.1 have been removed in Lua 5.2.


Кстати, при переходе с Lua 4 на Lua 5 было тоже самое, также были удалены устаревшие функции и были несовместимости.
Go to the top of the page
+Quote Post
KMV
сообщение 23.4.2013, 3:04
Сообщение #14


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 20.2.2013
Из: Россия
Пользователь №: 11 340
Спасибо сказали: 2 раза




Видимо не все в порядке в бразильском монастыре...
Хотел спросить, переход с 5.0 на 5.1 вызывает столько же геморроя ?
Или это более реально?
Go to the top of the page
+Quote Post
alex82
сообщение 25.4.2013, 2:15
Сообщение #15


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




KMV

Если собрать Lua 5.1 с включенными опциями совместимости, то не должно быть геморроя. Это не 5.2, там нету бреда с макросами-функциями.
Go to the top of the page
+Quote Post
KMV
сообщение 25.4.2013, 4:16
Сообщение #16


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 20.2.2013
Из: Россия
Пользователь №: 11 340
Спасибо сказали: 2 раза




Цитата(alex82 @ 25.4.2013, 3:15) *
KMV

Если собрать Lua 5.1 с включенными опциями совместимости, то не должно быть геморроя. Это не 5.2, там нету бреда с макросами-функциями.

Скорее всего, lua будет системный "из коробки" как его соберут не знаю.
Интересует много ли в скриптах переписывать понадобится ?
Go to the top of the page
+Quote Post
alex82
сообщение 29.4.2013, 0:05
Сообщение #17


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




KMV
http://www.lua.ru/doc/7.2.html


Спасибо сказали:
Go to the top of the page
+Quote Post
slon28
сообщение 4.6.2013, 9:32
Сообщение #18


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 4.6.2013
Пользователь №: 11 541
Спасибо сказали: 0 раз




Цитата(alex82 @ 29.4.2013, 1:05) *

Прошу прощения за подобный вопрос - какую литературу стоит изучить по Lua?
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Сейчас: 28.3.2024, 13:57