Jump to content

Language binding

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 2a01:4c8:101f:c51f:247e:7877:c3ab:e1c (talk) at 23:09, 2 November 2017 (Fixed typo). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computing, a binding from a programming language to a library or operating system service is an application programming interface (API) providing glue code to use that library or service in a given programming language.

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, 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

References

  1. ^ "Appendix A. Creating a language binding for cairo". Cairographics.org. Retrieved 2014-04-02.
  2. ^ "Standards, APIs, Interfaces and Bindings". Acm.org. Retrieved 2014-04-02.
  3. ^ "15.17. ctypes – A foreign function library for Python". Python v2.7.6 documentation. Docs.python.org. Retrieved 2014-04-02.
  4. ^ Hickey, Jason; Madhavapeddy, Anil; Minsky, Yaron (2013). "Real Worl OCaml, Chapter 19. Foreign Function Interface". realworldocaml.org. Retrieved 2015-07-19.
  5. ^ "Introduction – CFFI User Manual". Common-lisp.net. Retrieved 2014-04-02.
  6. ^ "Subversion JavaHL FAQ". Subclipse.tigris.org. 2013-06-18. Retrieved 2014-04-02.