|
ABSTRACT
The power of high-level languages lies in their abstraction over hardware and software complexity, leading to greater security, better reliability, and lower development costs. However, opaque abstractions are often show-stoppers for systems programmers, forcing them to either break the abstraction, or more often, simply give up and use a different language. This paper addresses the challenge of opening up a high-level language to allow practical low-level programming without forsaking integrity or performance. The contribution of this paper is three-fold: 1) we draw together common threads in a diverse literature, 2) we identify a framework for extending high-level languages for low-level programming, and 3) we show the power of this approach through concrete case studies. Our framework leverages just three core ideas: extending semantics via intrinsic methods, extending types via unboxing and architectural-width primitives, and controlling semantics via scoped semantic regimes. We develop these ideas through the context of a rich literature and substantial practical experience. We show that they provide the power necessary to implement substantial artifacts such as a high-performance virtual machine, while preserving the software engineering benefits of the host language. The time has come for high-level low-level programming to be taken more seriously: 1) more projects now use high-level languages for systems programming, 2) increasing architectural heterogeneity and parallelism heighten the need for abstraction, and 3) a new generation of high-level languages are under development and ripe to be influenced.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
A.-R. Adl-Tabatabai, J. Bharadwaj, D.-Y. Chen, A. Ghuloum, V. Menon, B. Murphy, M. Serrano, and T. Shpeisman. The StarJIT compiler: a dynamic compiler for managed runtime environments. Intel Technology Journal, 7(1):19--31, Feb. 2003.
|
 |
2
|
Vikas Agarwal , M. S. Hrishikesh , Stephen W. Keckler , Doug Burger, Clock rate versus IPC: the end of the road for conventional microarchitectures, Proceedings of the 27th annual international symposium on Computer architecture, p.248-259, June 2000, Vancouver, British Columbia, Canada
|
 |
3
|
Mark Aiken , Manuel Fähndrich , Chris Hawblitzel , Galen Hunt , James Larus, Deconstructing process isolation, Proceedings of the 2006 workshop on Memory system performance and correctness, October 22-22, 2006, San Jose, California
[doi> 10.1145/1178597.1178599]
|
| |
4
|
E. Allen, D. Chase, J. Hallett, V. Luchangco, J.-W. Maesse, S. Ryu, G. L. S. Jr., and S. Tobin-Hochstadt. The Fortress language specification, version 1.0. Technical report, Sun Microsystems, Mar. 2008.
|
 |
5
|
Bowen Alpern , C. R. Attanasio , Anthony Cocchi , Derek Lieber , Stephen Smith , Ton Ngo , John J. Barton , Susan Flynn Hummel , Janice C. Sheperd , Mark Mergen, Implementing jalapeño in Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.314-324, November 01-05, 1999, Denver, Colorado, United States
|
| |
6
|
B. Alpern , C. R. Attanasio , J. J. Barton , M. G. Burke , P. Cheng , J.-D. Choi , A. Cocchi , S. J. Fink , D. Grove , M. Hind , S. F. Hummel , D. Lieber , V. Litvinov , M. F. Mergen , T. Ngo , J. R. Russell , V. Sarkar , M. J. Serrano , J. C. Shepherd , S. E. Smith , V. C. Sreedhar , H. Srinivasan , J. Whaley, The Jalapeño virtual machine, IBM Systems Journal, v.39 n.1, p.211-238, January 2000
|
| |
7
|
Apache. DRLVM -- Dynamic Runtime Layer Virtual Machine. http://harmony.apache.org/subcomponents/drlvm/.
|
| |
8
|
B. Bershad, S. M. Blackburn, H. Boehm, M. Cierniak, C. Click, D. Frampton, D. Gregg, D. Grove, X. Li, B. Mathiske, and G. Skinner. First Moxie brainstorming meeting, Dec. 2005. http://moxie.sf.net/.
|
 |
9
|
Brian N. Bershad , Craig Chambers , Susan Eggers , Chris Maeda , Dylan McNamee , Przemyslaw Pardyak , Stefan Savage , Emin Gün Sirer, SPIN: an extensible microkernel for application-specific operating system services, Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs, September 12-14, 1994, Wadern, Germany
[doi> 10.1145/504390.504408]
|
 |
10
|
B. N. Bershad , S. Savage , P. Pardyak , E. G. Sirer , M. E. Fiuczynski , D. Becker , C. Chambers , S. Eggers, Extensibility safety and performance in the SPIN operating system, Proceedings of the fifteenth ACM symposium on Operating systems principles, p.267-283, December 03-06, 1995, Copper Mountain, Colorado, United States
|
| |
11
|
|
| |
12
|
S. M. Blackburn, S. I. Salishev, M. Danilov, O. A. Mokhovikov, A. A. Nashatyrev, P. A. Novodvorsky, V. I. Bogdanov, X. F. Li, and D. Ushakov. The Moxie JVM experience. Technical Report TRCS-08-01, Australian National University, Department of Computer Science, Jan. 2008.
|
 |
13
|
|
 |
14
|
|
| |
15
|
|
| |
16
|
L. Cardelli, J. Donahue, L. Glassman, I. Jordan, B. Kalsow, and G. Nelson. Modula-3 report (revised). Technical Report 52, DEC SRC, Nov. 1989.
|
| |
17
|
|
 |
