Накропал модуль для разбора запроса HTTP.
LUA оказалась весьма прожорливой в отношении памяти:
>print(node.heap() )
15520
> http = require( "http")
> print(node.heap() )
6552
В общем-то это было ожидаемо, но чтобы настолько?.. Описание функций в начале файла
http.lua. Можно выкинуть разбор таблицы
["header"] для экономии памяти. В первом посте будет не вложение, а ссылка на DropBox
UPD 01-01-2015 Всё страньше и страньше, как говорила Алиса. Выяснилось слабое место идеологии. LUA - Это интерпретатор, а он крутит всё в памяти, которой и так очень немного.
Например, довольно короткая по меркам Си
функция съедает 1688 байт. Если выкинуть содержимое строк - то 767 байт, на то чтобы обозначить функцию, выдающую длинную строку.
Файловая система позволяет хранить файлы, проверял до 80 кбайт, что явно не удержать в памяти. В то же время - функции можно переопределять на лету. Эти две особенности оставляют лазейку - держать всё в файлах, и на лету переопределять функции. Механизм обратного вызова тоже есть, но пока не разобрался. Это может помочь реализовать что-то вроде потоков, если цена в байтах не окажется сильно высока.