1. A computer-implemented process comprising: receiving metadata into memory describing application programming interfaces of an operating system; receiving an indication of a named element in a program in a target programming language referring to an element of one of the application programming interfaces of the operating system; and using the metadata, creating a projection element in the program in the target programming language, the projection element being a projection of the element of the application programming interface of the operating system to the named element in the program, such that at runtime, the projection element in the program allows the program to access the application program interface of the operating system; wherein the projection element marshals data between an operating system representation and an application representation according to type; wherein the metadata is stored in a metadata file, wherein the metadata file describes elements of the application programming interface in a machine readable programming language independent format and is stored in a standard file format in a known location as part of the operating system.