1. simplify resource management by using C++ RAII like GCC attribute extension `cleanup`
2. simplify HEKY reading
Actually `__attribute__((__cleanup__(cleanupFn)))` is supported on all major C compiler ( gcc, clang and icc ) except MSVC I only used it on Windows and macOS for now. Let's see if the project author like it.