User loginNavigation |
ImplementationParrot 0.2.2 ReleasedParrot 0.2.2 has been released! Parrot is a versatile virtual machine for dynamic languages. Though originally designed for Perl 6, it's power and flexibility has generated a lot of interest in the language development community. Parrot is distributed with a number of sample compiler implementations at varying stages of completion, including partial compilers for common languages like lisp, scheme, tcl and python. The latest release features grammar and rule support in PGE, the Parrot Grammar Engine. Parrot also comes with utilties that convert PIR (Parrot Intermediate Representation) and PASM (Parrot Assembly) into PBC (Parrot bytecode). Those who are interested in learning how to implement languages for Parrot should start with the documentation. You may also be interested in my own (extremely feeble) attempt at implementing PIR generators in Haskell and Ocaml. A Typed, Compositional Logic for a Stack-Based Abstract Machine
A Typed, Compositional Logic for a Stack-Based Abstract Machine. Nick Benton. MSR-TR-2005-84. June 2005.
We define a compositional program logic in the style of Floyd and Hoare for a simple, typed, stack-based abstract machine with unstructured control flow, global variables and mutually recursive procedure calls. Notable features of the logic include a careful treatment of auxiliary variables and quantification and the use of substructural typing to permit local, modular reasoning about program fragments. Semantic soundness is established using an interpretation of types and assertions defined by orthogonality with respect to sets of contexts. By Ehud Lamm at 2005-07-02 09:14 | Implementation | Semantics | Type Theory | 2 comments | other blogs | 9534 reads
GHC Survey ResultsThe results are in for the 2005 Glasgow Haskell Compiler user survey, with a summary and all the raw data. The comments were the highlight for me; see for instance Applications I use GHC for. (Previous LtU mention) By Matthew Morgan at 2005-06-28 15:17 | Functional | Implementation | Software Engineering | login or register to post comments | other blogs | 4924 reads
Accurate step counting
Accurate step counting. Catherine Hope and Graham Hutton.
Starting with an evaluator for a language, an abstract machine for the same language can be mechanically derived using successive program transformations. This has relevance to studying both the space and time properties of programs because these can be estimated by counting transitions of the abstract machine and measuring the size of the additional data structures needed, such as environments and stacks. In this article we use this process to derive a function that accurately counts the number of steps required to evaluate expressions in a simple language. Somewhat related to a recent discussion (in which I mentioned EOPL1's scetion on deriving a compiler and machine from an interpreter). The paper is, of course, worth checking out regardless. By Ehud Lamm at 2005-06-18 16:19 | Functional | Implementation | Theory | 1 comment | other blogs | 5312 reads
HP's DynamoDynamic optimization refers to the runtime optimization of a native program binary. This paper describes the design and implementation of Dynamo, a prototype dynamic optimizer that is capable of optimizing a native program binary at runtime... Contrary to intuition, we demonstrate that it is possible to use a piece of software to improve the performance of a native, statically optimized program binary, while it is executing. Dynamo not only speeds up real application programs, its performance improvement is often quite significant. For example, the performance of many +O2 optimized SPECint95 binaries running under Dynamo is comparable to the performance of their +O4 optimized version running without Dynamo. I think Dynamo is pretty well known, but in the light of the Apple switch to x86, it offers perspective on the possibility of using JIT compilation to translate binaries. The application to programming languages is also straightforward. By Jeff Cutsinger at 2005-06-10 22:11 | Implementation | login or register to post comments | other blogs | 13426 reads
Judy StoresA Judy tree is generally faster than and uses less memory than contemporary forms of trees such as binary (AVL) trees, b-trees, and skip-lists. When used in the "Judy Scalable Hashing" configuration, Judy is generally faster then a hashing method at all populations. Some of the reasons Judy outperforms binary trees, b-trees, and skip-lists:
The Achilles heel of a simple digital tree is very poor memory utilization, especially when the N in N-ary (the degree or fanout of each branch) increases. The Judy tree design was able to solve this problem. In fact a Judy tree is more memory-efficient than almost any other competitive structure (including a simple linked list). A highly populated linear array[] is the notable exception. Worth a look, considering the open-source LGPL license and range of applications. HP released this library in 2004. From the PDF manual, Judy arrays are remarkably fast, space-efficient, and simple to use. No initialization, configuration, or tuning is required or even possible, yet Judy works well over a wide dynamic range from zero to billions of indexes, over a wide variety of types of data sets -- sequential, clustered, periodic, random. By Mark Evans at 2005-05-28 03:33 | General | Implementation | Software Engineering | 18 comments | other blogs | 62697 reads
dtracing Python
Speed is often used as an excuse for bad programming (premature optimization is the root of all evil and all that). Yet understanding the causes of poor performance of the language system, as opposed to user code, isn't all that easy.
If you are using an open source language implementation, and have access to something clever like dtrace, it might be easier than you think. By Ehud Lamm at 2005-05-13 09:12 | Implementation | login or register to post comments | other blogs | 5505 reads
alphaWorks: Pattern Modeling and Analysis Tool for Java Garbage CollectorPMAT analyzes IBM verbose GC traces by parsing the traces and building pattern models. PMAT recommends key configurations by executing a diagnosis engine and pattern modeling algorithm. If there are any errors related with Java heap exhaustion or fragmentation in the verbose GC trace, PMAT can diagnose the root cause of failures. PMAT provides rich chart features that graphically display Java heap usage. Sounds useful. If anyone has the time to download and check this out, it would be interesting to hear what you think. By Ehud Lamm at 2005-04-30 10:39 | Implementation | login or register to post comments | other blogs | 5940 reads
The Fortress Language Spec v0.618The Fortress Language Spec v0.618 We've already discussed the Fortress project at Sun's Programming Language Research lab. The project seems to be progressing well: they have now released a preliminary version of the language spec as a tech report. This should help assuage the folks who were grumbling about the hype and market-speak of Sun's promotional article. Their PL research team includes some real Smarty McSmartpants, so I expect really good things from them. From a cursory glance at the spec, there seem to be many interesting features, including:
Future work includes proving type soundness, apparently. It is so much fun when the luminaries start working on new languages. History in the making! jhc
jhc is a haskell compiler which aims to produce the most efficient programs possible via whole program analysis and other optimizations.
This seems like an interesting project, for example: Region Inferencing, Compilation by transformation with 2 general intermediate languages, very modern design, using rank-n polymorphism, monad transformers, generic programing, and existential types. Note, howver, that there are quite a few problems (scaling, memory leaks, etc.) Maybe some of you might want to offer a helping hand... By Ehud Lamm at 2005-04-20 11:27 | Functional | Implementation | 2 comments | other blogs | 6297 reads
|
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
23 weeks 35 min ago
23 weeks 41 min ago
45 weeks 1 day ago
49 weeks 3 days ago
51 weeks 8 hours ago
51 weeks 8 hours ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago