jc : An Optimizing Compiler for Janus



Janus is an instance of a concurrent constraint programming language due to Saraswat et al.: these languages are an elegant generalization of concurrent logic programming languages and constraint logic programming languages. The computational paradigm is one where a set of concurrently executing agents interact with each other via a shared store by adding constraints to the store and checking constraints against the store. A central idea is to maintain a close connection between the logical and operational semantics of programs by using logical entailment for synchronization purposes. This project is concerned with the development of program analysis, optimization, and implementation techniques for such languages. Many of the ideas and optimization techniques extend readily to other high level declarative programming languages and dynamically typed languages.


  • Inter-procedural Control Flow Analysis of First Order Programs with Tail Call Optimization, with Todd Proebsting. Draft, May 1996.
  • Return Value Placement and Tail Call Optimization in High Level Languages, with Peter Bigot. (A preliminary version of this paper appeared in Proc. 11th International Conference on Logic Programming, June 1994.)
  • A Simple Approach to Supporting Untagged Objects in Dynamically Typed Languages, with Peter Bigot. Journal of Logic Programming, to appear. (A preliminary version of this paper appeared in Proc. 1995 International Symposium on Logic Programming.)
  • Detection and Optimization of Suspension-Free Logic Programs, with David Gudeman and Peter Bigot. Journal of Logic Programming (Special Issue on High Performance Implementations), to appear.
  • Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages, with K. De Bosschere, D. Gudeman, and S. Kannan. Proc. 1994 ACM Symposium on Principles of Programming Languages.
  • Weighted Decision Trees, with S. Kannan and M. paithane. Proc. 1992 Joint International Conference and Symposium on Logic Programming.
  • jc: An Efficient and Portable Sequential Implementation of Janus, with D. Gudeman and K. De Bosschere. Proc. 1992 Joint International Conference and Symposium on Logic Programming.
    For questions/comments, contact: debray@cs.arizona.edu