Simple question: Time to move from 1.0 to 1.5?

I’m new to Julia, but having great success speeding up what I once did in python. ‘Threads’ might offer additional performance - but, as I understand it, it’s not available in release 1.0 and I must upgrade to 1.5. Will I be doing myself some hidden diservice leaving the ‘stable’ 1.0? Any advice about a switch - is it even noticeable?
Thanks!

1.5 is also a stable version, and I would say the majority of the ecosystem (i.e. the packages) evolves as new versions come out. Furthermore, Julia guarantees nothing will break (until maybe 2.0), so your 1.0 code should run (probably a bit faster/better) on 1.5 without any code changes.

So yes, you can and should upgrade to the latest release and enjoy all the newer language features.

4 Likes

While the core language upgrade should not be breaking, upgrading Julia probably allows to upgrade a lot of external dependencies (there are a lot of cool features in the last Julia releases, therefore it is difficult for package authors to support both the latest releases and 1.0), which may be breaking.

To be on the safe side, you could do a 2-step approach:

  1. Upgrade Julia, but do not upgrade any external packages (using Manifest.toml files to fix versions). Then test your code (and fix if required).
  2. Upgrade your dependencies to the most recent version, then test and fix your code again.
8 Likes

I think v1.6 is where you want to be at in the near future (lots of improvements coming it seems), but I’d already switch to v1.5 (1.5 to 1.6 shouldn’t be too hard). Like lungben said packages would probably give you more troubles than Julia itself. I don’t recall all the breaking changes but Bio.jl, CSV.jl and Dataframes.jl are the ones that comes to mind.

Make sure you have good test coverage and take some time (maybe one day) to make the transition.

1 Like

It depends on what you need for your work. For me personally, everything that I needed was working with 1.5.3. Switching to 1.6 proved possible for some of my projects, but not for others.

1.6 in particular seems distinctly advantageous: package operations are much quicker.
And I can see overall faster performance, perhaps not huge, but noticeable improvements.

2 Likes

I use a pretty limited set of packages: Primes, DelimitedFiles, Profile, Statistics, BenchmarkTools, Dates, LinearAlgebra, Compat.

If you have an existing codebase, you can install both versions side by side and run tests to check that nothing broke.

3 Likes

Note:

  • 1.0 is Long Term Support (LTS)
  • 1.5 is Stable

Both the current Stable and the LTS are supported, in terms of getting bug-fixes made for issues.
As is the current nightly 1.7-DEV and anything currently in preparation for release (currently 1.6-DEV).
The difference between then is how long they will get support for.
LTS will get support for years – until the next LTS takes over.
Stable gets support until the next stable task over, which is never less than 3 months, and is normally 4-5 months (it depends how long the new stable takes to get released).
Everything else gets support until they become stable and get displaced by the next stable.
(Interestingly right now we are getting towards a new LTS probably 1.6 or 1.7. So actually this difference is lower)

The other difference is in how long since they have changed. Since the LTS doesn’t get new features (only bug fixes) it has very few changes, which means lower chance of getting bugs introduced.

But even being in support is not that important.
Invenia has been running 1.3 in production since that came out, because it’s a good release.
(probably will be going to 1.5 soon though).

Most people should be using the current stable release though – just because it is the latest and best julia.
1.5 is a great release, you should get on that.
And get on 1.6 when that comes out because it is even better

8 Likes

Unless you have low/very low risk tolerance, just test on 1.5 and move on. See

1 Like

Thank you - that is very helpful.