IUP is well designed, source code is clean and easy to read and it is easy to create bindings for it.
No overusing of weird macros, no large structs to define (IUP uses void pointers) or other C-isms that can be hard to translate over language barriers.
I tested to write bindings for PHP over FFI and it was trivial.
Main drawback is that the Mac support is experimental.