I remain optimistic that the existence of Base.ispublic will slowly but surely improve the state of affairs. Prior to 1.11, it was really difficult (borderline impossible at times) to know if something was considered public or private.
I think the general rule was that anything exported or documented in the manual was public, and everything else was private?
The public keyword gave us a programmatic way of detecting whether a non-exported symbol is public. Unfortunately, it also helped turn up some cases of undocumented public/exported symbols: Missing docstrings for public/exported symbols ¡ Issue #52725 ¡ JuliaLang/julia ¡ GitHub
Why unfortunately? Thatâs good right?
Itâs good that we found themâthis is indeed a benefit of the public keywordâbut it is unfortunate that the omissions existed in the first place.
(This is a âhelp wantedâ issue, by the way: it should be relatively easy to contribute missing docstrings.)
But, at least anecdotally, it seems like many packages break after upgrading to a new Julia version. I am still on 1.11 since a bunch of my stuff broke on 1.12. Are packages really use that many undocumented functions? Or do the internals change significantly?
yes to the former, many packages use internals they âshouldnâtâ all the time. for the latter in the case of 1.12 there were also quite significant internal changes to accommodate all the binding partition (const / struct redefinition) stuff.
another example of packages relying on things they shouldnât that will almost certainly break things on 1.13 is that most hash values will change. even though the docs specifically have warnings to call this out as a possibility, in practice hash values have been very stable for a long time and some packages have come to rely on them.
For a longer time, my main hope has been that Tim Holy has stated improvements on Juliaâs lowering mechanism could bring one or more order of magnitude improvements to the speed at which Julia can be interpreted.
Another possible solution is tiered compilation. No idea how much work it is (probably a lotâŚ) but it would be really nice to have. Maybe itâd even be possible to have interpretation be the first tier if thatâs faster than -O0 or whatever.