Yeah, I have to agree with that. I can’t help but feel it would cause massive confusion, especially for new users, if 1.0 had a full release in the very near future. At the very least, 1.0 would have to be heavily caveated in the download page for the next month or 2.
A month from now I’m sure using 0.7 will be just fine, but it might take at least that long.
I’ll add my voice to the posters suggesting that there are still too many gaps for a 1.0 release. In particular, there are too many unresolved issues with the sparse matrix standard library (see some of my other posts and open issues). Sparse matrices have ‘just worked’ in Matlab since 1992, but right now they do not ‘just work’ in Julia. Resolving the sparse matrix issues is a big job but not insurmountable.
@ararslan What is the intended meaning of tagging release v1.0.0 on the github repo? Hacker News seems to be taking it to mean v1.0 has actually been released, and @Keno’s comment there seems to support that. Could you clarify what the actual status of Julia releases currently is?
TL;DW: Julia 1.0 is released, binaries are building. There’ll be a discourse post as usual announcing the release once the binaries are done. We’ll also have a proper release blog post at that time. HN is as always rushing ahead of our carefully thoughtout release announcement process ;).
julia> RowVector
WARNING: Base.RowVector is deprecated: it has been moved to the standard library package `LinearAlgebra`.
Add `using LinearAlgebra` to your imports.
in module Main
LinearAlgebra.RowVector
Thanks, I see. It seems that this warning does not get displayed under some circumstance when I test my package in 0.7, so when I ran the code in 1.0 it gave an error.
julia> using LinearAlgebra
julia> RowVector
ERROR: UndefVarError: RowVector not defined
julia> LinearAlgebra.RowVector
ERROR: UndefVarError: RowVector not defined
I am very sceptical about this whole thing with 1.0. Version 0.7 was the latest stable version for like a day and if the only difference with 1.0 is deprecation warnings, why not call it 1.0 and the next version without warnings 1.0.1? What is the point of the 1.0-rc if it gets released a day later? What was all this rush about? The JuliaCon reception? All these do make sense from a marketing point of view, but this makes me worry about the future.
Breaking code (even deprecated code) between 1.0.0 and 1.0.1 is a violation of semantic versioning—point releases are for bug fixes only. The rationale and plan for 0.7 and 1.0 has been explained and discussed over and over again. If you don’t personally feel ready to upgrade, you can stay on 0.7 or even 0.6 until you’re ready.
This particular issue is a misunderstanding on the part of @chakravala, so let me try to clarify:
There is no more RowVector. This parrot is deceased. It is an ex-parrot. It was deprecated in 0.7 and deleted entirely in 1.0. Starting Julia 1.0 and typing RowVector is and should be an undef error.
Temperament of current Julian is more likely someone who likes to be at the bleeding edge of technology, including myself. And I feel the itch to use Julia 1.0 every time I visit docs.julialang.org and It bugs me just because I can’t use Julia 1.0 yet, even though 0.6 works perfectly fine for me.
Having a Bad first impression may put off some new users and possibly create some bad gossip. But ultimately people will make a decision whether to use Julia or not based on the merits of using it. And I believe it’s a trivial thing to be the subject of bad gossip for few weeks or months.
You speak of this as if the people who develop Julia itself are also responsible for upgrading all 2000 packages ourselves. We are not (although we have made an effort to upgrade several hundred key ones). The alpha came out 2.5 months ago; there have been two betas and three RCs since then. As it turns out, the majority of package maintainers will not upgrade to a new version until it’s actually released. So if we waited for all or even most packages to work on 1.0 before releasing it, we’d be waiting forever.
Now 1.0 is out, so the pressure is on to get those packages upgraded. It does not take any knowledge of the details of a package to do the vast majority of deprecation fixes: just run the tests and whatever warning gets printed, do what the fix that it tells you. So if you want something to work sooner, there is no excuse: make a PR yourself.
Well ok, that’s a fair point but it could be 0.9.9 and 1.0.0. The current versioning system implies that the difference between 0.7 and 1.0.0 is big. Plus I still don’t understand what was the point of 1.0.0-rc and what was this rush about.
Saying that if one does not feel ready to update, then one should not update, it’s a fair point, but also it is basically the same as saying “if you don’t like Julia, don’t use Julia.”. So to clarify, I didn’t make the post because I am afraid that the update will break my code. I made it because I am afraid that the business model is taking over the community.
Thanks for clarifying, it just was confusing for me when I upgraded my code because the warnings never mentioned the existence of adjoint, so I wasnt able to properly prepare my code, it was a very easy fix for me, I’m only reporting it in case others have trouble too.
I think the 0.7 and 1.0 release is perfect, thank you so much for getting there.
Yes, the 0.7 told me to put using LinearAlgebra and no other warning about the Adjoint. So when I tried in 1.0, it didnt work and I wasnt sure why until Keno explained. That’s the only minor upgrade experience issue I had, that I couldnr figure out on my own.
There were a few warnings on 0.7 which provided two deprecations at once, just like this one:
λ j7 --quiet
julia> RowVector([1,2,3])
WARNING: Base.RowVector is deprecated: it has been moved to the standard library package `LinearAlgebra`.
Add `using LinearAlgebra` to your imports.
in module Main
┌ Warning: `ConjRowVector` and `RowVector` have been deprecated in favor of `Adjoint` and `Transpose`. Please see 0.7's NEWS.md for a more detailed explanation of the associated changes.
│ caller = top-level scope at none:0
└ @ Core none:0