Foreign-function interfaces for garbage-collected programming languages

Marcus Crestani

Programs in high-level, garbage-collected programming languages often need to access libraries that are written in other programming languages. A foreign-function interface provides a high-level language with access to low-level programming languages and negotiates between the inside and the outside world by taking care of the low-level details. In this paper, I provide an overview of what different kinds of foreign-function interfaces are in use in today's implementations of functional programming languages to help decide on the design of a new foreign-function interface for Scheme 48. Therefore, I revise several mechanisms and design ideas and compare them on usability, portability, memory consumption and thread safety. I discuss the garbage-collection related parts of foreign-function interfaces using Scheme as the high-level functional language and C as the external language.

Last updated 23 July 2008.

Valid XHTML 1.0!