extracted from #367 * extern vs packed vs unspecified. extern means C ABI. * use unspecified layout or packed layout unless you need C ABI