It seems OSL is a bit less renderer agnostic than I was expecting. Is cross-DCC eval a goal of OSL, or are these differences expected/accepted? I couldn't find any info on an official way to get the current renderer, but that would help if OSL is expected to have these kinds of discrepancies. I'm thinking a standardized way to ifdef according to renderer (not sure how that would be standardized). Or even a runtime call would help for these edge cases.
@Chris To answer your question. Currently I'm experimenting with interpolating tangents in screen space (tbd if it ever works). This may be an Arnold thing, but its tangents (dpdu, dpdv) are per triangle. I need this to compute a surface curvature map using the jacobian eigenvalues. Overall I'd say barycentric coords are very useful for any type of screen space interpolation.