What is Julia 0.7? How does it relate to 1.0?


#1

I thought we’d communicated this adequately and clearly, but there were some questions on Slack about what Julia 0.7 is and how it relates to 1.0, so it seems that this could use some official clarification:

  • Julia 0.7 will be released with deprecations for functionality that existed in Julia 0.6 but will be removed or replaced in Julia 1.0.
  • Julia 1.0 will remove all of those deprecations and add some functionality that we prevented from being implemented by those deprecations.

Aside from removed deprecations and functionality that was blocked by them, Julia 0.7 and 1.0 will be identical. This means that if a program runs on 0.7 without any warnings it should work exactly the same on 1.0. Julia 0.7 and 1.0 will be released very close together. The difference in release dates will only be as long as it takes to remove deprecations and implement blocked functionality. When you are upgrading Julia code from 0.6 you should follow this process:

  1. Upgrade to 0.7 and run your tests and example use cases.
  2. Make any changes that the deprecation warnings indicate.
  3. [Optional but recommended for production systems:] Run your applications in production on 0.7, paying close attention to any deprecation warnings that you may have missed and fixing them.
  4. Upgrade to 1.0 and run your tests and example use cases again.
  5. Fix any code that breaks because of deleted or changed functionality. This ideally shouldn’t happen, but sometimes deprecation warnings get missed.

Hopefully that clears things up.


Returning programmer asking for advice
#2

Perhaps it might be helpful to the package developers to have an idea how stabilized 0.7 has become at this point. In the past month or so the changes required to have a clean run were significant: many deprecations and hence many lines of printed warnings. However installing the last development version of 0.7 was comparatively uneventful. If that is a sign of things to expect from 0.7, it would be good to spread the word so that people don’t hesitate to come on board.


#3

#4

I’ve been using it for a while now and find it to be pretty stable, I encourage everyone to jump on board. (I’m going to pretend the whole uninitialized, undef thing never happened :blush:.)


#5

Thanks. I didn’t mean “when is 0.7 going to be released”, but rather "when are the major changes going to be done so that I can reasonably start updating to 0.7 (development version) ".

Edit: BTW I have been running exclusively 0.7 for the past month or so, very happy.


#6

That post addresses just that question. It indicates what the major remaining changes are – i.e. iteration and broadcasting. Since then a few more broadcast PRs have been merged and iteration has made some not-yet-merged progress. The 0.7-alpha release will be the official signal of “there are no more breaking changes anticipated”.


#7

Judging from the size of NEWS.md, the amount of changes in v0.7 (85k) is roughly comparable to v0.4 (74k), and much more than v0.5 or v0.6 (30k and 41k, respectively). But many of those are syntax/semantics unifications and easy to deal with so I find the upgrade to v0.7 rather smooth, especially with Compat.jl.

The only glitches I experienced were with packages I use that rely on representations of the AST, and some of these were fixed quickly, some are still WIP.

The speed improvements I get “for free” are significant, mostly I guess because I was anticipating the “small unions” optimization and started writing code that relying on that, now that is really fast. But I get general performance improvements too.