User loginNavigation |
ImplementationAn Overview of the Singularity ProjectSingularity is a research project in Microsoft Research that started with the question: what would a software platform look like if it was designed from scratch with the primary goal of dependability? Singularity is working to answer this question by building on advances in programming languages and tools to develop a new system architecture and operating system (named Singularity), with the aim of producing a more robust and dependable software platform. Singularity demonstrates the practicality of new technologies and architectural decisions, which should lead to the construction of more robust and dependable systems... An interesting overview of what sounds like an intersting project. The choice of implementation language is also interesting:
Singularity is written in Sing#, which is an extension to the Spec# language developed in Microsoft Research. Spec# itself is an extension to Microsoft’s C# language that provides constructs (pre- and post-conditions and object invariants) for specifying program behavior. Specifications can be statically verified by the Boogie verifier or checked by compiler-inserted run-time tests. Sing# extends this language with support for channels and low-level constructs necessary for system code....integrating a feature into a language allows more aspects of a program to be verified. Singularity’s constructs allow communication to be statically verified. An interesting aspect is the support for meta-programming, which is implemented in an unusal manner:
Compile-time reflection (CTR) is a partial substitute for the CLR’s full reflection capability. CTR is similar to techniques such as macros, binary code rewriting, aspects, meta-programming, and multi-stage languages. The basic idea is that programs may contain place-holder elements (classes, methods, fields, etc.) that are subsequently expanded by a generator. Many other intersting design decisions are discussed in the paper (e.g., various DbC facilities), so do check it out. By Ehud Lamm at 2005-10-28 14:54 | Cross language runtimes | Implementation | Meta-Programming | Parallel/Distributed | Software Engineering | 30 comments | other blogs | 35522 reads
Zipper-based file server/OS
zfs-talk: Expanded talk with the demo. It was originally presented as an extra demo at the Haskell Workshop 2005 By shapr at 2005-10-08 10:10 | Fun | Functional | Implementation | Theory | 21 comments | other blogs | 39350 reads
Control-Flow Integrity
Two papers about CFI.
Control-Flow Integrity - Principles, Implementations, and Applications:
Current software attacks often build on exploits that subvert machine- code execution. The enforcement of a basic safety property, Control-Flow Integrity (CFI), can prevent such attacks from arbitrarily controlling program behavior. CFI enforcement is simple, and its guarantees can be established formally, even with respect to powerful adversaries. Moreover, CFI enforcement is practical: it is compatible with existing software and can be done efficiently using software rewriting in commodity systems. Finally, CFI provides a useful foundation for enforcing further security policies, as we demonstrate with efficient software implementations of a protected shadow call stack and of access control for memory regions. A Theory of Secure Control-Flow:
Control-Flow Integrity (CFI) means that the execution of a program dynamically follows only certain paths, in accordance with a static policy. CFI can prevent attacks that, by exploiting buffer overflows and other vulnerabilities, attempt to control program behavior. This paper develops the basic theory that underlies two practical techniques for CFI enforcement, with precise formulations of hypotheses and guarantees. Not very language oriented, I am afraid. However, this is related to PCC and TAL which were discussed here in the past. Number-Parameterized Types by Oleg KiselyovNumber-Parameterized Types by Oleg Kiselyov
Oleg shows several approaches towards encoding numbers into types and using those numbers to check list length, matching sizes for matrices or vectors. Oleg also points out connections to dependent types, phantom types, and shape-invariant programming. By shapr at 2005-10-03 13:18 | Implementation | Type Theory | 8 comments | other blogs | 10681 reads
Continuations library for JavaRIFE is an open source Java web application framework which allows web applications to benefit from first-class continuations. Now, RIFE's pure Java continuation engine, which uses Java bytecode manipulation to implement continuations, has been extracted into a standalone Java library: Announcing RIFE/Continuations, pure Java continuations for everyone The immediate motivation for doing this was to achieve support for continuations in the WebWork application framework, which now supports them it its latest beta. Along similar lines, there's also the Apache Jakarta project, Commons Javaflow. From a language design perspective, it's interesting to see features like this being introduced without modifying the language implementation. Other examples of continuations being added to languages, as in Stackless Python and the Javascript implementation Rhino with Continuations, have been done by forking the language implementation, which of course isn't as practical in Java's case. By Anton van Straaten at 2005-09-23 18:42 | Implementation | 29 comments | other blogs | 28965 reads
XQuery Implementation in a Relational Database System
XQuery Implementation in a Relational Database System. VLDB 2005.
This paper describes the experiences and the challenges in implementing XQuery in Microsoft’s SQL Server 2005. XQuery language constructs are compiled into an enhanced set of relational operators while preserving the semantics of XQuery. The query tree is optimized using relational optimization techniques, such as cost-based decisions, and rewrite rules based on XML schemas. Quite detailed. Section 6 covers optimization, and coupled with section 7 discussing related work, might be enough for those not really interested in all the intricate details of SQL Server's implementation of XQuery. The essence of Dataflow Programming by Tarmo Uustalu and Varmo VeneThe Essence of Dataflow Programming
If you've ever wondered about dataflow or comonads, this paper is a good read. It begins with short reviews of monads, arrows, and comonads and includes an implementation. One feature that stood out is the idea of a higher-order dataflow language. By shapr at 2005-09-21 22:23 | Functional | Implementation | Logic/Declarative | Theory | 12 comments | other blogs | 28983 reads
Plugging Haskell InAndré Pang, Don Stewart, Sean Seefried, and Manuel M. T. Chakravarty. Plugging Haskell In (pdf). Proceedings of the ACM SIGPLAN Workshop on Haskell, 2004, pp. 10-21.
Two of the authors also have a more recent paper (pdf) describing applications they've built using hs-plugins. By Matthew Morgan at 2005-09-13 02:17 | DSL | Functional | Implementation | login or register to post comments | other blogs | 10159 reads
A Typed Intermediate Language for Compiling Multiple Inheritance
Juan Chen. A Typed Intermediate Language for Compiling Multiple Inheritance.
This paper presents a typed intermediate language EMI that supports multiple and virtual inheritance of classes in C++-like languages. EMI faithfully represents standard implementation strategies of object layout, "this" pointer adjustment, and dynamic dispatch. The type system is sound. Type checking is decidable. The translation from a source language to EMI preserves types. We believe that EMI is the first typed intermediate language that is expressive enough for describing implementation details of multiple and virtual inheritance of classes. If you really must have mutiple inheritance... A Plan for PugsAnyway. So, I ordered a bunch of books online including TaPL and ATTaPL so I could learn more about mysterious things like Category Theory and Type Inference and Curry-Howard Correspondence. A rather amusing interview about Pugs, the Perl 6 implementation written in Haskell. By Ehud Lamm at 2005-07-17 10:06 | Functional | Implementation | login or register to post comments | other blogs | 4972 reads
|
Browse archives
Active forum topics |
Recent comments
23 weeks 2 hours ago
23 weeks 5 hours ago
23 weeks 5 hours ago
45 weeks 1 day ago
49 weeks 3 days ago
51 weeks 13 hours ago
51 weeks 13 hours ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago