-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
exported symbols shouldn't be public by default #53973
Comments
Why is something exported if not part of the "public API"? |
Prior to the existence of the See also previous discussions:
If something is exported unintentionally, is undocumented, and sees little to no use in the Julia ecosystem, there is an argument that removing the unintended export would be a minor change allowable in a 1.x release, but this would have to be argued on a case-by-case basis. |
I think it has been more or less agreed upon that exported symbols have been public. Perhaps Base has exported too much but that doesn't really change anything. |
#50105 retroactively made all exported symbols public. I think I raised this point before in some comment, but anyway exported symbols being public by default seems like a breaking change, because previously a symbol could be exported with
export
without being part of a public API. The notion of "being public" didn't even exist in Julia (on a language level, as opposed to docs) before that PR. A simple solution would have been to define public symbols as only the ones marked withpublic
, although I guess now it may be too late for that?This issue creates some problems for the Julia implementation itself, e.g.
Core.Method
is exported intoMain
, unintentionally (?) making it public, similarly withGenericMemory
: #53854 #53971If Julia v1.11 were released as-is, user packages would be locked into supporting undocumented exported symbols until they make a breaking release.
The text was updated successfully, but these errors were encountered: