Проверяю чистоту встраивания ruby в C. Выходит: finalize() не производит полную очистку. Или чего-то не хватает при инициализации, или есть ещё что-то к finalize(), или bug?
Минимальный пример:
// test_embed_ruby.c
// gcc -Wall -g -o test_embed_ruby test_embed_ruby.c -I/usr/include/ruby-1.9.1 -I/usr/include/ruby-1.9.1/x86_64-linux -lruby-1.9.1
#include <stdio.h>
#include <ruby.h>
void call_ruby(void)
{
printf("init...\n");
ruby_init();
printf("init_loadpath...\n");
ruby_init_loadpath();
printf("finalize...\n");
ruby_finalize();
}
int main(int argc, char *argv[])
{
printf("1\n");
call_ruby();
printf("2\n");
call_ruby();
return 0;
}