Abstract
We address the problem of writing compilers targeting complex execution environments, such as computer clusters composed of machines with multi-core CPUs. To that end we introduce partial compilers. These compilers can pass sub-programs to several child (partial) compilers, combining the code generated by their children to generate the final target code. We define a set of high-level polymorphic operations manipulating both compilers and partial compilers as first-class values. These mechanisms provide a software architecture for modular compiler construction. This allows the building of a forest of compilers, providing a structured treatment of multistage compilers.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Benton, N., Hughes, J., Moggi, E.: Monads and Effects. In: Barthe, G., Dybjer, P., Pinto, L., Saraiva, J. (eds.) APPSEM 2000. LNCS, vol. 2395, pp. 42–122. Springer, Heidelberg (2002)
Blass, A.: Questions and answers – a category arising in linear logic, complexity theory, and set theory. In: Advances in Linear Logic. London Math. Soc. Lecture Notes, vol. 222, pp. 61–81 (1995)
Buneman, P., et al.: Comprehension syntax. SIGMOD Record 23(1), 87–96 (1994)
Chang, B.-Y.E., Harren, M., Necula, G.C.: Analysis of low-level code using cooperating decompilers. In: Proc. 13th SAS, pp. 318–335. ACM (2006)
de Paiva, V.: The Dialectica categories. In: Proc. Cat. in Comp. Sci. and Logic, 1987. Cont. Math., vol. 92, pp. 47–62. AMS (1989)
Dean, J., Ghemawat, S.: MapReduce: Simplified data processing on large clusters. In: Proc. 6th OSDI, pp. 137–150. ACM (2004)
Duffy, J.: Concurrent Programming on Windows. Addison Wesley (2008)
Erwig, M.: Inductive graphs and functional graph algorithms. J. Funct. Program. 11(5), 467–492 (2001)
Ghemawat, S., Gobioff, H., Leung, L.: The Google file system. In: Proc. 19th SOSP, pp. 29–43. ACM (2003)
Gordon, M.J., Milner, A.J., Wadsworth, C.P.: Edinburgh LCF. LNCS, vol. 78. Springer, Heidelberg (1979)
Hutton, G.: A tutorial on the universality and expressiveness of fold. J. Funct. Program. 9(4), 355–372 (1999)
Hyland, J.M.E.: Proof theory in the abstract. APAL 114(1-3), 43–78 (2002)
Kelsey, R., Hudak, P.: Realistic compilation by program transformation. In: Proc. 16th POPL, pp. 281–292. ACM (1989)
Kock, A.: Commutative monads as a theory of distributions. Theory and Applications of Categories 26(4), 97–131 (2012)
Kossmann, D.: The state of the art in distributed query processing. ACM Comput. Surv. 32, 422–469 (2000)
Lerner, S., et al.: Composing dataflow analyses and transformations. In: Proc. 29th POPL, pp. 270–282. ACM (2002)
Meijer, E., et al.: LINQ: reconciling object, relations and XML in the .NET framework. In: Proc. SIGMOD Int. Conf. on Manage. Data, p. 706. ACM (2006)
Melnik, S., et al.: Dremel: interactive analysis of web-scale datasets. Proc. VLDB Endow. 3, 330–339 (2010)
Milner, R., Bird, R.: The use of machines to assist in rigorous proof. Phil. Trans. R. Soc. Lond. A 312(1522), 411–422 (1984)
Moggi, E.: Computational lambda-calculus and monads. In: Proc. 4th LICS, pp. 14–23. IEEE Computer Society (1989)
Moggi, E.: Notions of computation and monads. Inf. Comput. 93(1), 55–92 (1991)
Pierce, B.C.: Types and programming languages. MIT Press (2002)
Power, J., Robinson, E.: Premonoidal categories and notions of computation. MSCS 7(5), 453–468 (1997)
Sarkar, D., Waddell, O., Dybvig, R.K.: Educational pearl: A nanopass framework for compiler education. J. Funct. Program. 15(5), 653–667 (2005)
Sheth, A., Larson, J.: Federated database systems for managing distributed, heterogeneous, and autonomous databases. ACM Comput. Surv. 22, 183–236 (1990)
Tarditi, D., Puri, S., Oglesby, J.: Accelerator: using data parallelism to program GPU’s for general-purpose uses. In: Proc. 12th. ASPLOS, pp. 325–335. ACM (2006)
Yu, Y., et al.: DryadLINQ: A system for general-purpose distributed data-parallel computing using a high-level language. In: Proc. 8th OSDI, pp. 1–14. ACM (2008)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Budiu, M., Galenson, J., Plotkin, G.D. (2013). The Compiler Forest. In: Felleisen, M., Gardner, P. (eds) Programming Languages and Systems. ESOP 2013. Lecture Notes in Computer Science, vol 7792. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-37036-6_2
Download citation
DOI: https://doi.org/10.1007/978-3-642-37036-6_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-37035-9
Online ISBN: 978-3-642-37036-6
eBook Packages: Computer ScienceComputer Science (R0)