# Julia Package: different branches for different Julia-versions?

**URL:** <https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718>\
**Category:** General Usage\
**Tags:** package\
**Created:** [July 7, 2017, 4:15pm UTC](https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718 "2017-07-07T16:15:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![luchr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luchr/32/214972_2.png) [@luchr](https://discourse.julialang.org/u/luchr)\
**Post date:** [July 7, 2017, 4:15pm UTC](https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718/1 "2017-07-07T16:15:34Z")

</div>

I’m the owner of the [ODEInterface](https://github.com/luchr/ODEInterface.jl) package and I have the following question. At the moment I’ve written the code in such a way, that it runs under julia v0.4, v0.5 and v0.6 without any warnings. Because of the changes in the julia syntax in the nightly versions (struct, etc.) I plan to do a cut.

Is it possible to have different branches in my github-repo for different julia versions (e.g. one for older julia-versions and one for the current stable)? If this is possible, how do I have to enter this in the `METADATA` files? Must the content of `sha1` be a commit-hash in the `master` branch?

I’ve seen that it is possible to increase the julia version number in the `REQUIRE` file. But then it seems to me (perhaps I’m wrong), the older versions of the package are some kind of “fixed”: What if I want to do bugfixes for the versions of my package that are for the older julia versions as well as for the version of my package for the current stable julia version?

I hope this is the/a right place to ask this kind of question.

Thanks  
C. Ludwig

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 7, 2017, 4:23pm UTC](https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718/2 "2017-07-07T16:23:46Z")

</div>

> [@luchr](#):
>
> Is it possible to have different branches in my github-repo for different julia versions (e.g. one for older julia-versions and one for the current stable)? If this is possible, how do I have to enter this in the METADATA files? Must the content of sha1 be a commit-hash in the master branch?

Just use different branches. You can tag from non-master branches, so it’s common to have a “v0.5-backports” branch just for this. But also, I wouldn’t spend too much time with version compatibility since almost all of the community stays updated, and when they don’t there are other issues. So I would only do this if it doesn’t take much effort.

Thanks for ODEInterface BTW. It’s a great package and I love having those classic codes easily available in Julia!

---

<div class="post-metadata">

**Author:** ![luchr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luchr/32/214972_2.png) [@luchr](https://discourse.julialang.org/u/luchr)\
**Post date:** [July 7, 2017, 4:43pm UTC](https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718/3 "2017-07-07T16:43:23Z")

</div>

Thank you for your fast answer.

Then I’ll try a backports-branch in my next “programming/update” cycle.

> Thanks for ODEInterface BTW. It’s a great package and I love having those classic codes easily available in Julia!

Thanks. We are still looking for persons who want to implement this solvers in 100% pure julia (in order to solve ODEs with other datatypes than Float64, e.g. bigfloats, complex numbers, dual numbers, etc.)

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [July 7, 2017, 5:32pm UTC](https://discourse.julialang.org/t/julia-package-different-branches-for-different-julia-versions/4718/4 "2017-07-07T17:32:48Z")

</div>

> [@luchr](#):
>
> Thanks. We are still looking for persons who want to implement this solvers in 100% pure julia (in order to solve ODEs with other datatypes than Float64, e.g. bigfloats, complex numbers, dual numbers, etc.)

Well, that already exists 😄.

Most of these solvers are implemented in pure Julia. DifferentialEquations.jl’s (well, OrdinaryDiffEq.jl’s) `DP5` and `DP8` match the stepping behavior of `dopri5` and `dop853` (there’s tests in the repo which confirm that on example problems they hit the same times and the same values). `rodas` has a native Julia implementation as of yesterday and the timestepping behavior is much much better optimized for the tolerances which it’s normally used (and it gets to use ForwardDiff!). These improve the efficiency over the Fortran versions, are compatible with arbitrary arrays and number types (tested with bigfloats, complex numbers, dual numbers, arbfloats, units, etc.), have event handling implemented on them, etc.

From my tests `odex` and `seulex` are not very competitive so they are further down the list. But the next goals are implicit RK methods (`radau`) and then multistep methods.

Check out the release notes for today’s DiffEq ecosystem release for more on the newest Rosenbrock additions.

[http://juliadiffeq.org/2017/07/07/SymplecticRosenbrock.html](http://juliadiffeq.org/2017/07/07/SymplecticRosenbrock.html)

And see DiffEqBenchmarks.jl for benchmarks of the native Julia RK methods vs the Hairer Fortran methods (through your wonderful wrapper!)
