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 используется в нескольких коммерческих проектах.

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

lua-phpserialize

Некоторое время назад я выложил v0.0.1 библиотеки lua-phpserialize.

Только теперь дошли руки написать об этом в блог. :-)

Части запланированных фичей нет (patches are welcome), но уже текущую версию библиотеки можно (и нужно) использовать для сохранения луашных данных в формат, понимаемый PHP-шным unserialize().

Очень удобно использовать для передачи данных из Lua в PHP.

Ограничения:

Как обычно, рекурсивные таблицы, функции и userdata не поддерживаются. Также, форматом PHP-шных массивов налагаются определённые ограничения на ключи.

Подробнее — здесь.

luadevtools

Слухи:

На Гитхабе появился проект luadevtools.

В проект добавлен Fabien Fleutot, автор metalua.

Проект создан от имени Sierra Wireless, работодателя Fabien'а.

Обещанное Fabien'ом наконец-то начало сбываться?

Ура!

20 нояб. 2009 г.

К вопросу о генераторах генераторов

Примечательный quine:

http://catap.ru/blog/2009/11/09/one-japan-man/

Ruby -> Python -> Erlang -> Perl -> Lua
-> OCaml -> Haskell -> C -> Java -> BrainFuck
-> Shell -> Whitespace -> Unlambda
-> Ruby

19 нояб. 2009 г.

Erlang/OTP переезжает на GitHub

Пруфлинк

100



Планка в сто постов в год преодолена!

Ура!



Paul Graham on Apple's AppStore

When you look at the famous 1984 ad now, it's easier to imagine Apple as the dictator on the screen than the woman with the hammer. In fact, if you read the dictator's speech it sounds uncannily like a prophecy of the App Store.
We have triumphed over the unprincipled dissemination of facts.

We have created, for the first time in all history, a garden of pure ideology, where each worker may bloom secure from the pests of contradictory and confusing truths.
Paul Graham, Apple's Mistake.