Jaynes is preceded and directly influenced by numerous high-quality systems and research groups. This page attempts to acknowledge these systems, and the people involved.

Probabilistic programming

There are a number of good references in both textbook and research paper form on probabilistic programming. In reference to this system, here are a few I would recommend:

There are also numerous papers about current systems:

Implementation and design

Jaynes is a context-oriented programming system for probabilistic programming. Internally, the current implementation closely follows the design of the dynamic DSL in Gen which also uses the notion of stateful execution contexts to produce the interfaces required for inference. Jaynes is focused on an optimized dynamic language which allows most of the Julia language to be used in expressing probabilistic programs.

I would recommend users of Jaynes become familiar with Gen - to understand the problems which Jaynes attempts to solve. The following papers may be useful in this regard:

In the design space of compiler metaprogramming tools, the following systems have been highly influential in the design of Jaynes

In particular, IRTools provides a large part of the core infrastructure for the implementation. Strictly speaking, Jaynes is not dependent on a fundamental mechanism which only IRTools provides (anything can be expressed with generated functions from Julia) but IRTools greatly reduces the level of risk in working with generated functions and lowered code.

Jaynes has also been influenced by Turing, the Poutine effects system in Pyro, and Unison lang. Jaynes does not implement algebraic effects in a rigorous (or static!) way, but the usage of execution contexts which control how certain method calls are executed is closely aligned with these concepts.

Finally, the probabilistic programming community in Julia is largely responsible for many of the ideas and conversations which lead to Jaynes. I'd like to thank Chad Scherrer, Martin Trapp, Alex Lew, Jarred Barber, George Matheos, Marco Cusumano-Towner, Ari Katz, Philipp Gabler, Valentin Churavy, Mike Innes, and Lyndon White for auxiliary help and discussion concerning the design and implementation of many parts of the system.