Size: a a a

2021 October 16

S

Snusmumriken in pro.lua
Иммутабельные.
источник

S

Snusmumriken in pro.lua
Ну в смысле в следующий раз придёт ещё bytes, в новый буфер, который точно так же будет собран мусорщиком.
источник
2021 October 17

f

fgntfg in pro.lua
/spam
источник

IS

Ivan Stepanov in pro.lua
А как luajit построить без JIT? Интересует только интерпретатор
источник

IS

Ivan Stepanov in pro.lua
[ivan@pc host]$ pwd
/home/ivan/p/luajit/src/host
[ivan@pc host]$ gcc minilua.c -lm

Оно ?
источник

IS

Ivan Stepanov in pro.lua
Нашёл XCFLAGS+= -DLUAJIT_DISABLE_JIT
источник
2021 October 18

G

GNU/Vsevolod in pro.lua
Какая разница между require"foo.bar.baz" и require"foo/bar/baz"?
источник

S

Snusmumriken in pro.lua
Выведи содержимое package.config. Там будет что-то подобное:
> =package.config
\
;
?
!
-

Как вспомогательное, пример содержимого package.path:
"/libdir/?.lua;/libdir2/?.lua"

1. \ или / как разделитель путей ОС и простой способ детектить, под вендой ли мы, на него будут заменены все точки в пути для require.
2. ; — разделитель путей в package.path/cpath.
3. ? символ подстановки имени файла в package.path/cpath.
4. ! — символ который будет заменён путём до интерпретатора.
5. - — специальная фигня для реквайринга сишных либ.

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

G

GNU/Vsevolod in pro.lua
Да, по идее точка работает везде, все остальное platform-specific. Но require"foo/bar" не выдаст закешированный require"foo.bar"
https://github.com/lua/lua/blob/master/loadlib.c#L481-L505
источник

G

GNU/Vsevolod in pro.lua
Алсо, почему у меня на lua5.1-4 _G._LOADED == nil?
источник

S

Snusmumriken in pro.lua
require"foo/bar" не выдаст закешированный require"foo.bar", но должен выдать закешированный require"foo/bar".
источник

S

Snusmumriken in pro.lua
Если у тебя в файлах есть разночтение — напиши блин препроцессор:

oldreq = require
function require(...)
 local path = ...
 path = path:gsub("[\\/]", ".")
 return oldreq(path, select(2, ...))
end

Но это костыль для решения костыльной задачи впихивания костылей.
источник

G

GNU/Vsevolod in pro.lua
А можно было ведь считать ключ в кеше, заменяя сепараторы на что-то третье
источник

S

Snusmumriken in pro.lua
НАПРИМЕР НА ТОЧКУ?!
источник

S

Snusmumriken in pro.lua
Хехе
источник

G

GNU/Vsevolod in pro.lua
бамп
источник

G

GNU/Vsevolod in pro.lua
Ну или так, why not
источник

S

Snusmumriken in pro.lua
Нет. Как ты написал так и будет. Препроцессоры добавят неоднозначности.
источник

VM

Vadim Misbakh-Solovi... in pro.lua
а почему должно быть иначе?
источник

S

Snusmumriken in pro.lua
Смотри.
источник