Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machi 2013
DOI: 10.1145/2500828.2500844
|View full text |Cite
|
Sign up to set email alerts
|

Golo, a dynamic, light and efficient language for post-invokedynamic JVM

Abstract: This paper introduces Golo, a simple dynamic programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the new Java 7 invokedynamic instruction and API (JSR 292). Golo has its own language constructs being designed with invokedynamic in mind, whereas existing dynamic languages for the JVM such as Groovy, JRuby or Nashorn have to adapt language constructions which are sometimes hard to optimize. Coupled with a minimal runtime that directly uses the Java SE AP… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
6
0

Year Published

2015
2015
2023
2023

Publication Types

Select...
6
2

Relationship

3
5

Authors

Journals

citations
Cited by 9 publications
(6 citation statements)
references
References 10 publications
0
6
0
Order By: Relevance
“…Golo is a simple dynamically-typed programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the Java 7 invokedynamic bytecode instruction and java.lang.invoke API (JSR 292) (Ponge, Le Mouël, and Stouls 2013) (Thalinger and Rose 2010). Coupled with a minimal runtime that directly uses the Java SE API, Golo is an interesting language for rapid prototyping, polyglot application embedding, research (e.g., runtime extensions, language prototyping) and teaching (e.g., programming, dynamic language runtime implementation) (Maingret et al 2015) .…”
Section: Discussionmentioning
confidence: 99%
“…Golo is a simple dynamically-typed programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the Java 7 invokedynamic bytecode instruction and java.lang.invoke API (JSR 292) (Ponge, Le Mouël, and Stouls 2013) (Thalinger and Rose 2010). Coupled with a minimal runtime that directly uses the Java SE API, Golo is an interesting language for rapid prototyping, polyglot application embedding, research (e.g., runtime extensions, language prototyping) and teaching (e.g., programming, dynamic language runtime implementation) (Maingret et al 2015) .…”
Section: Discussionmentioning
confidence: 99%
“…Applications have been found in Internet of Things (IoT) settings, and we consider Golo to be small enough to be used for language and runtime experiments by researchers, students and hobbyists. This claim is supported by examples such as ConGolo, a derivative experiment for contextual programming 1 , and the community projects 2 . Golo is currently being proposed for incubation at the Eclipse Foundation in the hope of finding new opportunities and continuing the development at a vendor-neutral foundation 3 .…”
Section: Introductionmentioning
confidence: 85%
“…Golo is a simple dynamically-typed language for the Java Virtual Machine [1]. Initially designed as an experiment around the capabilities of the new invokedynamic JVM instruction that appeared in Java SE 7 [2], it has since emerged as a language supported by a small community that goes beyond the bounds of academia.…”
Section: Introductionmentioning
confidence: 99%
“…4 Dynamic languages on the JVM were naturally the first users of this new functionality (JRuby [40,77], Jython [3], the Nashorn JavaScript engine [31], Groovy [71], Redline Smalltalk [43], and a significant subset of PHP [12]), as they could improve their performance [55]. The invokedynamic instruction even inspired the creation of at least one new JVM-based language [58]. Moreover, this new capability was used for other applications, such as live code modification [59], aspect-oriented programming [39], context-oriented programming [2, 34], multiple dispatch/multi-methods (a generalization of object-oriented dynamic dispatch to take more than one method arguments into consideration when choosing the target method of an invocation) [42], lazy computations [42, 15], generics specialization [20], implementation of actors [38], and dynamically adaptable binary compatibility via cross-component dynamic linking [28].…”
Section: The Invokedynamic Instructionmentioning
confidence: 99%