Language binding explained

In programming and software design, binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to that language).

Characteristics

Binding generally refers to a mapping of one thing to another. In the context of software libraries, bindings are wrapper libraries that bridge two programming languages, so that a library written for one language can be used in another language.[1] Many software libraries are written in system programming languages such as C or C++. To use such libraries from another language, usually of higher-level, such as Java, Common Lisp, Scheme, Python, or Lua, a binding to the library must be created in that language, possibly requiring recompiling the language's code, depending on the amount of modification needed.[2] However, most languages offer a foreign function interface, such as Python's and OCaml's ctypes, and Embeddable Common Lisp's cffi and uffi.[3] [4] [5]

For example, Python bindings are used when an extant C library, written for some purpose, is to be used from Python. Another example is libsvn which is written in C to provide an API to access the Subversion software repository. To access Subversion from within Java code, libsvnjavahl can be used, which depends on libsvn being installed and acts as a bridge between the language Java and libsvn, thus providing an API that invokes functions from libsvn to do the work.[6]

Major motives to create library bindings include software reuse, to reduce reimplementing a library in several languages, and the difficulty of implementing some algorithms efficiently in some high-level languages.

Runtime environment

Object models

Virtual machines

Porting

See also

External links

Notes and References

  1. Web site: Appendix A. Creating a language binding for cairo . Cairographics.org . 2014-04-02.
  2. Web site: Standards, APIs, Interfaces and Bindings . Acm.org . 2014-04-02 . https://web.archive.org/web/20150116081559/http://www.acm.org/tsc/apis.html . 2015-01-16 . dead .
  3. Web site: ctypes – A foreign function library for Python . Python v3.8.3 documentation . Docs.python.org . 2020-06-04.
  4. Web site: Real Worl OCaml, Chapter 19. Foreign Function Interface . 2013 . 2015-07-19 . Hickey . Jason . Madhavapeddy . Anil . Minsky . Yaron . realworldocaml.org.
  5. Web site: Introduction – CFFI User Manual . Common-lisp.net . 2014-04-02.
  6. Web site: Subversion JavaHL FAQ . Subclipse.tigris.org . 2013-06-18 . 2014-04-02.