1. A method performed by an interface definition language compiler, the method comprising: based on receipt of a compile command that indicates a target version and a target program language for an interface definition language program code that includes a plurality of code sections and a plurality of compile directives that indicate versions, selecting from the plurality of code sections a set of code sections to compile, wherein the selecting is based, at least in part, on the target version and on the plurality of compile directives, wherein selecting based, at least in part, on the target version and on the plurality of compile directives comprises determining a set of the plurality of compile directives that indicates the target version or a range of versions that encompass the target version; determining whether a change between a first of the set of code sections and a second of the set of code sections causes a semantic error, wherein the first code section is associated with a first of a set of compile directives that indicates a first range of versions and the second code section is associated with a second of the set of compile directives that indicates a second range of versions; and providing the set of code sections for generation of an intermediate representation of the set of code sections in response to a determination that no semantic error is caused by a change among the set of code sections corresponding to different version ranges.