Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
gjs
gjs
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 101
    • Issues 101
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 18
    • Merge Requests 18
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • GNOME
  • gjsgjs
  • Issues
  • #194

Closed
Open
Opened Aug 16, 2018 by Simon McVittie@smcvDeveloper

Hide internal symbols from ABI

gjs' public ABI (as declared in headers) seems to be relatively small and C-only. However, the library exports a lot of C++ symbols and other internals, which look likely to change from version to version. This complicates automated tracking of whether the external ABI has been broken.

Would it be possible to remove the private symbols from the ABI, to make it clear that they are not for external use?

gjs already has a GJS_EXPORT macro for Windows, so the easiest way would probably be to probe for compiler support for -fvisibility=internal, and if supported (gcc/clang), add it to CFLAGS and define GJS_EXPORT to __attribute__ ((visibility ("default"))). GLib has done the equivalent for a while.

Assignee
Assign to
GNOME 3.36
Milestone
GNOME 3.36
Assign milestone
Time tracking
None
Due date
None
Reference: GNOME/gjs#194