К вопросу о неанонсированных релизах. :-) Обнаружил, что ещё ничего не писал здесь про luabins.
Лицензия: MIT.
С библиотекой можно работать как из Луа, так и напрямую из C/C++.
Основное назначение luabins — сериализация данных для Lua-to-Lua RPC вызовов. При этом библиотека отлично подходит и для хранения простых данных.
Luabins поддерживает примитивные типы: nil, boolean, number и string. Поддерживаются нерекурсивные таблицы разумной вложенности (250 уровней по умолчанию, настраиваемо).
Luabins намеренно не поддерживает рекурсивные таблицы, функции, корутины и userdata. (Если нужна сериализация этих типов — вам к Pluto.)
Наивный пример работы на Lua:
Работа через luabins существенно быстрее чем сохранение и загрузка данных через луашный код в духе tstr и tserialize.
Размер сохранённых данных обычно больше, чем при сохранении в луашный код. (В основном из-за представления целых чисел в виде double; это та же проблема, что и при компиляции луашных исходников в байт-код.) В следующих версиях запланированы оптимизации на эту тему.
Luabins намеренно не сохраняет и не проверяет никакую мета-информацию о данных (включая версию формата!). Если нужно, эту информацию нужно подклеивать к данным руками.
Luabins пытается защищаться от враждебных (или просто неверных) данных при загрузке. Делаются проверки на переполнение и на переаллокацию.
На данный момент Luabins используется в нескольких коммерческих проектах.
Дополнительное чтение:
2 комментария:
а еще есть protocol buffers! :)
Вот когда Google Protocol Buffers начнут нативно поддерживать Lua, тогда и поговорим.
И, вообще, одно другому не мешает.
Отправить комментарий