In an earlier post I mentioned that one goal of the new introductory curriculum at Carnegie Mellon is to teach parallelism as the general case of computing, rather than an esoteric, specialized subject for advanced students. Many people are incredulous when I tell them this, because it immediately conjures in their mind the myriad complexities…
I recently diagnosed the root cause of a concurrency bug, CR6822370,
and thought it sufficiently interesting to share the details. (CR 6822370 actually represents a
cluster of bugs that are now thought to be related by a common underlying issue).
Briefly, we have a lost wakeup bug in the native C++ Parker::park() platform-specific
infrastructure code that implements java.util.concurrent.LockSupport.park().
The lost wakeup arises from a race that itself arises because of architectural
reordering that in turn occurs because of missing memory barrier instructions.
The lost wakeup may manifest as various 'hangs' or instances of progress failure.
Think writing a compiler is difficult? It is—unless you use Parrot, a complete compiler construction kit. With Parrot, crafting a new programming language is as easy as authoring a new website.
Program performance is always a concern, even in this era of high-performance hardware. This article, the first in a two-part series, guides you around the many pitfalls associated with benchmarking Java code. Part 2 covers the statistics of benchmarking and offers a framework for performing Java benchmarking. Because almost all new languages are virtual machine-based, the general principles the article describes have broad significance for the programming community at large.
L. Renggli, and O. Nierstrasz. Proceedings of the 2007 International Conference on Dynamic Languages: In Conjunction with the 15th International Smalltalk Joint Conference 2007, page 207--221. ACM, (2007)
J. Pallas, and D. Ungar. PLDI '88: Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation, page 268--277. New York, NY, USA, ACM, (1988)
R. Veldema, R. Hofman, R. Bhoedjang, C. Jacobs, and H. Bal. PPoPP '01: Proceedings of the eighth ACM SIGPLAN symposium on Principles and practices of parallel programming, page 83--92. New York, NY, USA, ACM, (2001)
R. Kaiabachev, and B. Richards. Proc. of Fifteenth IASTED International Conference on Parallel and Distributed Computing and Systems, page 648-653. Marina del Ray, CA, USA, (November 2003)
C. Stork, P. Housel, V. Haldar, N. Dalton, and M. Franz. Electronic Notes in Theoretical Computer Science, 59 (1):
142 - 157(2001)BABEL'01, First International Workshop on Multi-Language Infrastructure and Interoperability (Satellite Event of PLI 2001).
A. Georges, D. Buytaert, and L. Eeckhout. OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications, page 57--76. New York, NY, USA, ACM, (2007)
R. Ierusalimschy, L. de Figueiredo, and W. Celes. HOPL III: Proceedings of the third ACM SIGPLAN conference on History of programming languages, page 2-1--2-26. New York, NY, USA, ACM, (2007)
T. Batista, and M. Vieira. Journal of Universal Computer Science, 13 (6):
786--805(2007)\url|http://www.jucs.org/jucs_13_6/re_aspectlua_achieving_reuse|.