Apache Thrift IDL
The Thrift Interface Definition Language (IDL) is used to define data types and service interfaces in a language-neutral format. A .thrift file defines structs, enums, exceptions, typedefs, constants, and services with typed method signatures. The thrift compiler generates client and server code from .thrift files for over 20 target languages including Java, Python, C++, Go, JavaScript, PHP, Ruby, Erlang, and Haskell.