# New v2.17.1 release for Math and Stan?

**URL:** <https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442>\
**Category:** Developers\
**Tags:** maintenance\
**Created:** [November 6, 2017, 6:29pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442 "2017-11-06T18:29:37Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 9, 2017, 8:51pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/41 "2017-11-09T20:51:12Z")

</div>

We have vaguely been using the git flow workflow for several years without actually following its tenets. Branching off of master rather than develop when you have a critical bugfix is one of the tenets though. In general, I agree about not cherry-picking, but I did in this one case to fix the tests.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 9, 2017, 8:52pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/42 "2017-11-09T20:52:14Z")

</div>

But one is not formally a revert; it is just a change that yields the same lines as the revert does.

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 9, 2017, 8:53pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/43 "2017-11-09T20:53:28Z")

</div>

Agreed. I don’t think there is a formal “Revert” commit though, is there? AFAIK the `revert` command just constructs the inverse commit for you.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 9, 2017, 8:55pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/44 "2017-11-09T20:55:19Z")

</div>

A formal `git revert` is a bit different because you cannot then merge the branch again (not that we want to in this situation).

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 9, 2017, 9:24pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/45 "2017-11-09T21:24:02Z")

</div>

I can’t find any doc to that effect - do you have a link? Not that it matters for this really, just curious. git provides infinite content to learn about, it seems.

Anyway would you be okay with just creating a new tag for v2.17.1 that has a commit that doesn’t live anywhere else? And then the weird history is confined to a small short-lived branch and not the main timelines of master or develop.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 9, 2017, 11:03pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/46 "2017-11-09T23:03:28Z")

</div>

[https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html](https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.html)

The unit tests and test-headers pass after merging develop into bugfix/revert\_string with a one-line change, so I think that is going to be fine.

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 9, 2017, 11:15pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/47 "2017-11-09T23:15:28Z")

</div>

Hm, not seeing it in there but I’ll look further.

What’s your objection to a v2.17.1 tag with an orphaned commit?

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 10, 2017, 2:07pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/48 "2017-11-10T14:07:58Z")

</div>

Also what commit is 35f6f86a4a? I don’t seem to have that hash locally…?

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 10, 2017, 2:27pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/49 "2017-11-10T14:27:49Z")

</div>

It may be 34df1bcce31a45ebd83abd38718c4b940eb44adb for you.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 10, 2017, 2:30pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/50 "2017-11-10T14:30:19Z")

</div>

If we release off an orphaned commit and someone checks out master, they have the slow version. All interfaces should be using the master branch.

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 10, 2017, 3:23pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/51 "2017-11-10T15:23:15Z")

</div>

That sucks. At least that problem is short-lived, though (until our next release), and people who need pre-C++11 have an option still.

This is getting pretty complicated and I’m pretty worried about having a diverged master and develop like that with multiple commits that are duplicated (we’d actually need at least 3, there’s another one needed to make the tests pass on g+±4.9). Spot checking the conflicts looks fine but I would definitely not feel comfortable extrapolating when we’re fucking with the history like this. I’ve been burned before by automatic merge conflict resolution.

Is this worth the trouble to do this as a C++99 release at all? It’s also a bad time for me personally to be doing backflips in git - I really need to work on this SBC paper.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 10, 2017, 3:27pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/52 "2017-11-10T15:27:31Z")

</div>

Although cherry-picking is a bad idea for development with git, it isn’t going to confuse git. If there is 34df1bcce31a45ebd83abd38718c4b940eb44adb in one tree and 34df1bcce31a45ebd83abd38718c4b940eb44adb in another, it is going to look the same unless there are subsequent commits in each tree that modify those same lines differently.

I think I had everything working but had not run the distribution tests.

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 10, 2017, 3:31pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/53 "2017-11-10T15:31:30Z")

</div>

That’s fair (though the hashes change). But tons of those files were actually also modified in develop too. Are you sure taking develop’s changes always works?

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 10, 2017, 4:06pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/54 "2017-11-10T16:06:55Z")

</div>

I did the unit tests (but not the distribution tests) after auto-merging develop into bugfix/revert\_string and it was fine after I fixed one file.

But I think it is safe to merge bugfix/revert\_string into master and release 2.17.1. If there are problems in merging develop into master for 2.18.0, then future us will have time to identify and fix them.

