C APIs in Extension and Extensible Languages
Hisham Muhammad (Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO), Brazil)
Roberto Ierusalimschy (Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO), Brazil)
Abstract: Scripting languages are used in conjuction with C code in two ways: as extension languages, where the interpreter is embedded as a library into an application; or as extensible languages, where the interpreter loads C code as add-on modules. These two scenarios share many similarities, as in both of them two-way communication of code and data needs to take place. However, the differences between them impose design tradeoffs that affect the C API that bridges the two languages, often making a scripting language more suitable for extending than embedding, or vice-versa. This paper discusses how these tradeoffs are handled in the APIs of popular scripting languages, and the impact on their use as embedded or extensible languages.
Keywords: application programming interfaces, programming languages
Categories: D.3.2, D.3.4