Показаны сообщения с ярлыком luabins. Показать все сообщения
Показаны сообщения с ярлыком luabins. Показать все сообщения

28 мая 2010 г.

Luabins 0.3

Зарелизил Luabins 0.3

http://github.com/agladysh/luabins

Новые фичи:
  • Унификация формата для x86_64 и x86. (ВНИМАНИЕ! Данные старых версий, сохранённые из-под x86_64, перестанут загружаться.)
  • API для сохранения данных в FILE * без участия Lua (см. fwrite.h).
Исправлены ошибки:
  • При побайтовом чтении теперь проверяется, остались ли ещё данные.
  • Исправлено переполнение луашного стека данных при загрузке больших данных.
Разное:
  • Улучшена информация о модуле. Переменная luabins.VERSION заменена на более стандартные luabins._VERSION, luabins._DESCRIPTION и luabins._COPYRIGHT.
  • Добавлены некоторые утилиты командной строки, полезные при разработке (см. etc/).
  • Слегка почищен код.

21 февр. 2010 г.

Luabins 0.2

Зарелизил luabins 0.2

http://github.com/agladysh/luabins
  • Производительность luabins.save() удвоена.
  • Добавлено API для сохранения данных в формате Luabins без Lua.
Формат сохранённых данных не изменился.

21 нояб. 2009 г.

luabins

К вопросу о неанонсированных релизах. :-) Обнаружил, что ещё ничего не писал здесь про luabins.

Luabins — библиотека для бинарной сериализации луашных данных.
Лицензия: MIT.
Текущая версия: 0.1.1 (архив).

С библиотекой можно работать как из Луа, так и напрямую из C/C++.

Основное назначение luabins — сериализация данных для Lua-to-Lua RPC вызовов. При этом библиотека отлично подходит и для хранения простых данных.

Luabins поддерживает примитивные типы: nil, boolean, number и string. Поддерживаются нерекурсивные таблицы разумной вложенности (250 уровней по умолчанию, настраиваемо).

Luabins намеренно не поддерживает рекурсивные таблицы, функции, корутины и userdata. (Если нужна сериализация этих типов — вам к Pluto.)

Наивный пример работы на Lua:
Работа через luabins существенно быстрее чем сохранение и загрузка данных через луашный код в духе tstr и tserialize.

Размер сохранённых данных обычно больше, чем при сохранении в луашный код. (В основном из-за представления целых чисел в виде double; это та же проблема, что и при компиляции луашных исходников в байт-код.) В следующих версиях запланированы оптимизации на эту тему.

Luabins намеренно не сохраняет и не проверяет никакую мета-информацию о данных (включая версию формата!). Если нужно, эту информацию нужно подклеивать к данным руками.

Luabins пытается защищаться от враждебных (или просто неверных) данных при загрузке. Делаются проверки на переполнение и на переаллокацию.

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

Дополнительное чтение: