Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stanc3 release for Cmdstan 2.23 #498

Closed
rok-cesnovar opened this issue Apr 9, 2020 · 13 comments
Closed

Stanc3 release for Cmdstan 2.23 #498

rok-cesnovar opened this issue Apr 9, 2020 · 13 comments

Comments

@rok-cesnovar
Copy link
Member

The next Cmdstan release is scheduled for the 20th of April.
For stanc3 that means we will make release binaries for 2.23.

We will once again have a feature freeze period that will start on the 13th of April. That means that no new features should be merged between the 13th and 20th of April.

We currently have 2 non-WIP PRs open for new features: Pedantic mode and reduce_sum.

The closing of this issue will also serve as a mark that normal merging can continue.

I am creating this issue for two reasons:

  • as a formal notification to all stanc3 devs that there will be a feature freeze
  • to have a central topic for all thing related to the release.
@rok-cesnovar
Copy link
Member Author

I am also looking for someone to look at #451 for the Ocaml code review. For the functionalites of the PR we are already testing it rigorously.

@rok-cesnovar
Copy link
Member Author

rok-cesnovar commented Apr 9, 2020

There are also the following issues that should be fixed in time for the release (not necesarilly for the feature freeze). If anyone has time to look at them:

@bbbales2
Copy link
Member

Looks like the language implementation for stan-dev/math#1650 never made it through. The docs did though. We should probably revert the docs.

@rok-cesnovar
Copy link
Member Author

Good catch. Its an easy PR to add it to stanc3, but I dont want to rush it and there are plenty of stanc3 bug fix PRs for review already.

@bbbales2
Copy link
Member

stan-dev/math#1636 did not get language implementations either. Just writing this here so it doesn't get lost.

@rok-cesnovar
Copy link
Member Author

Ah yes, I dropped the ball there.

@bbbales2
Copy link
Member

bbbales2 commented Apr 13, 2020

Here's a draft of the Math release notes.

Let me know if I left anything off or didn't explain something correctly.

Edits:

  1. Removed Stan-facing vs. Math-facing distinction. The interfaces can make the distinction of what is exposed in their release notes.

  2. Added contributor summary from @SteveBronder


Math 3.2.0 Release Notes

Feature summary:

  • Added new reduce_sum utility for parallelizing calculations over multiple cores of one computer
  • Sundials upgrade to version 5.2.0
  • Support for size 0 matrices [Ben: This needs checked by someone in release candidate, it might be just a Math-facing feature]
  • discrete_range_lpmf/lcdf/lccdf/rngs/etc. added for uniform discrete random variable
  • Added row vector, array and int_array construction utilities
  • Adds reverse function for vectors, row vectors, and std::vectors
  • Added release notes section to pull request to make assembling release notes easier (this must be filled out for new pulls)
  • Added apply operator (standin for C++17 apply)
  • Added support for complex numbers at all levels of the autodiff library

Bugfix summary:

  • Fixed problems with vectorizing neg_binomial_* functions that lead to wrong answers
  • Improved lbeta to be more numerically stable with one large and one small argument
  • Improved numerical stability with binomial_coefficient_log, neg_binomial_2_lpmf, and neg_binomial_2_log_lpmf computations
  • Fixed problem with wrong gradients for large arguments to log_sum_exp
  • Fixed bug where normal_id_glm did not work with a sigma is not an autodiff type
  • Fixed problem with makefiles on Windows
  • Fix ode gradients with respect to t0

There were also extensive work in various parts of the Math library adding docs, cleaning up distribution functions, adding tests, generalizing functions to work with special Eigen temporary types, working with new template functions (return_type_t, etc.), and otherwise making quality of life improvements.

Thanks to everyone who submitted and reviewed pull requests! The list of pull request submitters for this release are (in no particular order): @t4c1, @mcol, @martinmodrak, @rok-cesnovar, @serban-nicusor-toptal, @SteveBronder, @kedartal, @wds15, @bob-carpenter, @peterwicksstringfield, @andrjohns, @pgree, @IvanYashchuk, and @bbbales2.

Pull request details:

