Golo (programming language)

{{more footnotes|date=November 2015}}

{{Infobox programming language

| name = Golo

| released = {{Start date and age|2012}}

| developer = INSA Lyon

| latest release version = 3.4.0

| latest release date = {{Start date and age|2021|10|20}}

| typing = Dynamic, weak

| platform = Java virtual machine

| operating system = Cross-platform

| license = Eclipse Public 2.0

| website = {{URL|golo-lang.org}}

}}

Golo is computer software, a programming language for the Java virtual machine (JVM). It is simple, with dynamic, 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 (INSA). It is distributed as free and open-source software under the Eclipse Public License 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 and other JVM languages (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 project. The project was terminated in September 2022.{{cite web |title=Termination Review |url=https://projects.eclipse.org/projects/technology.golo/reviews/termination-review |website=projects.eclipse.org |date=29 August 2022 |access-date=24 October 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. 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 (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 the [http://2015.ecoop.org/track/COP-2015-papers 7th International Workshop on Context-Oriented Programming] hosted 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 [https://arxiv.org/abs/1505.06003 arXiv:1505.06003 (cs.PL)] and [https://hal.inria.fr/hal-01151626 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. of [https://web.archive.org/web/20150624024800/http://pppj2013.dhbw.de/conference-pppj2013.html PPPJ'13]. Stuttgart, Germany. September 2013. [https://dx.doi.org/10.1145/2500828.2500844 DOI link]. [http://hal.inria.fr/hal-00848514 HAL-INRIA deposit]. [https://speakerdeck.com/jponge/golo-a-dynamic-light-and-efficient-language-for-post-invokedynamic-jvm Slides].

See also

{{Portal|Free and open-source software}}

References

{{Reflist}}

  • {{cite web|title=Golo – A Lightweight Dynamic Language for the JVM|url=https://blogs.oracle.com/java/entry/golo_a_lightweight_dynamic_language|accessdate=2 July 2015|archive-url=https://web.archive.org/web/20150703100856/https://blogs.oracle.com/java/entry/golo_a_lightweight_dynamic_language|archive-date=3 July 2015|url-status=dead}}
  • {{cite web|title=Golo nominated for JAX Awards 2014|url=https://jax.de/awards2014/nominees|accessdate=2 July 2015}}
  • {{cite web|title=Golo entry at JAX Awards 2014|url=https://jax.de/awards2014/golo-programming-language|accessdate=2 July 2015}}
  • {{cite web|title=Golo mentioned at the Netbeans Weekly News Issue 587|url=https://netbeans.org/community/news/newsletter/2013-05-13.html|accessdate=2 July 2015|archive-date=2015-07-04|archive-url=https://web.archive.org/web/20150704035255/https://netbeans.org/community/news/newsletter/2013-05-13.html|url-status=dead}}]