  We present the preliminary high-level design and features of DynamicPPL.jl, a
modular library providing a lightning-fast infrastructure for probabilistic
programming. Besides a computational performance that is often close to or
better than Stan, DynamicPPL provides an intuitive DSL that allows the rapid
development of complex dynamic probabilistic programs. Being entirely written
in Julia, a high-level dynamic programming language for numerical computing,
DynamicPPL inherits a rich set of features available through the Julia
ecosystem. Since DynamicPPL is a modular, stand-alone library, any
probabilistic programming system written in Julia, such as Turing.jl, can use
DynamicPPL to specify models and trace their model parameters. The main
features of DynamicPPL are: 1) a meta-programming based DSL for specifying
dynamic models using an intuitive tilde-based notation; 2) a tracing
data-structure for tracking RVs in dynamic probabilistic models; 3) a rich
contextual dispatch system allowing tailored behaviour during model execution;
and 4) a user-friendly syntax for probabilistic queries. Finally, we show in a
variety of experiments that DynamicPPL, in combination with Turing.jl, achieves
computational performance that is often close to or better than Stan.