18
|
Philippe Charles , Christian Grothoff , Vijay Saraswat , Christopher Donawa , Allan Kielstra , Kemal Ebcioglu , Christoph von Praun , Vivek Sarkar, X10: an object-oriented approach to non-uniform cluster computing, Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
|
| |
19
|
|
| |
20
|
ECMA. C# Language Specification, ECMA-334. http://www.ecma-international.org/publications/standards/Ecma-334.htm, June 2006. (ISO/IEC 23270:2006).
|
| |
21
|
ECMA. Common Language Infrastructure (CLI), ECMA-335. http://www.ecma-international.org/publications/standards/Ecma-335.htm, June 2006. (ISO/IEC 23271:2006).
|
 |
22
|
Manuel Fähndrich , Mark Aiken , Chris Hawblitzel , Orion Hodson , Galen Hunt , James R. Larus , Steven Levi, Language support for fast and reliable message-based communication in singularity OS, Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006, April 18-21, 2006, Leuven, Belgium
|
 |
23
|
|
| |
24
|
M. E. Fiuczynski, W. C. Hsieh, E. G. Sirer, P. Pardyak, and B. N. Bershad. Low-level systems programming with Modula-3. In Threads: A Modula-3 Newsletter, number 3, Fall 1997.
|
| |
25
|
C. Flack, T. Hosking, and J. Vitek. Idioms in OVM. Technical Report CSD-TR-03-017, Purdue University, 2003.
|
 |
26
|
|
 |
27
|
|
 |
28
|
|
| |
29
|
R. Garner. JMTK: a portable memory management toolkit. Honours thesis, Australian National University, Dec. 2003.
|
 |
30
|
|
 |
31
|
|
| |
32
|
Neal Glew , Spyridon Triantafyllis , Michał Clerniak , Marsha Eng , Brian Lewis , James Stichnoth, LIL: an architecture-neutral language for virtual-machine stubs, Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium, p.9-9, May 06-07, 2004, San Jose, California
|
| |
33
|
|
 |
34
|
|
 |
35
|
|
| |
36
|
|
 |
37
|
|
 |
38
|
|
| |
39
|
|
| |
40
|
G. Hunt, J. Larus, M. Abadi, M. Aiken, P. Barham, M. Fähndrich, C. Hawblitzel, O. Hodson, S. Levi, N. Murphy, B. Steensgaard, D. Tarditi, T. Wobber, and B. Zill. An overview of the Singularity project. Technical Report MSR-TR-2005-135, Microsoft Research, 2005.
|
 |
41
|
|
| |
42
|
Trevor Jim , J. Greg Morrisett , Dan Grossman , Michael W. Hicks , James Cheney , Yanling Wang, Cyclone: A Safe Dialect of C, Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference, p.275-288, June 10-15, 2002
|
| |
43
|
K. Kennedy. Generation of high performance domain-specific languages from component libraries. http://www.cs.rice.edu/~ken/Presentations/TelescopeOSU.pdf.
|
| |
44
|
|
| |
45
|
S. Kuksenko. Suggestion: Let's write some small and hot native (kernel) methods on vmmagics. http://www.mail-archive.com/dev@harmony.apache.org/msg07606.html, May 2007.
|
| |
46
|
D. Lea. Low-level memory fences. http://gee.cs.oswego.edu/dl/concurrent/dist/docs/java/util/concurrent/atomic/Fences.html.
|
| |
47
|
|
 |
48
|
|
| |
49
|
S. Microsystems. Maxine Research Project. http://research.sun.com/projects/maxine.
|
| |
50
|
J. Eliot B. Moss , Trek Palmer , Timothy Richards , Edward K. Walters, II , Charles C. Weems, CISL: a class-based machine description language for co-generation of compilers and simulators, International Journal of Parallel Programming, v.33 n.2, p.231-246, June 2005
[doi> 10.1007/s10766-005-3587-1]
|
 |
51
|
|
| |
52
|
E. Prangsma. Why Java is practical for modern operating systems. In Libre Software Meeting, 2005. Presentation only. See www.jnode.org.
|
 |
53
|
|
 |
54
|
Armin Rigo , Samuele Pedroni, PyPy's approach to virtual machine construction, Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
[doi> 10.1145/1176617.1176753]
|
 |
55
|
|
| |
56
|
|
 |
57
|
|
 |
58
|
Doug Simon , Cristina Cifuentes , Dave Cleal , John Daniels , Derek White, Java™ on the bare metal of wireless sensor devices: the squawk Java virtual machine, Proceedings of the 2nd international conference on Virtual execution environments, June 14-16, 2006, Ottawa, Ontario, Canada
[doi> 10.1145/1134760.1134773]
|
 |
59
|
Levon Stepanian , Angela Demke Brown , Allan Kielstra , Gita Koblents , Kevin Stoodley, Inlining java native calls at runtime, Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments, June 11-12, 2005, Chicago, IL, USA
[doi> 10.1145/1064979.1064997]
|
| |
60
|
|
 |
61
|
|
| |
62
|
|
 |
63
|
David Ungar , Adam Spitz , Alex Ausch, Constructing a metacircular Virtual machine in an exploratory programming environment, Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, October 16-20, 2005, San Diego, CA, USA
[doi> 10.1145/1094855.1094865]
|
| |
64
|
|
| |
65
|
J. R. Vernooij. SAMBA developers guide. http://www.samba.org/samba/docs/Samba-Developers-Guide.pdf, Apr. 2008.
|
 |
66
|
|
 |
67
|
|
 |
68
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.4
Processors
Subjects:
Code generation
Additional Classification:
D.
Software
D.3
PROGRAMMING LANGUAGES
D.3.4
Processors
Subjects:
Memory management (garbage collection);
Run-time environments;
Optimization;
Compilers
General Terms:
Design,
Experimentation,
Languages,
Performance,
Reliability
Keywords:
debugging,
intrinsics,
jikes rvm,
magic,
mmtk,
systems programming,
virtualization,
vmmagic
|