Skip to content

Releases: stan-dev/stanc3

nightly: Merge pull request #1456 from stan-dev/test-coverage

28 Oct 17:20
5692dc4
Compare
Choose a tag to compare

nightly: 5692dc4 Merge pull request #1456 from stan-dev/test-coverage

v2.35.0 (3 June 2024)

03 Jun 14:51
Compare
Choose a tag to compare
  • Rename sampling statement (~) to distribution 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 to reject() 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)

23 May 09:33
3f0b2a6
Compare
Choose a tag to compare
Pre-release

nightly: 3f0b2a6 Merge pull request #1426 from stan-dev/rename-sampling-distribution

v2.35.0-rc1

13 May 16:21
2c42646
Compare
Choose a tag to compare

nightly: 2c42646 Merge pull request #1421 from stan-dev/fix/complex-matrix-division-miscompilation

v2.34.0 (16 January 2024)

16 Jan 12:21
59ad5d0
Compare
Choose a tag to compare
  • 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:
    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)
    }
    (#1360)
  • 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)

09 Jan 18:28
Compare
Choose a tag to compare
Pre-release
Remove unused dispatch config

v2.33.1 (13 September 2023)

13 Sep 18:49
934496d
Compare
Choose a tag to compare
  • Fixed several issues with the code generation of user-defined functions which accepted tuples (#1356)

v2.33.0 (5 September 2023)

05 Sep 13:27
Compare
Choose a tag to compare
  • 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];. Use array[5] int arr; instead.
    • Distribution functions ending in _log. Use either _lpdf or _lpmf.
    • The functions binomial_coefficient_log, multiply_log, and cov_exp_quad. Use lchoose, lmultiply, and gp_exp_quad_cov respectively.
    • The if_else function. Use the ternary operator cond ? 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 the target += statement.
    • The get_lp() function. Use target().
    • 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, and upper.
      (#1287)
  • Exposed vectorized signatures for log_sum_exp (#1344)
  • Exposed new functions qr, qr_thin, eigendecompose_sym, eigendecompose, complex_schur_decompose, svd, and csr_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 internal break) 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)

22 Aug 11:44
d5c25b6
Compare
Choose a tag to compare
Pre-release
Tagging v2.33.0-rc1

v2.32.2 (15 May 2023)

15 May 18:18
Compare
Choose a tag to compare
  • Fixed an issue in Stan, see release notes.