% Operating systems @inproceedings{ LionsOs:Heiser, address = {Gladstone, QLD, AU}, author = {Gernot Heiser}, booktitle = {Everything Open}, month = apr, organization = {Linux Australia}, title = {{Lions OS}: Secure -- Fast -- Adaptable}, year = {2024} } @misc{ 3L:Hintz, title = {3L: The Computing System of the Future}, author = {Thomas Hintz}, year = 2016, note = {Accessed: 2024-06-20}, howpublished = {\url{https://3lproject.org/}} } @phdthesis{ securityKernelLambda:Rees, title={A security kernel based on the lambda-calculus}, author={Rees, Jonathan A}, year={1995}, school={Massachusetts Institute of Technology} } @inproceedings{ MIMOSA:Yvon, author = {Samuel Yvon and Marc Feeley}, editor = {Baptiste Saleil and Michael D. Adams}, title = {Running Scheme On Bare Metal (Experience Report)}, booktitle = {Proceedings of the 2020 Scheme and Functional Programming Workshop, Online, Virtual Event, August 20-28, 2020}, series = {{CSE} Technical Reports}, volume = {{CSE-TR-001-21}}, pages = {51--65}, publisher = {University of Michigan}, year = {2020}, timestamp = {Tue, 15 Feb 2022 12:32:42 +0100}, biburl = {https://dblp.org/rec/conf/icfp/YvonF20.bib}, bibsource = {dblp computer science bibliography, https://dblp.org} } @misc{ Loko:Weinholt, title = {Loko Scheme}, author = {Gwen Weinholt}, year = 2019, note = {Accessed: 2024-09-14}, howpublished = {\url{https://scheme.fail/}} } @article{Guix:Courtes, author = {Ludovic Court{\`{e}}s}, title = {Functional Package Management with Guix}, journal = {CoRR}, volume = {abs/1305.4584}, year = {2013}, url = {http://arxiv.org/abs/1305.4584}, eprinttype = {arXiv}, eprint = {1305.4584}, timestamp = {Mon, 13 Aug 2018 16:47:42 +0200}, biburl = {https://dblp.org/rec/journals/corr/abs-1305-4584.bib}, bibsource = {dblp computer science bibliography, https://dblp.org} } @article{ContinuationsConcurrency:Hieb, author = {Hieb, R. and Dybvig, R. Kent}, title = {Continuations and concurrency}, year = {1990}, issue_date = {Mar. 1990}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {25}, number = {3}, issn = {0362-1340}, url = {https://doi.org/10.1145/99164.99178}, doi = {10.1145/99164.99178}, abstract = {Continuations have proven to be useful for implementing a variety of control structures, including exception handling facilities and breadth-first searching algorithms. However, traditional continuations are not useful in the presence of concurrency, because the notion of the rest of the computation represented by a continuation does not in general make sense. This paper presents a new type of continuation, called a process continuation, that may be used to control tree-structured concurrency. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a process continuation represents the rest of a subcomputation, or process, from a given point in the subcomputation. Process continuations allow nonlocal exits to arbitrary points in the process tree and allow the capture of a subtree of a computation as a composable continuation for later use. Even in the absence of multiple processes, the precise control achievable with process continuations makes them more useful than traditional continuations.}, journal = {SIGPLAN Not.}, month = {feb}, pages = {128–136}, numpages = {9} } % Oberon @book{ Oberon:Wirth, title={Project Oberon, The Design of an Operating System and Compiler}, author={Niklaus Wirth and Jürg Gutknecht}, year={1992}, isbn={0-201-54428-8}, publisher={Addison-Wesley/ACM Press}, url={https://people.inf.ethz.ch/wirth/ProjectOberon1992.pdf} } % Unix @book{ QuarterCenturyUnix:Salus, title={A Quarter Century of UNIX}, author={Peter H. Salus}, year={1994}, isbn={0-201-54777-5}, publisher={Addison-Wesley} } % Problems with the things we use @article{ Threads:Lee, author = {Lee, Edward}, year = {2006}, month = {06}, pages = {33 - 42}, title = {The Problem with Threads}, volume = {39}, journal = {Computer}, doi = {10.1109/MC.2006.180} } @inproceedings{ fork:Baumann, title={A fork () in the road}, author={Baumann, Andrew and Appavoo, Jonathan and Krieger, Orran and Roscoe, Timothy}, booktitle={Proceedings of the Workshop on Hot Topics in Operating Systems}, pages={14--22}, year={2019} } @article{ MythsPL:Shaw, title={Myths and mythconceptions: what does it mean to be a programming language, anyhow?}, volume={4}, ISSN={2475-1421}, url={http://dx.doi.org/10.1145/3480947}, DOI={10.1145/3480947}, number={HOPL}, journal={Proceedings of the ACM on Programming Languages}, publisher={Association for Computing Machinery (ACM)}, author={Shaw, Mary}, year={2020}, month=jun, pages={1–44} } @article{ SpectreMeltdown:HillMasters, author={Hill, Mark D. and Masters, Jon and Ranganathan, Parthasarathy and Turner, Paul and Hennessy, John L.}, journal={IEEE Micro}, title={On the Spectre and Meltdown Processor Security Vulnerabilities}, year={2019}, volume={39}, number={2}, pages={9-19}, keywords={Hardware;Computer architecture;Virtual machining;Microarchitecture;Microprocessors;Software development}, doi={10.1109/MM.2019.2897677} } % Programming languages @article{ lua:Ierusalimschy, abstract = {We discuss the main novelties of the implementation of Lua 5.0: its register-based virtual machine, the new algorithm for optimizing tables used as arrays, the implementation of closures, and the addition of coroutines.}, author = {Ierusalimschy, Roberto and de Figueiredo, Luiz Henrique and Celes, Waldemar}, doi = {10.3217/jucs-011-07-1159}, journal = {Journal of Universal Computer Science}, keywords = {Language Lua VM}, number = 7, pages = {1159--1176}, title = {The Implementation of Lua 5.0}, url = {http://www.jucs.org/jucs_11_7/the_implementation_of_lua}, volume = 11, year = 2005 } @article{ LispMachine:Greenblatt, author = {Greenblatt, Richard D. and Knight, Thomas F. and Holloway, John T. and Moon, David A.}, title = {A LISP machine}, year = {1980}, issue_date = {March 1980}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {15}, number = {2}, issn = {0163-5840}, url = {https://doi.org/10.1145/1013881.802703}, doi = {10.1145/1013881.802703}, abstract = {LISP is the second oldest computer-programming language still in active use. Our implementation is based on a powerful microprogrammed processor designed specifically for LISP. This processor supports a tagged macro-architecture; it manipulates items which have a built-in data-type field.The system supports several important new storage-management features, including a real-time garbage collector with hardware assist (using the basic algorithm of Baker).The software itself is written in LISP to a much larger extent than in previous systems. In fact, there are only two levels in which code is written: LISP and microcode. Among other things this improves the consistancy of system interfaces.The system design incorporates the personal computer philosophy. We believe the personal computer will predominate in the future since it is preferable to time-sharing in most cases and technological trends are greatly reducing its cost penality. In the case of very large programs, the personal computer can be cost-effective today, due to the phenomenon of thrashing encountered in time-sharing systems.}, journal = {SIGIR Forum}, month = {mar}, pages = {137–138}, numpages = {2} } @TechReport{ Lambda:Steele, author = {Steele, Guy Lewis, Jr. and Sussman, Gerald Jay}, title = {Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode}, year = 1979, month = mar, url = {http://hdl.handle.net/1721.1/5731}, institution = {Massachusetts Institute of Technology, Artificial Intelligence Laboratory}, number = {AIM-514} } % Computers @inproceedings{ riscvSelfHostingComputer:Somlo, author={Somlo, Gabriel L.}, booktitle={2020 IEEE Security and Privacy Workshops (SPW)}, title={Toward a Trustable, Self-Hosting Computer System}, year={2020}, volume={}, number={}, pages={136-143}, keywords={Privacy;Conferences;Supply chains;Hardware;Software;Trojan horses;Computer security}, doi={10.1109/SPW50608.2020.00039} } % https://www.contrib.andrew.cmu.edu/~somlo/BTCP/ @inbook{EvolutionComputing:Larus, author="Larus, James R.", editor="Werthner, Hannes and Ghezzi, Carlo and Kramer, Jeff and Nida-R{\"u}melin, Julian and Nuseibeh, Bashar and Prem, Erich and Stanger, Allison", title="Evolution of Computing", bookTitle="Introduction to Digital Humanism: A Textbook", year="2024", publisher="Springer Nature Switzerland", address="Cham", pages="31--45", abstract="Computers and computing emerged within a lifetime and completely changed our world. Although their history is brief, the change they precipitated has been rapid and constant. Today's world would be unimaginably different without these machines. Not necessarily worse, but certainly slower, static, disconnected, and poorer. One has to look back to the steam engine in the nineteenth century or electricity in the early twentieth century to find technologies with similar rapid and far-reaching effects. This chapter briefly describes the evolution of computing and highlights how its growth is closely tied to concerns of digital humanism.", isbn="978-3-031-45304-5", doi="10.1007/978-3-031-45304-5_3", url="https://doi.org/10.1007/978-3-031-45304-5_3" } % ISA design @article{ GeneralPurposeProcessor:Chisnall, author = {Chisnall, David}, title = {There’s No Such Thing as a General-purpose Processor: And the belief in such a device is harmful}, year = {2014}, issue_date = {October 2014}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {12}, number = {10}, issn = {1542-7730}, url = {https://doi.org/10.1145/2685690.2687011}, doi = {10.1145/2685690.2687011}, abstract = {There is an increasing trend in computer architecture to categorize processors and accelerators as "general purpose." Of the papers published at this year’s International Symposium on Computer Architecture (ISCA 2014), nine out of 45 explicitly referred to general-purpose processors; one additionally referred to general-purpose FPGAs (field-programmable gate arrays), and another referred to general-purpose MIMD (multiple instruction, multiple data) supercomputers, stretching the definition to the breaking point. This article presents the argument that there is no such thing as a truly general-purpose processor and that the belief in such a device is harmful.}, journal = {Queue}, month = {oct}, pages = {20–25}, numpages = {6} } @article{LiberateFromVonNeumann:Backus, author = {Backus, John}, title = {Can programming be liberated from the von Neumann style? a functional style and its algebra of programs}, year = {1978}, issue_date = {Aug. 1978}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {21}, number = {8}, issn = {0001-0782}, url = {https://doi.org/10.1145/359576.359579}, doi = {10.1145/359576.359579}, abstract = {Conventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor—the von Neumann computer, their close coupling of semantics to state transitions, their division of programming into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs.An alternative functional style of programming is founded on the use of combining forms for creating programs. Functional programs deal with structured data, are often nonrepetitive and nonrecursive, are hierarchically constructed, do not name their arguments, and do not require the complex machinery of procedure declarations to become generally applicable. Combining forms can use high level programs to build still higher level ones in a style not possible in conventional languages.Associated with the functional style of programming is an algebra of programs whose variables range over programs and whose operations are combining forms. This algebra can be used to transform programs and to solve equations whose “unknowns” are programs in much the same way one transforms equations in high school algebra. These transformations are given by algebraic laws and are carried out in the same language in which programs are written. Combining forms are chosen not only for their programming power but also for the power of their associated algebraic laws. General theorems of the algebra give the detailed behavior and termination conditions for large classes of programs.A new class of computing systems uses the functional programming style both in its programming language and in its state transition rules. Unlike von Neumann languages, these systems have semantics loosely coupled to states—only one state transition occurs per major computation.}, journal = {Commun. ACM}, month = {aug}, pages = {613–641}, numpages = {29}, keywords = {von Neumann languages, von Neumann computers, programming languages, program transformation, program termination, program correctness, models of computing systems, metacomposition, functional programming, functional forms, combining forms, applicative state transition systems, applicative computing systems, algebra of programs} } @inproceedings{CHERI:Woodruff, author={Woodruff, Jonathan and Watson, Robert N. M. and Chisnall, David and Moore, Simon W. and Anderson, Jonathan and Davis, Brooks and Laurie, Ben and Neumann, Peter G. and Norton, Robert and Roe, Michael}, booktitle={2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA)}, title={The CHERI capability model: Revisiting RISC in an age of risk}, url={https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/201406-isca2014-cheri.pdf}, year={2014}, volume={}, number={}, pages={457-468}, keywords={Ground penetrating radar;Abstracts;Safety;Registers;Coprocessors}, doi={10.1109/ISCA.2014.6853201} } @inproceedings{Heron:Ramsay, author = {Ramsay, Craig and Stewart, Robert}, title = {Heron: Modern Hardware Graph Reduction}, year = {2024}, isbn = {9798400716317}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, url = {https://doi.org/10.1145/3652561.3652564}, doi = {10.1145/3652561.3652564}, abstract = {FPGAs have enjoyed exponential growth of on-chip hardware resources — reason to reinvestigate hardware implementations of functional languages. This paper presents Heron, an FPGA-based special purpose processor core for pure, non-strict functional languages. We co-design its language semantics and parametrised design, gaining a high reductions-per-cycle performance metric. The Heron core is energy efficient, performing up to six times as many reductions per cycle as GHC. Despite its infancy, a 193 MHz Heron core outperforms wall-clock time for a mid-range Intel i3 1.9 GHz mobile CPU for 5 of these benchmarks and is competitive with an Alder Lake Intel i7 CPU. Its performance-per-Watt shows that the Heron core is a compelling solution for embedded applications. The simplicity of Heron’s design results in just 2\% FPGA resource usage, paving the way for future single-chip parallelism, further improving absolute performance.}, booktitle = {Proceedings of the 35th Symposium on Implementation and Application of Functional Languages}, articleno = {3}, numpages = {12}, keywords = {FPGAs, functional languages, graph reduction, hardware accelerators}, location = {Braga, Portugal}, series = {IFL '23} } % PL popularity @misc{PLCommunity:Tambad, title={Analyzing programming languages by community characteristics on Github and StackOverflow}, author={Samarth Tambad and Rohit Nandwani and Suzanne K. McIntosh}, year={2020}, eprint={2006.01351}, archivePrefix={arXiv}, primaryClass={cs.SE}, url={https://arxiv.org/abs/2006.01351}, } % Hardware @article{ FPGAReconf:Vipin, author = {Vipin, Kizheppatt and Fahmy, Suhaib A.}, title = {FPGA Dynamic and Partial Reconfiguration: A Survey of Architectures, Methods, and Applications}, year = {2018}, issue_date = {July 2019}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {51}, number = {4}, issn = {0360-0300}, url = {https://doi.org/10.1145/3193827}, doi = {10.1145/3193827}, abstract = {Dynamic and partial reconfiguration are key differentiating capabilities of field programmable gate arrays (FPGAs). While they have been studied extensively in academic literature, they find limited use in deployed systems. We review FPGA reconfiguration, looking at architectures built for the purpose, and the properties of modern commercial architectures. We then investigate design flows and identify the key challenges in making reconfigurable FPGA systems easier to design. Finally, we look at applications where reconfiguration has found use, as well as proposing new areas where this capability places FPGAs in a unique position for adoption.}, journal = {ACM Comput. Surv.}, month = {jul}, articleno = {72}, numpages = {39}, keywords = {partial reconfiguration, dynamic reconfiguration, Field programmable gate arrays} } @TechReport{ FPhardware:Stoye, author = {Stoye, William Robert}, title = {{The implementation of functional languages using custom hardware}}, year = 1985, month = dec, url = {https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-81.pdf}, institution = {University of Cambridge, Computer Laboratory}, doi = {10.48456/tr-81}, number = {UCAM-CL-TR-81} } @inproceedings{ HWAssistedGC:Maas, author={Maas, Martin and Asanović, Krste and Kubiatowicz, John}, booktitle={2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA)}, title={A Hardware Accelerator for Tracing Garbage Collection}, year={2018}, volume={}, number={}, pages={138-151}, keywords={Hardware;Data centers;Prototypes;Java;Benchmark testing;Throughput;Memory management;hardware accelerators;garbage collection;SoCs;language runtime systems;memory management}, doi={10.1109/ISCA.2018.00022} } @article{SXML:Kiselyov, author = {Kiselyov, Oleg}, title = {SXML specification}, year = {2002}, issue_date = {June 2002}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {37}, number = {6}, issn = {0362-1340}, url = {https://doi.org/10.1145/571727.571736}, doi = {10.1145/571727.571736}, journal = {SIGPLAN Not.}, month = {jun}, pages = {52–58}, numpages = {7}, keywords = {scheme, XML parsing, XML namespaces, XML infoset, XML, SXML, AST} } @article{ LanguageOriented:Culpepper, title={From Macros to DSLs: The Evolution of Racket}, DOI={10.4230/lipics.snapl.2019.5}, author={Culpepper, Ryan and Felleisen, Matthias and Flatt, Matthew and Krishnamurthi, Shriram and Wagner, Michael}, year={2019}, month={Jun} }