---

<div class="post-metadata">

**Author:** ![wds15](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wds15/32/908_2.png) [@wds15](https://discourse.mc-stan.org/u/wds15)\
**Post date:** [November 10, 2017, 4:36pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/55 "2017-11-10T16:36:29Z")

</div>

Just to clarify: I do not have any issue in Stan going C++11 dependent. Luckily our cluster got a g++ 6.3 installation since recently.

A motivation for a non-C++11 release could be to make those RHEL6 users happy - and I don’t know if the gcc 4.8.1 on RHEL7 can deal with the C++11, but RHEL7 users always have the choice to install g++ 6.3.

So maybe there is not such a big need for a non-C++11 need and we better do a 2.18?

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 14, 2017, 7:50pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/56 "2017-11-14T19:50:41Z")

</div>

I prefer 2.18.0 unless someone wants to speak up about their use case relying on an older compiler? I think we do a lot of things for hypothetical users and we should stop speculating and ideally send out a survey or something if we’re going out of our way to support them, just to make sure the work is for actual people and use-cases.

If we do have a use-case for g++4.6 still, I’d like to dive into why the interfaces are referencing `master` - what does this mean? Shouldn’t they be released referencing a specific tag or commit? If not, we should start that.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 14, 2017, 9:06pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/57 "2017-11-14T21:06:19Z")

</div>

We never even announced that 2.17.x would be the last Stan release that did not have C++14 features.

We know that servers often tend to have g+±4.8 or lower installed and that support contracts or conservative system administrators prevent installation of newer toolchains.

Conversely, I think you are worried about a non-problem of merging develop into master. One of the core tenets of Gitflow — which we have ostensibly but not really been following for four years or so — is that you branch off master when there is a critical bug and release after merging the branch that fixes it into both master and develop. Your position seems to be “that might not work” in ways that are unfixable several months from now. How is our situation different from that of tens of thousands of other software projects that use Gitflow?

---

<div class="post-metadata">

**Author:** ![seantalts](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/seantalts/32/32_2.png) [@seantalts](https://discourse.mc-stan.org/u/seantalts)\
**Post date:** [November 14, 2017, 9:09pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/58 "2017-11-14T21:09:51Z")

</div>

We didn’t branch off master to do the bugfix. If we had done that I’d be on board.

Instead we’re talking about cherry picking and later merging the cherry picked commits in, which people recommend against.

---

<div class="post-metadata">

**Author:** ![wds15](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/wds15/32/908_2.png) [@wds15](https://discourse.mc-stan.org/u/wds15)\
**Post date:** [November 14, 2017, 9:38pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/59 "2017-11-14T21:38:54Z")

</div>

If it helps, i can offer to check if rhel7 can build whatever we want to release…using the default 4.8 system compiler. I just would need instructions what to do.

---

<div class="post-metadata">

**Author:** ![bgoodri](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/bgoodri/32/4451_2.png) [@bgoodri](https://discourse.mc-stan.org/u/bgoodri)\
**Post date:** [November 14, 2017, 9:49pm UTC](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442/60 "2017-11-14T21:49:07Z")

</div>

I did branch of master and the recipes I posted branched off master

```
git checkout bugfix/revert
git log --oneline | head

```

```
35f6f86a4a Tests corrected now.
fe171373c0 Revert "Merge pull request #584 from stan-dev/feature/issue-460-const-char-star"
4b1a10bc87 release/v2.17.0: updating version numbers
5553b45afb Merge pull request #611 from stan-dev/build/new-boost-new-flag
c6ede0ab4d Fixes issue discussed in stan-dev/stan#2384 to close stan-dev/stan#601
199c320143 Bugfix/599 upgrade boost 1.64.0 (#601)
2457932d49 Merge pull request #610 from stan-dev/build/travis-split
5339cbe3e0 Split out travis tests more - timing is unpredictable
908d528c0b Merge pull request #577 from bbbales2/feature/issue-481-append-array-vectors-of-vectors
82ca96a443 Merge pull request #606 from stan-dev/build/travis-test-mix

```

[Previous page](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442.md?page=2)

[Next page](https://discourse.mc-stan.org/t/new-v2-17-1-release-for-math-and-stan/2442.md?page=4)
