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.
H. Burchell, and S. Marr. Proceedings of the 17th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages, page 8. ACM, (October 2025)
A. Endo, and A. Møller. 39th European Conference on Object-Oriented Programming (ECOOP 2025), volume 333 of Leibniz International Proceedings in Informatics (LIPIcs), page 9:1--9:28. Dagstuhl, Germany, Schloss Dagstuhl – Leibniz-Zentrum für Informatik, (2025)
Y. Lin, S. Blackburn, A. Hosking, and M. Norrish. Proceedings of the 2016 ACM SIGPLAN International Symposium on Memory Management, page 89--98. New York, NY, USA, ACM, (Jun 14, 2016)
S. Blackburn, P. Cheng, and K. McKinley. Proceedings of the 26th International Conference on Software Engineering, page 137--146. USA, IEEE, (May 23, 2004)
M. Ager, D. Biernacki, O. Danvy, and J. Midtgaard. Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming, page 8--19. New York, NY, USA, ACM, (Aug 27, 2003)
D. Warren. Technical Note 309. SRI International, Artificial Intelligence Center, Computer Science and Technology Division, Menlo Park, CA, USA, (October 1983)
D. Van Horn, and M. Might. Proceedings of the 15th ACM SIGPLAN international conference on Functional programming, page 51--62. New York, NY, USA, Association for Computing Machinery, (Sep 27, 2010)
M. Rigger, R. Schatz, R. Mayrhofer, M. Grimmer, and H. Mössenböck. Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems, page 377--391. ACM, (2018)
H. Burchell, O. Larose, and S. Marr. Proceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, ACM, (September 2024)
W. Zhao, S. Blackburn, and K. McKinley. Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation, page 76--91. ACM, (Jun 9, 2022)
D. Anderson, G. Blelloch, and Y. Wei. Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, page 526--541. ACM, (Jun 18, 2021)