Contributor Title
t4c1 : (#1824) Add unary operations minus and logical negation to kernel generator
wds15 : (#1819) Feature/issue 1818 upgrade sundials 520
SteveBronder : (#1813) adds reduce_sum and tests
t4c1 : (#1802) Add extended kernel generator docs
t4c1 : (#1801) Add support for device functions to kernel generator
SteveBronder : (#1800) Adds auxilary functions needed for reduce_sum
t4c1 : (#1797) Add broadcasting to kernel generator
SteveBronder : (#1791) adds an apply function and cleans adj_jac_apply to use it
peterwicksstringfield : (#1780) Feature/elementwise check
bob-carpenter : (#1774) Feature/0123 complex funs
t4c1 : (#1769) Add transposition to kernel generator
t4c1 : (#1767) avoid redundant buffer allocations in kernel generator
t4c1 : (#1751) Allow kernel generator to calculate multiple outputs in single kernel
t4c1 : (#1740) Add colwise reductions to kernel generator
bob-carpenter : (#1736) Feature/1734 return scalar meta
andrjohns : (#1727) Eigen::Map and elementwise functions
t4c1 : (#1726) Bugfix common subexpression elimination in kernel generator
bob-carpenter : (#1720) Feature/0123 complex spec
mcol : (#1716) Add discrete_range_cdf, discrete_range_lcdf and discrete_range_lccdf
martinmodrak : (#1706) Using local_nested_autodiff for all instances of nested autodiff
mcol : (#1680) Add discrete_range_rng(lower, upper) and discrete_range_lpmf
wds15 : (#1675) avoid vari on chain-stack if var is constructed from an arithmetic type
martinmodrak : (#1657) Improved behavior of expect_near_rel
mcol : (#1650) Add reverse
mcol : (#1636) Add row vector, array and int_array construction utilities
t4c1 : (#1623) Add rowwise reductions to kernel generator
martinmodrak : (#1575) Additional tests for distributions
martinmodrak : (#1830) More stable implementation of neg_binomial_2_log_lpmf

Fixes

Contributor Title
mitzimorris : (#1842) Bugfix/1839 make shell linux
bob-carpenter : (#1837) return value type for complex abs; fixes #1836
bbbales2 : (#1834) Fix ode gradients with respect to t0 (Issue #1833)
rok-cesnovar : (#1825) Add licensing info to log_modified_bessel_first_kind
bbbales2 : (#1810) Added arithmetic version of pow (Fixes: #1809)
t4c1 : (#1807) fixed normal_id_glm for const sigma
rok-cesnovar : (#1795) Makefiles: Add $(strip) to findfiles function
SteveBronder : (#1794) Cleanup requires with macros
rok-cesnovar : (#1789) Reorganize Jenkins test stages
rok-cesnovar : (#1786) Add a release notes section in the pull request template
rok-cesnovar : (#1784) Makefiles: strip newlines in findiles and fix runChecks call
serban-nicusor-toptal : (#1777) Moved verify changes Jenkins step to shared libraries.
pgree : (#1772) Changed calculation of log_sum_exp(x1, x2)
peterwicksstringfield : (#1771) More documentation fixups.
SteveBronder : (#1768) [WIP][WIP] Add docs and generic value type signatures for reduce_sum
rok-cesnovar : (#1765) Cleanup duplicated overloads of scalar std:: functions
mcol : (#1762) Remove fwd versions of qr_Q and qr_R
mcol : (#1761) Move size_zero() calls after other consistency checks (L-Z)
mcol : (#1758) Move size_zero() calls after other consistency checks (A-I)
peterwicksstringfield : (#1756) Documentation fixups
t4c1 : (#1754) Generalize */fun starting with cr-d
t4c1 : (#1747) Generalize */fun startimg with chole-cov
mcol : (#1744) Reuse intermediate computations in distributions part 1
rok-cesnovar : (#1743) Update license.md year to 2020
t4c1 : (#1732) Generalize */fun starting with a-chol2
mcol : (#1730) Avoid 'Blocked loading mixed active content' errors
mcol : (#1728) Keep computations in log space and simplify expressions in beta binomial_*cdf
serban-nicusor-toptal : (#1724) Run CI/CD only on Source Code
pgree : (#1722) remove discontinuity in lub_constrain; fixes #1441
mcol : (#1718) Remove size zero checks from check_multiplicable
mcol : (#1717) Remove promote_common and common_type
mcol : (#1715) Cleanup mdivide_* and tests
rok-cesnovar : (#1712) fix develop
rok-cesnovar : (#1711) Bugfix/include what you use in /prim/fun
rok-cesnovar : (#1707) Add namespace qualifiers to size()
mcol : (#1705) Check for positive definiteness only after computing the LLT factors
mcol : (#1701) Don't throw when computing the inverse of a size zero matrix
mcol : (#1698) Improve tests and documentation for quad_form and quad_form_sym
mcol : (#1688) Add positive definite checks to mdivide_left_spd
mcol : (#1685) Allow multiply for size 0 inputs
kedartal : (#1684) Explicitly call stan::math::size (fix ambiguous call versus std::size)
mcol : (#1682) Check for consistent sizes before comparing arguments
mcol : (#1678) Reorganize files after flatten
mcol : (#1673) Remove Boost deprecation warning
mcol : (#1665) make develop build again
mcol : (#1663) correctness fixes in neg_binomial_* functions
mcol : (#1661) Move vectorize files to meta folder
t4c1 : (#1660) Generalize view and size functions
mcol : (#1655) Cleanup in poisson_cdf, poisson_lccdf and poisson_lcdf
serban-nicusor-toptal : (#1653) Fix permission denied in Jenkins pipeline
mcol : (#1649) Clean up code to use index_type_t, return_type_t and partials_return_t
t4c1 : (#1628) Generalize operator-like functions
martinmodrak : (#1614) Improved numerical stability of binomial_coefficient_log
rok-cesnovar : (#1567) Cleanup the use of find in makefile
SteveBronder : (#1525) Generic var templates for operators and std::iterator_trait var/fvar specialization
martinmodrak : (#1497) Fixing negative binomial phi cutoff
t4c1 : (#1796) Bugfix: make kernel generator wait for events on matrices
mcol : (#1674) Document template parameters in /prim
mcol : (#1668) Rename spaced_* to linspaced_*
wds15 : (#1821) clarify README.md

@bbbales2
Copy link
Member

Here are a couple other pulls with stuff we need to add to stanc3/the docs: stan-dev/math#1680, stan-dev/math#1716

I wouldn't say it's dropping the ball on this stuff, cause there's no deadline, we just don't want them to get lost.

@SteveBronder
Copy link
Contributor

I need to put this somewhere better but here is the script I used for aggregating all the PRs that happened since last release when I did the release notes before

https://gist.github.com/SteveBronder/bdfe99e216e71a12a41832249516f913

@SteveBronder
Copy link
Contributor

Added support for complex numbers at all levels of the autodiff library

Idk if this is a "stan facing" feature yet since users can't access it yet through the stan language itself (though it will be after we add the stuff it needs to the compiler and io). Might be easier to rephrase this as External vs. Internal API changes or something. But like also whatever ya know

@bbbales2
Copy link
Member

Good point. Changed

@rok-cesnovar
Copy link
Member Author

rok-cesnovar commented Apr 22, 2020

Stanc3 release notes:

  • Added support for reduce_sum.
  • Fixed generated code bug for user-defined rng functions.
  • Fixed uncaught exception for multiple indexes for arrays.
  • Improved ternary-if typechecking.
  • Fixed the handling of multiple spaces in "transformed data" and "transformed parameters".
  • Separated parser warning for declaring a variables name as a keyword.
  • Switched to using JSON format when generating mock dataset.
  • Added exhaustive list of keyword tokens to keyword parser errors.
  • Added the use of matrix_cl overloaded math signatures for GLMs with tilde.
  • Added using std::pow to the generated model code.
  • Added specifying include files with < > brackets in addition to quotes.
  • Added an error on model name that starts with a number or non-underscore symbol.
  • Fixed the spurious integer warning bug.
  • Fix the offset without multiplier or multiplier without offset bug.
  • Removed the order dependency of offset/multiplier and lower/upper.
  • Fixed code generation for foreach loop iteration over elements of sliced arrays.
  • Fixed transform_inits for constrained types.

@rok-cesnovar
Copy link
Member Author

Version released. Looks great. Thanks to all that contributed!

If anyone has anything to add on the topic of the release of stanc3 for 2.23 feel free to post here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants