Skip to content

exported symbols shouldn't be public by default #53973

@nsajko

Description

@nsajko

#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 with public, 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 into Main, unintentionally (?) making it public, similarly with GenericMemory: #53854 #53971

If Julia v1.11 were released as-is, user packages would be locked into supporting undocumented exported symbols until they make a breaking release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    designDesign of APIs or of the language itselfspeculativeWhether the change will be implemented is speculative

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions