Отчёт об исследованиях луёво-сишной апишки:
1. Full userdata это типа размеченный блок памяти, имеет метаметоды;
2. Light userdata — это просто указатель на какие-то сишные данные, метаметодов не имеет, даже __gc, соответственно необходимо управлять сборкой с сишной стороны. Но в full userdata можно впилить указатель на указатель, и получить типа light userdata с метаметодами.
Я себе для таких дел пару функций накидал. Получилось удобно, но не очень красиво. (Функция setup нужна, чтобы при создании юзердаты можно было в регистровую таблицу cs_data внести необходимые данные, например, сишные структуры-вектора, чтобы потом их можно было менять, при обращении к этой юзердате по средствам геттеров и сеттеров)