Releases: stan-dev/stanc3
Releases · stan-dev/stanc3
nightly: Merge pull request #1456 from stan-dev/test-coverage
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)
v2.33.0 (5 September 2023)
- Added tuple types to the language (#1100)
- The following deprecations have been turned into errors this version:
- The old array syntax, e.g.
int arr[5];
. Usearray[5] int arr;
instead. - Distribution functions ending in
_log
. Use either_lpdf
or_lpmf
. - The functions
binomial_coefficient_log
,multiply_log
, andcov_exp_quad
. Uselchoose
,lmultiply
, andgp_exp_quad_cov
respectively. - The
if_else
function. Use the ternary operatorcond ? true_value : false_value
- Use of CDFs with a
,
between the first and second argument. Use a|
. - Comments beginning with
#
. Use//
. - Use of
<-
for assignment. Use=
. - The
increment_log_prob
function. Use thetarget +=
statement. - The
get_lp()
function. Usetarget()
. - The use of nested multi-indices on the left hand side of an assignment statement.
For this version, these can all be automatically updated with the--canonicalize=deprecations
argument to the autoformatter. This is not guaranteed to work for versions following this one.
Additionally, the following identifiers are now reserved words:array
,offset
,multiplier
,lower
, andupper
.
(#1287)
- The old array syntax, e.g.
- Exposed vectorized signatures for
log_sum_exp
(#1344) - Exposed new functions
qr
,qr_thin
,eigendecompose_sym
,eigendecompose
,complex_schur_decompose
,svd
, andcsr_extract
. (#1346) - Added a
log_prob_impl
specialization specifically for reverse mode to improve code generation (#1327) - Fixed an issue where returning array literals could produce the wrong types in C++. (#1335)
- Fixed an issue with leading zeroes in real literals like
0E0
(#1336) - Fixed a bug with type promotion in the arguments to user-defined distributions generating bad C++. (#1338)
- Fixed optimization logic for deducing whether mixes of scalars, data matrices, and autodiff matrices can be promoted to SoA (#1347)
- Fixed an issue with the partial evaluator crashing on statements containing a mod-by-zero. (#1351)
--filename-in-msg
now also affects the name of the file shown in runtime exceptions. Useful for interfaces which use mangled or temporary names during compilation. (#1339)- Improved error message provided when the wrong return type is returned from a function.
Return statements now follow the same type promotion rules as assignment and function argument passing.
The typechecker now allows infinite loops (while (1)
without an internalbreak
) to be the end of a returning function. Previously, an (unreachable) return statement was needed following the loop.
(#1341) - Improved error messages for unsupported type in reduce_sum (#1332)
- Improved error messages when using a reserved word as a variable name. (#1343)
v2.33.0-rc1 (22 August 2023)
Tagging v2.33.0-rc1
v2.32.2 (15 May 2023)
- Fixed an issue in Stan, see release notes.