Libffi
   HOME





Libffi
libffi is a foreign function interface library. It provides a C programming language interface for calling natively compiled functions given information about the target function at run time instead of compile time. It also implements the opposite functionality: libffi can produce a pointer to a function that can accept and decode any combination of arguments defined at run time. libffi is most often used as a bridging technology between compiled and interpreted language implementations. libffi may also be used to implement plug-ins, where the plug-in's function signatures are not known at the time of creating the host application. Notable users include Python, Haskell, Dalvik, F-Script, PyPy, PyObjC, RubyCocoa, JRuby, Rubinius, MacRuby, gcj, GNU Smalltalk, IcedTea, Cycript, Pawn, Java Native Access, Common Lisp (via CFFI), Racket, Embeddable Common Lisp and Mozilla. On Mac OS X, libffi is commonly used with BridgeSupport, which provides programming language neut ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


RubyCocoa
RubyCocoa is a macOS framework that provides a bridge between the Ruby and the Objective-C programming languages, allowing the user to manipulate Objective-C objects from Ruby, and vice versa. It makes it possible to write a Cocoa application completely in Ruby as well as to write an application that mixes Ruby and Objective-C code. An Apple project called MacRuby was under development to replace RubyCocoa in 2008. A proprietary spin-off called RubyMotion was subsequently released in 2012, available for iOS, macOS and Android. RubyCocoa is used for exploration of a Cocoa object's features with irb interactively, prototyping of a Cocoa application, writing a Cocoa application that combines the features of Ruby and Objective-C, and wrapping macOS' native GUI for a Ruby script. RubyCocoa is free software, released under both the Ruby License and the LGPL. History RubyCocoa was started in 2001 by Hisakuni Fujimoto when he implemented a Ruby extension module to wrap NSObject an ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


