gcc got stricter about array accesses, complicating progs macros, and much better at detecting buffer overflows.
The api hides all the gory details of message buffer setup and usage (particularly the differences between writing and reading). Most importantly, the api provides a safe way to read and write binary data (always little endian).