Message-based functional operating systems
Science of Computer Programming
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lambdas in the liftshaft—functional programming and an embedded architecture
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
A Network Protocol Stack in Standard ML
Higher-Order and Symbolic Computation
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Exploring the barrier to entry: incremental generational garbage collection for Haskell
Proceedings of the 4th international symposium on Memory management
Modelling deterministic concurrent I/O
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Running the manual: an approach to high-assurance microkernel development
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Strongly typed memory areas programming systems-level data structures in a functional language
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Lightweight concurrency primitives for GHC
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Implementing reliable Linux device drivers in ATS
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Secure virtual architecture: a safe execution environment for commodity operating systems
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
A theory of platform-dependent low-level software
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional system configuration management
HOTOS'07 Proceedings of the 11th USENIX workshop on Hot topics in operating systems
Towards a practical, verified kernel
HOTOS'07 Proceedings of the 11th USENIX workshop on Hot topics in operating systems
Writing systems software in a functional language: an experience report
Proceedings of the 4th workshop on Programming languages and operating systems
Checking the hardware-software interface in spec#
Proceedings of the 4th workshop on Programming languages and operating systems
NixOS: a purely functional Linux distribution
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Asynchronous Exceptions as an Effect
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Formal Functional Verification of Device Drivers
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Secure Microkernels, State Monads and Scalable Refinement
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Demystifying magic: high-level low-level programming
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Kenro: a virtual machine monitor mostly described in Haskell
Proceedings of the 2009 ACM symposium on Applied Computing
Achieving information flow security through monadic control of effects
Journal of Computer Security - 18th IEEE Computer Security Foundations Symposium (CSF 18)
Operating system development with ATS: work in progress
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
Delimited continuations in operating systems
CONTEXT'07 Proceedings of the 6th international and interdisciplinary conference on Modeling and using context
Scheduling light-weight parallelism in ArTCoP
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
Safe to the last instruction: automated verification of a type-safe operating system
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Memory safety for low-level software/hardware interactions
SSYM'09 Proceedings of the 18th conference on USENIX security symposium
Turning down the LAMP: software specialisation for the cloud
HotCloud'10 Proceedings of the 2nd USENIX conference on Hot topics in cloud computing
Type safety from the ground up
Proceedings of the 7th ACM SIGPLAN workshop on Types in language design and implementation
Nixos: A purely functional linux distribution
Journal of Functional Programming
Bypassing portability pitfalls of high-level low-level programming
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
Unikernels: library operating systems for the cloud
Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
EsseOS: Haskell-based tailored services for the cloud
Proceedings of the 12th International Workshop on Adaptive and Reflective Middleware
Hi-index | 0.00 |
We describe a monadic interface to low-level hardware features that is a suitable basis for building operating systems in Haskell. The interface includes primitives for controlling memory management hardware, user-mode process execution, and low-level device I/O. The interface enforces memory safety in nearly all circumstances. Its behavior is specified in part by formal assertions written in a programming logic called P-Logic. The interface has been implemented on bare IA32 hardware using the Glasgow Haskell Compiler (GHC) runtime system. We show how a variety of simple O/S kernels can be constructed on top of the interface, including a simple separation kernel and a demonstration system in which the kernel, window system, and all device drivers are written in Haskell.