This can come up if, for example, you build an OIIO using a static Imath library that's more recent (3.x) than what you're forced to use for your OSL build (2.4). (Don't ask, you don't want to know.) So OSL needs to see half.h before we include any OIIO headers. But it's the OIIO headers that adjudicated where we get half.h from, so we need to be a little more explicit in, of all places, rend_lib.h of testrender.
This can come up if, for example, you build an OIIO using a static Imath library that's more recent (3.x) than what you're forced to use for your OSL build (2.4). (Don't ask, you don't want to know.) So OSL needs to see half.h before we include any OIIO headers. But it's the OIIO headers that adjudicated where we get half.h from, so we need to be a little more explicit in, of all places, rend_lib.h of testrender.