Public headers are the ones in C<include/parrot> directory. These are included by embedders and extenders. They must not declare or define any symbol that isn't clearly Parrot-specific. Prefixing symbols with C<Parrot> or C<PARROT> is the easiest & safest way, but it can lead to a lot of verbosity, so I'm willing to entertain exceptions or new conventions.
It's OK for public headers might have non-public parts protected with C<#ifdef PARROT_IN_CORE>. Those non-public parts might #define shorter versions of the public symbols, e.g. C<#define foo Parrot_foo>. -- Chip Salzenberg <[EMAIL PROTECTED]>