<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Language_binding</id>
	<title>Language binding - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Language_binding"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Language_binding&amp;action=history"/>
	<updated>2026-10-26T04:32:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Language_binding&amp;diff=2112189&amp;oldid=prev</id>
		<title>imported&gt;Shardul.chiplunkar: Undid revision 1044834982 by 2001:F40:905:48C4:C8AA:9600:204B:9C39 (grammar)</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Language_binding&amp;diff=2112189&amp;oldid=prev"/>
		<updated>2024-09-25T13:44:14Z</updated>

		<summary type="html">&lt;p&gt;Undid revision &lt;a href=&quot;/wiki143/index.php?title=Special:Diff/1044834982&quot; title=&quot;Special:Diff/1044834982&quot;&gt;1044834982&lt;/a&gt; by &lt;a href=&quot;/wiki143/index.php?title=Special:Contributions/2001:F40:905:48C4:C8AA:9600:204B:9C39&quot; title=&quot;Special:Contributions/2001:F40:905:48C4:C8AA:9600:204B:9C39&quot;&gt;2001:F40:905:48C4:C8AA:9600:204B:9C39&lt;/a&gt; (grammar)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Software library that allows using another library coded in another programming language}}&lt;br /&gt;
&lt;br /&gt;
In [[Computer programming|programming]] and [[software design]], a &amp;#039;&amp;#039;&amp;#039;binding&amp;#039;&amp;#039;&amp;#039; is an [[application programming interface]] (API) that provides [[glue code]] specifically made to allow a [[programming language]] to use a foreign [[Library (computer science)|library]] or [[operating system]] service (one that is not native to that language).&lt;br /&gt;
&lt;br /&gt;
==Characteristics==&lt;br /&gt;
Binding generally refers to a mapping of one thing to another. In the context of [[Library (computing)|software libraries]], bindings are [[wrapper library|wrapper libraries]] that bridge two [[programming language]]s, so that a [[Library (computing)|library]] written for one language can be used in another language.&amp;lt;ref&amp;gt;{{cite web|url=http://www.cairographics.org/manual/language-bindings.html |title=Appendix A. Creating a language binding for cairo |publisher=Cairographics.org |access-date=2014-04-02}}&amp;lt;/ref&amp;gt;  Many software libraries are written in [[system programming language]]s such as [[C (programming language)|C]] or [[C++]]. To use such libraries from another language, usually of [[High-level programming language|higher-level]], such as [[Java (programming language)|Java]], [[Common Lisp]], [[Scheme (programming language)|Scheme]], [[Python (programming language)|Python]], or [[Lua (programming language)|Lua]], a binding to the library must be created in that language, possibly requiring [[Compiler|recompiling]] the language&amp;#039;s code, depending on the amount of modification needed.&amp;lt;ref&amp;gt;{{cite web |url=http://www.acm.org/tsc/apis.html |title=Standards, APIs, Interfaces and Bindings |publisher=Acm.org |access-date=2014-04-02 |archive-url=https://web.archive.org/web/20150116081559/http://www.acm.org/tsc/apis.html |archive-date=2015-01-16 |url-status=dead }}&amp;lt;/ref&amp;gt; However, most languages offer a [[foreign function interface]], such as Python&amp;#039;s and [[OCaml]]&amp;#039;s &amp;lt;code&amp;gt;ctypes&amp;lt;/code&amp;gt;, and [[Embeddable Common Lisp]]&amp;#039;s &amp;lt;code&amp;gt;cffi&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;uffi&amp;lt;/code&amp;gt;.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.python.org/3/library/ctypes.html |title=ctypes – A foreign function library for Python |work=Python v3.8.3 documentation |publisher=Docs.python.org |access-date=2020-06-04}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web&lt;br /&gt;
 |url= https://realworldocaml.org/v1/en/html/foreign-function-interface.html&lt;br /&gt;
 |title= Real Worl OCaml, Chapter 19. Foreign Function Interface&lt;br /&gt;
 |year= 2013 |access-date= 2015-07-19&lt;br /&gt;
 |last= Hickey |first= Jason |last2= Madhavapeddy |first2= Anil |last3= Minsky |first3= Yaron&lt;br /&gt;
 |website= realworldocaml.org&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=http://common-lisp.net/project/cffi/manual/html_node/Introduction.html#Introduction |title=Introduction – CFFI User Manual |publisher=Common-lisp.net |access-date=2014-04-02}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, [[Python (programming language)|Python]] bindings are used when an extant C library, written for some purpose, is to be used from Python. Another example is &amp;lt;code&amp;gt;libsvn&amp;lt;/code&amp;gt; which is written in C to provide an API to access the [[Apache Subversion|Subversion]] [[software repository]]. To access Subversion from within Java code, &amp;lt;code&amp;gt;libsvnjavahl&amp;lt;/code&amp;gt; can be used, which depends on &amp;lt;code&amp;gt;libsvn&amp;lt;/code&amp;gt; being installed and acts as a bridge between the language Java and &amp;lt;code&amp;gt;libsvn&amp;lt;/code&amp;gt;, thus providing an API that invokes functions from &amp;lt;code&amp;gt;libsvn&amp;lt;/code&amp;gt; to do the work.&amp;lt;ref&amp;gt;{{cite web |url=http://subclipse.tigris.org/wiki/JavaHL |title=Subversion JavaHL FAQ |publisher=Subclipse.tigris.org |date=2013-06-18 |access-date=2014-04-02}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Major motives to create library bindings include [[software reuse]], to reduce reimplementing a library in several languages, and the difficulty of implementing some [[algorithm]]s efficiently in some high-level languages.&lt;br /&gt;
&lt;br /&gt;
==Runtime environment==&lt;br /&gt;
{{expand section|date=November 2016}}&lt;br /&gt;
&lt;br /&gt;
===Object models===&lt;br /&gt;
{{Further|Object model}}&lt;br /&gt;
* [[Common Object Request Broker Architecture]] (CORBA) – [[cross-platform]]-language model&lt;br /&gt;
* [[Component Object Model]] (COM) – [[Microsoft Windows]] only cross-language model&lt;br /&gt;
** [[Distributed Component Object Model]] (DCOM) – extension enabling COM to work over networks&lt;br /&gt;
** Cross Platform Component Object Model ([[XPCOM]]) – Mozilla applications [[cross-platform]] model&lt;br /&gt;
* [[Common Language Infrastructure]] – [[.NET Framework]] [[cross-platform]]-language model&lt;br /&gt;
* [[Freedesktop.org]] [[D-Bus]] – open [[cross-platform]]-language model&lt;br /&gt;
&lt;br /&gt;
{{expand section|date=November 2016}}&lt;br /&gt;
&lt;br /&gt;
===Virtual machines===&lt;br /&gt;
{{Further|Virtual machine}}&lt;br /&gt;
* [[Comparison of application virtual machines]]&lt;br /&gt;
&lt;br /&gt;
{{expand section|date=November 2016}}&lt;br /&gt;
&lt;br /&gt;
==Porting==&lt;br /&gt;
{{Further|Porting}}&lt;br /&gt;
* [[Portable object (computing)|Portable object]] – [[cross-platform]]-language object model definition&lt;br /&gt;
&lt;br /&gt;
{{expand section|date=November 2016}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{prose|date=November 2016}}&lt;br /&gt;
{{Portal|Computer programming}}&lt;br /&gt;
&lt;br /&gt;
{{Div col|colwidth=50em}}&lt;br /&gt;
* [[Application programming interface]] (API)&lt;br /&gt;
* [[Application binary interface]] (ABI)&lt;br /&gt;
* [[Calling convention]]&lt;br /&gt;
* [[Embedded SQL]]&lt;br /&gt;
* [[Name mangling]]&lt;br /&gt;
* Simplified Wrapper and Interface Generator ([[SWIG]]) – interface binding generator from many languages to many languages, open-source&lt;br /&gt;
* [[Wrapper function]]&lt;br /&gt;
{{div col end}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://www.open-std.org/JTC1/SC22/WG11/ JTC1/SC22/WG11 - Binding Techniques], an ISO standard for language bindings&lt;br /&gt;
*[https://stackoverflow.com/questions/25865/what-is-a-language-binding What is a language binding?]&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Compilers]]&lt;br /&gt;
[[Category:Computer libraries]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{compu-lang-stub}}&lt;/div&gt;</summary>
		<author><name>imported&gt;Shardul.chiplunkar</name></author>
	</entry>
</feed>