Golo is computer
software
Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which the system is built and which actually performs the work.
...
, a
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
for the
Java virtual machine (JVM). It is simple, with
dynamic
Dynamics (from Greek δυναμικός ''dynamikos'' "powerful", from δύναμις ''dynamis'' "power") or dynamic may refer to:
Physics and engineering
* Dynamics (mechanics)
** Aerodynamics, the study of the motion of air
** Analytical dyna ...
,
weak typing. It was created in 2012 as part of the research activities of the DynaMid group of the Centre of Innovation in Telecommunications and Integration of service (CITI) Laboratory at
Institut national des sciences appliquées de Lyon
An institute is an organisational body created for a certain purpose. They are often research organisations (research institutes) created to do research on specific topics, or can also be a professional body.
In some countries, institutes can ...
(INSA). It is distributed as
free and open-source software under the
Eclipse Public License
The Eclipse Public License (EPL) is a free and open source software license most notably used for the Eclipse IDE and other projects by the Eclipse Foundation. It replaces the Common Public License (CPL) and removes certain terms relating to ...
2.0.
History
It has been built as a showcase on how to build a language runtime with
invokedynamic
. Golo is largely interoperable with the programming language
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
and other
JVM languages
This list of JVM Languages comprises notable computer programming languages that are used to produce computer software that runs on the Java virtual machine (JVM). Some of these languages are interpreted by a Java program, and some are compiled ...
(e.g., numeric types are boxing classes from
java.lang
, and collection literals leverage
java.util
classes), that runs on the JVM.
In June 2015, Golo became an official
Eclipse Foundation
The Eclipse Foundation AISBL is an independent, Europe-based not-for-profit corporation that acts as a steward of the Eclipse open source software development community, with legal jurisdiction in the European Union. It is an organization suppo ...
project. The project was terminated in September 2022.
Technical details
The language features have been initially designed around the abilities of invokedynamic – JSR 292 that appeared in Java SE 7. Golo uses
ahead-of-time compilation of
bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (norma ...
. While the bytecode remains stable over a program execution, the
invokedynamic
-based reconfigurable call sites support the adaptive dispatch mechanisms put in place for helping the
HotSpot just-in-time compiler
In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compilation during execution of a program (at run time) rather than before execution. This may cons ...
(JIT) to extract reasonable performance.
Publications
* Baptiste Maingret, Frédéric Le Mouël, Julien Ponge, Nicolas Stouls, Jian Cia and Yannick Loiseau. Towards a Decoupled Context-Oriented Programming Language for the Internet of Things. To appear in th
7th International Workshop on Context-Oriented Programminghosted at ECOOP 2015. Prague, Czech Republic. July 2015.
* Julien Ponge, Frédéric Le Mouël, Nicolas Stouls, Yannick Loiseau. Opportunities for a Truffle-based Golo Interpreter. Technical report''
arXiv:1505.06003 (cs.PL)an
HAL-INRIA deposit* Julien Ponge, Frédéric Le Mouël and Nicolas Stouls. Golo, a Dynamic, Light and Efficient Language for Post-Invokedynamic JVM. In Procs. o
Stuttgart, Germany. September 2013
DOI linkHAL-INRIA depositSlides
See also
*
List of JVM languages
This list of JVM Languages comprises notable computer programming languages that are used to produce computer software that runs on the Java virtual machine (JVM). Some of these languages are interpreted by a Java program, and some are compiled ...
References
*
*
*
* ]
External links
* {{Official website, golo-lang.org
Golo at GitHub repositoryGolo incubation page at Eclipse.orgEclipse integration for GoloNetbeans module to support Golo
Programming languages
JVM programming languages
Software using the Eclipse license