User loginNavigation |
Software EngineeringLightweight Monadic Regions
Oleg Kiselyov and Chung-chieh Shan. Lightweight Monadic Regions. Haskell'08.
We present Haskell libraries that statically ensure the safe use of resources such as file handles. We statically prevent accessing an already closed handle or forgetting to close it. The libraries can be trivially extended to other resources such as database connections and graphic contexts... I am starting to think we need a department for effect systems and related topics (though we managed without a monads department!)... You'll probably want to read the code, so go ahead. The code makes it plain which features of the type system are needed to achieve the end result. By Ehud Lamm at 2008-08-06 16:57 | Functional | Software Engineering | Type Theory | 10 comments | other blogs | 10888 reads
Catch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCamlCatch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCaml, by David Teller, Arnaud Spiwack, Till Varoquaux:
Exhaustively checked, user-friendly exception handling was a bit of an open problem for awhile. As the paper details, languages supported either cumbersome, exhaustively checked polymorphic exceptions, as in Haskell, or we had unchecked easily extensible monomorphic exceptions, as in ML, or we had checked, extensible exceptions using a universal type as in Java. Supporting exhaustively checked, easily extensible polymorphic exceptions seemed quite a challenge, which this paper solves using monadic error handling and nested polymorphic variants. The paper also gives a good overview of current techniques of exception checking in OCaml, ie. ocamlexc. The performance of such exceptions is understandably lower than native exceptions, given all the thunking and indirection that monads entail. The authors attempt various implementations and test their performance against native exceptions. Ultimately, monadic error management seems acceptable for actual error handling, but not for control flow as native exceptions are sometimes used in OCaml. One interesting extension is to consider how efficient the implementations would be given more sophisticated control flow operators, such as continuations, coroutines, or delimited continuations, or whether native exceptions can be salvaged using a type and effects system in place of monads. By naasking at 2008-07-11 15:16 | Functional | Implementation | Software Engineering | 12 comments | other blogs | 20553 reads
The irreducible physicality of security propertiesThe recent discussion around Safe and Secure Software in Ada involved some amount of discussion around what is involved in proving software secure, and what role do PLs play in this. I recommend two papers for further discussion:
So I hereby advance three slogans:
Edited following Dave Griffith's remarks. By Charles Stewart at 2008-04-15 14:07 | Software Engineering | 41 comments | other blogs | 14121 reads
Applied Metamodelling: A Foundation for Language Driven DevelopmentApplied Metamodelling: A Foundation for Language Driven Development (2004) An excerpt:
In software engineering circles the term "language driven development" is synonymous with "language oriented programming", a term which LtU members are more familiar with (thanks to Martin Ward's article Language Oriented Programming which first appeared in 1994, and then Martin Fowler's essays on the topic). The book hasn't appeared on the radar here on LtU, despite 41 citations. I suspect this is due in part to only one citation at Citeseer, and the lack of cross-talk between computer scientists and software engineers. There are a lot of similarities between the XMF language (discussion at LtU) and that of the Katahdin language (discussion at LtU). Other related discussions here at LtU, include Language Workbenches: The Killer App for DSLs - about the essay by Martin Fowler, Ralph Johnson: Language workbenches - a response to Fowler's essay, XActium - Lightweight Language Engineering? - which discusses an essay about a previous version of XMF, Generating Interpreters? , Language Oriented Programming - discusses an essay by Jetbrain's Sergey Dmitriev, "Language Oriented Programming" Meta Programming System - discussion of the Jetbrain MPS system, The DSL, MDA, UML thing again... - an older discussion on the relationship between DSLs and MDA. (Disclaimer: Some may notice that I am mentioned on the XMF web site, but this is just because I subjected their XMF language to a number of grueling challenges which they passed with flying colors: see the language snippets in the documentation. I have no affiliation with their company.) By cdiggins at 2008-03-07 19:07 | DSL | Meta-Programming | Software Engineering | 18 comments | other blogs | 20267 reads
Software Craftsmanship: Apprentice to JourneymanO'Reilly is hosting a collaborative book/wiki called Software Craftsmanship: Apprentice to Journeyman. It's structured as a series of "recipes" on how to approach different aspects of software development. By Daniel Yokomizo at 2008-02-24 21:50 | Software Engineering | 6 comments | other blogs | 11522 reads
Jumbala : An Action Language for UML State MachinesJumbala : An Action Language for UML State Machines, Juro Dubrovin, Master's Thesis.
This is interesting because it is another example of efforts from the modeling community towards combining models and programming languages to provide a single compilable specification of software. Some of these efforts are being coordinated using the term model-driven architecture (MDA). [edit: fixed formatting issues] By cdiggins at 2008-02-05 19:17 | OOP | Software Engineering | 4 comments | other blogs | 13919 reads
Kermeta Programming LanguageIn my recent adventures researching modeling languages I came across a language not previously mentioned on Lambda-the-Ultimate.org called Kermeta. From the reference manual:
There is a list of published papers related to Kermeta here. J&: Nested Intersection for Scalable Software Composition
J&: Nested Intersection for Scalable Software Composition
by Nathaniel Nystrom, Xin Qi, Andrew C. Myers. 2006.
We identify the following requirements for general extension and composition of software systems:Compare this approach to one taken by Scala (or read the section 7). By Andris Birkmanis at 2008-01-04 12:44 | Software Engineering | Type Theory | 16 comments | other blogs | 10931 reads
DySy: Dynamic Symbolic Execution for Invariant Inference
DySy: Dynamic Symbolic Execution for Invariant Inference. Christoph Csallner, Nikolai Tillmann, Yannis Smaragdakis
Dynamically discovering likely program invariants from concrete test executions has emerged as a highly promising software engineering technique. Dynamic invariant inference has the advantage of succinctly summarizing both “expectedâ€program inputs and the subset of program behaviors that is normal under those inputs. In this paper, we introduce a technique that can drastically increase the relevance of inferred invariants, or reduce the size of the test suite required to obtain good invariants. Instead of falsifying invariants produced by pre-set patterns, we determine likely program invariants by combining the concrete execution of actual test cases with a simultaneous symbolic execution of the same tests. The symbolic execution produces abstract conditions over program variables that the concrete tests satisfy during their execution. In this way, we obtain the benefits of dynamic inference tools like Daikon: the inferred invariants correspond to the observed program behaviors. At the same time, however, our inferred invariants are much more suited to the program at hand than Daikon’s hardcoded invariant patterns. The symbolic invariants are literally derived from the program text itself, with appropriate value substitutions as dictated by symbolic execution. We implemented our technique in the DySy tool, which utilizes a powerful symbolic execution and simplification engine. The results confirm the benefits of our approach. In Daikon’s prime example benchmark, we infer the majority of the interesting Daikon invariants, while eliminating invariants that a human user is likely to consider irrelevant. The Daikon invariant detector mentioned in the abstract is here. Seems like a pretty straightforward idea, I guess, but as always: God is in the details. Samurai - Protecting Critical Data in Unsafe LanguagesSamurai - Protecting Critical Data in Unsafe Languages. Karthik Pattabiraman, Vinod Grover, Benjamin G. Zorn.
An acceptable overhead for the pleasure of using an unsafe language? You decide. |
Browse archives
Active forum topics |
Recent comments
23 weeks 2 days ago
23 weeks 3 days ago
23 weeks 3 days ago
45 weeks 4 days ago
49 weeks 6 days ago
51 weeks 3 days ago
51 weeks 3 days ago
1 year 2 weeks ago
1 year 6 weeks ago
1 year 6 weeks ago