Why?

Partially for my own purposes; every time I created a project I found myself copying the same code into it, which certainly got old, and having to maintain twenty copies of the same thing is definitely not fun. That said, the real reason is that I constantly noticed that other projects didn't do the same thing. They simply omitted the features that Hedley makes available… features which help improve security, stability, and performance. I want software I rely on to be safe, stable, and fast, even if I didn't write it.

Can I use Hedley in public API?

Absolutely! Including multiple copies of Hedley will not cause a conflict. Just make sure the header is installed to a package-specific directory (e.g., /usr/include/your-library/hedley.h , not /usr/include/hedley.h ). The User Guide explains everything in more detail.

What is the license?

CC0, which is basically an attempt to put it in the public domain, or as close as possible.

Can I just copy the parts I need?

You can, but if you're exposing Hedley in your public API please change the namespace from HEDLEY to something else. If you don't it could cause problems for any other libraries which are using Hedley since your stripped-down version may not provide a macro someone else expects given the version of Hedley you claiming to support (by setting the value of HEDLEY_VERSION ).

Can you add support for «feature» ?

Maybe. The first rule is that if a feature isn't known to be supported it must be safe to fall back on pure C89. For example, it's not a big deal if the compiler doesn't have an implementation for HEDLEY_INLINE ; the macro is compiled down to nothing and the function may not be inlined, but that will not cause the code to stop functioning. On the other hand, we can't add support for thread-local storage because if the compiler doesn't support it and we simply don't emit a TLS modifier ( __thread , _Thread_local , __declspec(thread) , etc.) the behavior is completely different and the resulting program will almost certainly be broken. If a feature isn't a good fit for Hedley it very well may be a good fit for Portable Snippets.

Which compilers are supported?

“Hedley”?