Nullables (Deprecated?)

I am reading systematically from start to end through the current 0.6.2 manual. section 14.4 is about Nullable objects.

Has a decision been made about the fate of Nullable? is it replaced by Missing?

(If so, maybe add a short blip to the 0.6.2 manual that notes this.)

regards,

/iaw

Can’t find any “official” explanation, but latest build of Julia 0.7 has both - nothing::Nothing and missing::Missing values.

It has also been discussed several times that now small unions like Union{T, Nothing} or Union{T, Missing} are reasonably fast and may be used instead of Nullable{T}.

It’s been deprecated in Julia 0.7, but it still exists in 0.6, so the 0.6 manual cannot say it’s deprecated. See NEWS.md about the deprecation.

1 Like

thanks, n.

the 0.6.2 manual should not state that it is deprecated, but it should state

NOTE: Nullables are marked for deprecation in Julia >0.7 in favor of Missing
3 Likes

Why not read the 0.7 manual if you’re interested in Julia 0.7?

1 Like

it’s not for me. I know this now.

instead, it’s for someone else who is coming to julia today. they see that 0.6.2 is the stable system, and start learning it. except when 1.0 comes around, they will have to unlearn again what they just learned. if they had seen such a note, they may have said to themselves “skip this chapter and spend the time experiment on the next one instead.”

5 Likes

But then why do this for Nullable and not for the dozens of deprecations mentioned in NEWS.md? And most deprecations (including for Nullable) do not work on 0.6, so mentioning them would just confuse newcomers. At this point to only solution to this problem is to release 0.7.

2 Likes

I think we should indeed plunk down a tiny note like this for major removals everywhere. This is not just for 0.6.2. It will also be the case in the future, >1.0, when major aspects are deprecated. Not a big write—just a boilerplate sentence with a warning icon. done.

([novice] users are not encouraged to use/read 0.7.)

I am not so sure, never seen this anywhere, except for the self-explanatory labels “stable” and “unstable”. No one is discouraged either. I don’t think that the line between “user” and “developer” is so clearcut for the community which uses v0.* releases.

However, if someone would rather ignore the work-in-progress nature of Julia, they should not worry about deprecations either. When v0.7 is released, users will have time to update their code. Until then, forward-looking deprecations are just a distraction for them.

0.6.2 is the current release. Download Julia

and for the nightly builds,

These are bleeding-edge binaries of the latest version of Julia under development,
which you can use to get a preview of the latest work. The nightly builds are for 
developer previews and not intended for normal use. You can expect many 
packages not to work with this version. Most users are advised to use the latest 
official release version of Julia.

I think this qualifies as ([novice] users are not encouraged to use/read 0.7.)

for existing code, I would not worry about deprecations. for new code, a blip on the docs for ephemeral features would be a helpful shoutout. (and, without your help, tamas, I would have given up a while ago…)

regards,

/iaw

The nature of 0.7 is rather special as after that there will be no breaking changes until 2.0. The release of 0.7 is imminent, so at this point it would definitely be worth familiarizing yourself with its documentation somewhat. If you are still using 0.6 I would recommend writing only 0.6, 0.7 cross compatible code using Compat.jl and abandoning 0.6 altogether as soon as 0.7 is officially released.

To check re this topic:
Continuing the discussion from Missing data and NamedTuple compatibility.