Hello list, Since anonymous FFI callbacks are anchored permanently, and explicitly call cb:free() every time is pretty troublesome too, is it considered good to do this? local cb = ffi.gc(ffi.cast("CALLBACK", function() end), function(self) self:free() end) cb() cb = nil collectgarbage("collect") I did print some messages in the callback body and the finalizer body to verify it's working. Or is there a better way? best regards, Johnson