Closed xrSimpodin closed 3 years ago
Спасибо за обнаружение! :)
Ну, на ЗП ты бы такого и не заметил, может. Это в ТЧ старые моды очень бестолковые в плане скриптов. Всякие типа амк. Это кусок из амк таймеров в примере выше.
Ну, на ЗП ты бы такого и не заметил, может. Это в ТЧ старые моды очень бестолковые в плане скриптов. Всякие типа амк. Это кусок из амк таймеров в примере выше.
У нас с новым луаджитом вылетает ЧН оригинальный, без модов, и есть подозрение, что это именно из-за порядка сортировки таблиц..
Открыл вопрос в репозитории LuaJIT: https://github.com/LuaJIT/LuaJIT/issues/719
Ну причин то может быть много и без сортировки. Я таких чудес насмотрелся за всё время как занимаюсь движком, что уже ничему не удивляюсь.
Нашли коммит, который меняет поведение: https://github.com/LuaJIT/LuaJIT/commit/ff34b48ddd6f2b3bdd26d6088662a214ba6b0288. После реверта скрипты починились. Может, позже найдём какой-то фикс без реверта и не хуже реверта, но пока так.
Ну да, я тоже проверил, эта проблема фиксится после реверта. На днях наверно обновлю здесь луаджит. Теперь главное, чтоб в нём ещё каких-то новых проблем не нашлось)
https://github.com/OGSR/OGSR-Engine/commit/53370305e9550666aa42a89b54bf09a70f602a70 Есть небольшая проблема с совместимостью. Там поменяли сортировку таблиц, видимо для увеличения производительности. Ранее, итерация элементов в цикле по таблице всегда была с одинаковой последовательностью, ну типа как у
std::map
, хотя по стандарту луа, какstd::map
себя должны вести только массивы вида{ "a", "b", "c", "d", ... }
или{ [1] = "a", [2] = "b", [3] = "c", ...}
что по сути одно и то же. Для таблиц вида{["avd"] = 1, ["dlfk"] = 5, ...}
последовательность не гарантируется, это ужеstd::unordered_map
по сути своей. Но всё равно в старых версиях LuaJIT последовательность была одинаковой всегда. Так вот, в новой версии таблицы работают как настоящийstd::unordered_map
. Это наверно даже хорошо, но всякий говнокод типа такого, теперь работать не будет:Конечно в проектах, где скрипты в порядке, проблем не будет. Но проектов где скрипты не в порядке подавляющее большинство. Вот и возникает вопрос, что с этим делать, и имеет ли вообще смысл что-то делать, сколько такого говнокода в модах и так далее.