PyObjC
PyObjC is a bidirectional bridge between the Python and Objective-C programming languages, allowing programmers to use and extend existing Objective-C libraries, such as Apple's Cocoa framework, using Python. PyObjC is used to develop macOS applications in pure Python. There is also limited support for GNUstep, an open source, cross-platform implementation of Cocoa. For Python programmers The most important usage of PyObjC is enabling programmers to create GUI applications using Cocoa libraries in pure Python. Moreover, as an effect of Objective-C's close relationship with the C programming language (it is a pure superset), developers are also able to incorporate any C-based API by wrapping it with an Objective-C wrapper and then using the wrapped code over the PyObjC bridge. Using Objective-C++, the same can be done with C%2B%2B libraries. For Objective-C programmers Cocoa developers may also benefit, as tasks written in Python generally take fewer lines than the Objecti ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Foreign Function Interface
A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written or compiled in another one. An FFI is often used in contexts where calls are made into a binary dynamic-link library. Naming The term comes from the specification for Common Lisp, which explicitly refers to the programming language feature enabling for inter-language calls as such; the term is also often used officially by the interpreter and compiler documentation for Haskell, Rust, PHP, Python, and LuaJIT ( Lua). Other languages use other terminology: Ada has ''language bindings'', while Java has '' Java Native Interface'' (JNI) or '' Java Native Access'' (JNA). Foreign function interface has become generic terminology for mechanisms which provide such services. Operation The primary function of a foreign function interface is to mate the semantics and calling conventions of one programming language (the ''host'' lan ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

C (programming Language)
C (''pronounced'' '' – like the letter c'') is a general-purpose programming language. It was created in the 1970s by Dennis Ritchie and remains very widely used and influential. By design, C's features cleanly reflect the capabilities of the targeted Central processing unit, CPUs. It has found lasting use in operating systems code (especially in Kernel (operating system), kernels), device drivers, and protocol stacks, but its use in application software has been decreasing. C is commonly used on computer architectures that range from the largest supercomputers to the smallest microcontrollers and embedded systems. A successor to the programming language B (programming language), B, C was originally developed at Bell Labs by Ritchie between 1972 and 1973 to construct utilities running on Unix. It was applied to re-implementing the kernel of the Unix operating system. During the 1980s, C gradually gained popularity. It has become one of the most widely used programming langu ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Plug-in (computing)
In computing, a plug-in (also spelled plugin) or add-in (also addin, add-on, or addon) is a software component that extends the functionality of an existing software system without requiring the system to be software build, re-built. A plug-in software feature, feature is one way that a system can be customizable. Applications support plug-ins for a variety of reasons including: * Enable third-party developers to extend an application * Support easily adding new features * Reduce the size of an application by not loading unused features * Separate source code from an application because of incompatible software licenses Examples Examples of plug-in use for various categories of applications: * Digital audio workstations and audio editing software use audio plug-ins to generate, process or analyze sound. Ardour (software), Ardour, Audacity (audio editor), Audacity, Cubase, FL Studio, Logic Pro, Logic Pro X and Pro Tools are examples of such systems. * Email clients use plug-i ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

IcedTea
IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. IcedTea also includes some addon libraries: IcedTea-Web is a free software implementation of Java Web Start and the Java web browser applet plugin. IcedTea-Sound is a collection of plugins for the Java sound subsystem, including the PulseAudio provider which used to be included with IcedTea. The Free Software Foundation recommends that all Java programmers use IcedTea as their development environment. Historically, the initial goal of the IcedTea project was to make the OpenJDK software, which Sun Microsystems released as free software in 2007, usable without requiring any proprietary software, and hence make it possible to add OpenJDK to Fedora and other Linux distributions that insist on free software. This goal was met, and a version of IcedTea based on OpenJDK was packaged with Fedora 8 in November 2007. April 2008 saw the first release of a new variant, IcedTea6, which is bas ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


GNU Compiler For Java
The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection. GCJ compiles Java source code to Java virtual machine (JVM) bytecode or to machine code for a number of CPU architectures. It could also compile class files and whole JARs that contain bytecode into machine code. History The GCJ runtime-libraries original source is from GNU Classpath project, but there is a code difference between the libgcj libraries. GCJ 4.3 uses the Eclipse Compiler for Java as a front-end. In 2007, a lot of work was done to implement support for Java's two graphical APIs in GNU Classpath: AWT and Swing. Software support for AWT is still in development. "Once AWT support is working then Swing support can be considered. There is at least one free-software partial implementations of Swing that may be usable.". The GNU CLASSPATH was never completed to even Java 1.2 status and now appears to have been abandoned co ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




MacRuby
MacRuby is a discontinued implementation of the Ruby language that ran on the Objective-C runtime and CoreFoundation framework under development by Apple Inc. which "was supposed to replace RubyCocoa". It targeted Ruby 1.9 and used the high performance LLVM compiler infrastructure starting with version 0.5. It supports both ahead-of-time and just-in-time compilation. MacRuby supported Interface Builder and shipped with a core library called HotCocoa to simplify Cocoa programming. MacRuby was also used as an embedded scripting language for Objective-C applications. In May 2012, Laurent Sansonetti announced RubyMotion, a port of MacRuby for iOS, OS X and Android.RubyMotion - About
RubyMotion.com. Retrieved July 20, 2012.
Development on MacRuby effectively ended in late 2011, coinciding with the principal author's departure f ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Rubinius
Rubinius is an alternative Ruby implementation created by Evan Phoenix. Based loosely on the Smalltalk-80 ''Blue Book'' design, Rubinius seeks to "provide a rich, high-performance environment for running Ruby code." Goals Rubinius follows in the Lisp and Smalltalk traditions, by natively implementing as much of Ruby as possible in Ruby code. It also has a goal of being thread-safe in order to be able to embed more than one interpreter in a single application. Sponsorship From 2007 to 2013, Engine Yard funded one full-time engineer to work exclusively on Rubinius. Evan Phoenix now works at HashiCorp. PowerPC64 support Since version 2.4.0, support on PowerPC64 is enabled. See also * Jikes RVM * JRuby * MacRuby *MagLev * Parrot virtual machine * PyPy * Squawk * Squeak Squeak is an object-oriented, class-based, and reflective programming language. It was derived from Smalltalk-80 by a group that included some of Smalltalk-80's original developers, initially a ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


JRuby
JRuby is an implementation of the Ruby programming language atop the Java Virtual Machine, written largely in Java. It is free software released under a three-way EPL/ GPL/LGPL license. JRuby is tightly integrated with Java to allow the embedding of the interpreter into any Java application with full two-way access between the Java and the Ruby code (similar to Jython for the Python language). JRuby's lead developers are Charles Oliver Nutter and Thomas Enebo, with many current and past contributors including Ola Bini and Nick Sieger. In September 2006, Sun Microsystems hired Enebo and Nutter to work on JRuby full-time. In June 2007, ThoughtWorks hired Ola Bini to work on Ruby and JRuby. In July 2009, the JRuby developers left Sun to continue JRuby development at Engine Yard. In May 2012, Nutter and Enebo left Engine Yard to work on JRuby at Red Hat. History JRuby was originally created by Jan Arne Petersen, in 2001. At that time and for several years following, the code ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]