We’re happy to announce that all three interfaces (CmdStan, PyStan, and RStan) are up and ready to go for Stan 2.4. As usual, you can find full instructions for installation on the

Here are the release notes with a list of what’s new and improved:

New Features ------------ * L-BFGS optimization (now the default) * Cholesky factor of correlation matrix data type * enhanced effective range of normal_cdf to prevent underflow/overflow * added von Mises RNG * added ability to use scalars in all element-wise operations * allow matrix division for mixing scalars and matrices * vectorization of outcome variates in multivariate normal with efficiency boosts * generalization of multivariate normal to allow row vectors as means and variates Reorganization -------------- * move bin/print and bin/stanc to CmdStan; no longer generating main when compiling model from Stan C++ New Developer ------------- * Added Jeffrey Arnold as core Stan developer * Added Mitzi Morris as core Stan developer Bug Fixes --------- * modified error messages so that they're all 1-indexed instead of 0-indexed * fixed double print out of times in commands * const added to iterators to allow VS2008 compiles * fix boundary conditions on ordered tests * fix for pow as ^ syntax to catch illegal use of vectors (which aren't supported) * allow zero-length inputs to multi_normal and multi_student_t with appropriate log prob (i.e., 0) * fixed bug in inverse-Wishart RNG to match MCMCPack results with slightly asymmetric inputs * fixed problem with compiling user-defined function twice * fixed problem with int-only parameters for user-defined functions * fixed NaN init problems for user-defined functions * added check that user variable doesn't conflict with user function + doc * disallow void argument types in user-defined functions Code Cleanup and Efficiency Improvements ---------------------------------------- * removed main() from models generated from C++ Stan (they are now available only in CmdStan); removed no_main command options * reserve vector sizes for saving for sample recorder * removing many instances of std::cout from API (more still to go) * removed non-functional Nesterov optimization option * optimization code refactoring for testing ease * better constant handling in von Mises distribution * removed tabs from all source files * massive re-org of testing to remove redundant files and allow traits-based specializations, plus fixed for 1-indexing Testing ------- * added tests for log_softmax, multiply_lower_tri_self_transpose, tcrossprod * break out function signature tests into individual files, add many more * enhanced cholesky factor tests for round trip transforms and derivatives * extensive unit testing added for optimization * remove use of std::cout in all tests Example Models -------------- * lots of cleanup in links and models in ARM examples * added BUGS litter example with more stable priors than in the BUGS version (the original model doesn't fit well in BUGS as is, either) Documentation ------------- * add infix operators to manual * categorical_logit sampling statement * Cholesky factor with unit diagonal transform example * example of using linear regression for prediction/forecasting with notes * clarified some relations of naive Bayes to clustering vs. classification and relation to non-identifiability * new advice on multivariate priors for quad_form_diag * fix typo in multiply_lower_self_transpose (thanks to Alexey Stukalov) * fix formatting of reserved names in manual * fixed typo and clarified effective sample size doc

Wow—3 Stan posts in a row!

[…] With 2.4 out, I ran a quick test of how much speedup I could get by changing my old non-vectorized multi_normal sampling to the new vectorized form. I get a 40% time savings, without even trying hard. This is much better than I expected. […]