Releases: stan-dev/stanc3
Releases · stan-dev/stanc3
nightly: Refactor: Unify majority of stanc.exe and stanc.js code (#1477)
v2.36.0 (10 December 2024)
- Removed code following the last round of syntax deprecations that is currently scheduled. The final one (use of
real
values in conditionals) is now a type error and can no longer be automatically canonicalized. (#1420) - Added the
jacobian +=
statement, an analogue oftarget +=
but which can be conditionally disabled by Stan's algorithms when a unadjusted estimate is required. (#1435, #1437, #1471) - Added
stochastic_row_matrix
andstochastic_column_matrix
transforms for matrix types. (#1442) - Added the
sum_to_zero_vector
transform for vector types. (#1443) - Added distribution: beta_neg_binomial, with corresponding lpdf, cdf, lcdf, lccdf, and rng functions. (#1452, #1459, #1467)
- Added all-vector signatures to the newer versions of
wiener_lpdf
. (#1451) stanc.js
can now accept models which contain#include
statements. A fourth argument is available on the javascript stanc function which must be eitherundefined
or a object mapping included file names to Stan source code as strings. (#1433)- Enabled OpenCL support for the
binomial_logit
andbinomial_logit_glm
distributions. (#1368) - Fixed an issue where certain overloads of distributions could lead to the
~
statement producing uncompilable C++. (#1466, #1474) - Fixed an issue where
operator/
was not generating the correct C++ for complex linear algebra types. (#1421) - Fixed an issue where certain variable names would end up conflicting with system-specific macros in the generated C++. (#1429)
- Fixed an issue where void functions were not given the same checks as returning functions, leading to uncompilable C++ in some cases. (#1471)
- Updated parameter code generation to use
auto
so that the parameter types for matrices can be Eigen maps. (#1441) - Rolled back js_of_ocaml to 5.4.0 for compatibility with QuickJS. (#1427)
- Added builds of
stanc.js
with pretty-printing and debug info. (#1440)
v2.36.0-rc2
v2.36.0-rc1: Merge pull request #1467 from stan-dev/feature/beta_neg_binomial_rng
v2.35.0 (3 June 2024)
- Rename
sampling statement (~)
todistribution statement (~)
to be consistent with the docs changes. (#1426) - The generated C++ no longer assumes that the RNG used in Stan is specifically the
boost::ecuyer1988
generator, but uses a type alias defined in the Stan library. (#1395) - Fixed an issue where multiple
reject
statements could cause the C++ compiler to fail. (#1396) - Giving a variable the name
jacobian
is now deprecated. This name is being reserved for future language extensions. (#1397) - When encountering an unknown identifier that matches a known suffixed function without its suffix, add the known function name to the error message. (#1401)
- Added
fatal_error()
, which is similar toreject()
but rather than signaling an error which is recoverable, signals an error which should terminate execution immediately.fatal_error
is now a reserved word. (#1402) - Exposed the new overloads of
wiener_lpdf
added to Stan Math by @Franzi2114. (#1411) - Added a better error message when a program attempts to use the removed array syntax. (#1413)
- Use tabs to position error message cursor when appropriate. (#1414)
- Replaced the link show when the deprecated
lkj_cov
distribution is used with the new link (see stan-dev/docs#694). (#1415) - The compiler should display a cleaner error if it encounters an internal error. (#1416)
- Clarified the error messages generated by a syntax error on the right side of an assignment statement. (#1417)
- Removed code following the last round of syntax deprecations that is currently scheduled. The final one (use of
real
values in conditionals) is now a type error and can no longer be automatically canonicalized. (#1420) - Fixed an issue where
operator/
was not generating the correct C++ for complex linear algebra types. (#1421) - Rollback js_of_ocaml to 5.4.0 for compatibility with QuickJS. (#1427)
v2.35.0-rc2 (23 May 2024)
v2.35.0-rc1
v2.34.0 (16 January 2024)
- Added the
binomial_logit_glm
distribution (#1367) - Added the
dirichlet_multinomial
distribution. (#1389) - Added the ability to unpack a tuple during an assignment. For example, the following is now valid:
(#1360)
parameters { matrix[N, M] A; } model { matrix[N, M] Q; matrix[M, M] R; (Q, R) = qr_thin(A); // qr_thin returns a tuple(matrix, matrix) }
- Exposed vectorized signatures for the
atan2
function. (#1364) - The Stan compiler will now warn you when you reassign a variable to itself. (#1358)
- Updated the OCaml-to-JS compiler used to create stanc.js (#1365, #1381)
- Updated the compiler to use OCaml 4.14 and newer versions of its dependencies. (#1366)
- Reverted a change to SoA initialization, as the Math library has implemented a better fix. (#1376)
- Fixed an issue with clang compilers and constructing tuples. (#1382)
- The compiler no longer recognizes language constructs removed in 2.33. (#1388)
- The deprecated implicit conversion of reals to boolean conditions has been removed. (#1388)
v2.34.0-rc1 (8 January 2024)
Remove unused dispatch config
v2.33.1 (13 September 2023)
- Fixed several issues with the code generation of user-defined functions which accepted tuples (#1356)