Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3012408.3012411acmotherconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Trufflereloader: a low-overhead language-neutral reloader

Published: 17 July 2016 Publication History

Abstract

Updating running programs is a well-researched and increasingly popular feature of programming language implementations. While there are solutions targeting specific languages and platforms, implementing dynamic update for new languages can require significant effort. We have built TruffleReloader, a reusable dynamic updating solution, on top of the Truffle language implementation framework, and adapted the Truffle implementations of Python, Ruby and JavaScript to use this feature. We show how TruffleReloader adds reloading capabilities to these implementations requiring limited language-specific modifications. With Truffle's just-in-time compiler enabled, our solution incurs close to zero overhead on steady-state performance. This approach reduces the effort required to add dynamic update support for existing and future languages.

References

[1]
J. Arnold and M. F. Kaashoek. Ksplice: Automatic rebootless kernel updates. In Proceedings of the 4th ACM European conference on Computer systems, pages 187--198. ACM, 2009.
[2]
G. Chen, H. Jin, D. Zou, Z. Liang, B. B. Zhou, and H. Wang. A Framework for Practical Dynamic Software Updating. IEEE Transactions on Parallel and Distributed Systems, 27(4):941--950, Apr. 2016.
[3]
H. Chen, J. Yu, R. Chen, B. Zang, and P.-C. Yew. POLUS: A POwerful Live Updating System. In Proceedings of the 29th International Conference on Software Engineering, ICSE '07, pages 271--281. IEEE Computer Society, 2007.
[4]
R. P. Cook and I. Lee. Dymos: A dynamic modification system. In Proceedings of the Symposium on High-level Debugging, SIGSOFT '83, pages 201--202. ACM, 1983.
[5]
G. Duboscq, T. Würthinger, and H. Mössenböck. Speculation without regret: Reducing deoptimization meta-data in the graal compiler. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, PPPJ '14, pages 187--193. ACM, 2014.
[6]
R. S. Fabry. How to design a system in which modules can be changed on the fly. In Proceedings of the 2Nd International Conference on Software Engineering, ICSE '76, pages 470--476. IEEE Computer Society Press, 1976.
[7]
Y. Futamura. Partial evaluation of computation process---An approach to a compiler-compiler. Higher Order Symbol. Comput., 12(4):381--391, Dec. 1999.
[8]
C. Giuffrida, A. Kuijsten, and A. S. Tanenbaum. Safe and Automatic Live Update for Operating Systems. In Proceedings of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '13, pages 279--292. ACM, 2013.
[9]
A. R. Gregersen and B. N. Jorgensen. Dynamic update of java applications-balancing change flexibility vs programming transparency. Journal of Software Maintenance and Evolution: Research and Practice, 21(2):81--112, 2009.
[10]
M. Grimmer, M. Rigger, R. Schatz, L. Stadler, and H. Mössenböck. Trufflec: Dynamic execution of c on a java virtual machine. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, pages 17--26. ACM, 2014.
[11]
M. Grimmer, C. Seaton, R. Schatz, T. Würthinger, and H. Mössenböck. High-performance cross-language interoperability in a multi-language runtime. In Proceedings of the 11th Symposium on Dynamic Languages, DLS 2015, pages 78--90. ACM, 2015.
[12]
T. Gu, C. Cao, C. Xu, X. Ma, L. Zhang, and J. Lü. Low-disruptive dynamic updating of Java applications. Information and Software Technology, 56(9):1086--1098, Sept. 2014.
[13]
C. M. Hayden, K. Saur, E. K. Smith, M. Hicks, and J. S. Foster. Kitsune: Efficient, General-Purpose Dynamic Software Updating for C. ACM Trans. Program. Lang. Syst., 36(4):13:1--13:38, Oct. 2014.
[14]
M. Hicks and S. Nettles. Dynamic Software Updating. ACM Trans. Program. Lang. Syst., 27(6):1049--1096, Nov. 2005.
[15]
JRuby Team. bench9000. https://github.com/jruby/bench9000. [Online; accessed 02-04-2016].
[16]
J. Kabanov and V. Vene. A thousand years of productivity: the JRebel story. Software: Practice and Experience, 44(1):105--127, 2014.
[17]
S. Magill, M. Hicks, S. Subramanian, and K. S. McKinley. Automating Object Transformations for Dynamic Software Updating. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '12, pages 265--280. ACM, 2012.
[18]
I. Neamtiu and M. Hicks. Safe and Timely Updates to Multi-threaded Programs. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '09, pages 13--24. ACM, 2009.
[19]
I. Neamtiu, M. Hicks, G. Stoyle, and M. Oriol. Practical Dynamic Software Updating for C. In Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '06, pages 72--83. ACM, 2006.
[20]
Oracle. Package java.lang.instrument. https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html. [Online; accessed 19-03-2016].
[21]
Oracle. KSplice: Zero downtime updates for Oracle Linux. http://www.oracle.com/us/technologies/linux/ksplice-datasheet-487388.pdf, 2011. [Online; accessed 01-04-2016].
[22]
Oracle Labs. Polyglot. http://www.oracle.com/technetwork/oracle-labs/program-languages/polyglot/index.html. [Online; accessed 02-04-2016].
[23]
L. Pina, L. Veiga, and M. Hicks. Rubah: DSU for Java on a Stock JVM. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA '14, pages 103--119. ACM, 2014.
[24]
M. Pukall, A. Grebhahn, R. Schröter, C. Kästner, W. Cazzola, and S. Götz. JavAdaptor: unrestricted dynamic software updates for Java. In Proceedings of the 33rd International Conference on Software Engineering, pages 989--991. ACM, 2011.
[25]
J. Rose. JEP 243: Java-Level JVM Compiler Interface. http://openjdk.java.net/jeps/243, 2014. [Online; accessed 27-03-2016].
[26]
G. Savrun-Yeniçeri, M. L. Van de Vanter, P. Larsen, S. Brunthaler, and M. Franz. An efficient and generic event-based profiler framework for dynamic languages. In Proceedings of the Principles and Practices of Programming on The Java Platform, PPPJ '15, pages 102--112. ACM, 2015.
[27]
C. Seaton. Specialising Dynamic Techniques for Implementing the Ruby Programming Language. PhD thesis, University of Manchester, 2015.
[28]
C. Seaton, M. L. Van De Vanter, and M. Haupt. Debugging at full speed. In Proceedings of the Workshop on Dynamic Languages and Applications, Dyla'14, pages 2:1--2:13. ACM, 2014.
[29]
G. Stoyle, M. Hicks, G. Bierman, P. Sewell, and I. Neamtiu. Mutatis Mutandis: Safe and Predictable Dynamic Software Updating. ACM Trans. Program. Lang. Syst., 29(4), Aug. 2007.
[30]
S. Subramanian, M. Hicks, and K. S. McKinley. Dynamic Software Updates: A VM-centric Approach. In Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '09, pages 1--12. ACM, 2009.
[31]
M. V. D. Vanter. Instrumentation api documentation. https://wiki.openjdk.java.net/display/Graal/Instrumentation+API. [Online; accessed 12-02-2016].
[32]
E. Wernli, M. Lungu, and O. Nierstrasz. Incremental Dynamic Updates with First-class Contexts. In Proceedings of the 50th International Conference on Objects, Models, Components, Patterns, TOOLS'12, pages 304--319. Springer-Verlag, 2012.
[33]
C. Wimmer. Truffle tutorial. https://www.youtube.com/watch?v=N_sOxGkZfTg, February 2014. [Online; accessed 05-02-2016].
[34]
C. Wimmer and T. Würthinger. Truffle: A self-optimizing runtime system. In Proceedings of the 3rd Annual Conference on Systems, Programming, and Applications: Software for Humanity, SPLASH '12, pages 13--14. ACM, 2012.
[35]
R. Winterhalter. Byte Buddy. http://bytebuddy.net/, 2014. [Online; accessed 19-03-2016].
[36]
A. Wöß, C. Wirth, D. Bonetta, C. Seaton, C. Humer, and H. Mössenböck. An object storage model for the truffle language implementation framework. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, PPPJ '14, pages 133--144. ACM, 2014.
[37]
T. Würthinger, C. Wimmer, and L. Stadler. Dynamic code evolution for Java. In Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java, pages 10--19. ACM, 2010.
[38]
T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One vm to rule them all. In Proceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, Onward! 2013, pages 187--204. ACM, 2013.
[39]
W. Zhang. Efficient Hosted Interpreter for Dynamic Languages. PhD thesis, University of California, Irvine, 2015.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
ICOOOLPS '16: Proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
July 2016
58 pages
ISBN:9781450348379
DOI:10.1145/3012408
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 July 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Graal
  2. dynamic software updates
  3. language implementation
  4. truffle

Qualifiers

  • Research-article

Conference

ECOOP '16

Acceptance Rates

Overall Acceptance Rate 11 of 14 submissions, 79%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 76
    Total Downloads
  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 25 Dec 2024

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media