Skip to content

ABI Stability #282

Description

@kainino0x

Tracking issue for ABI stability.

Actually stabilizing the ABI is going to come after stabilizing the API ("1.0"), but there's a chance of ABI stability problems that require us to make API changes (like stdbool did). So I'm not putting non-breaking on this yet.

Off the top of my head:

Activity

  1. kainino0x commented on Apr 12, 2024

    @kainino0x
    CollaboratorAuthor

    Apr 11 meeting:

    • KN: re earlier discussion — is there actually any reason to have the non-function-pointer function definitions in the header…?
      • yes, static linking, global loading, GL/vulkan do it, etc.
    • KN: How can we figure out if there’s anything we need to consider for ABI stability before stabilizing the API? Like C constructs we should avoid, etc.?
      • Or should we just make (attempted) ABI stability part of 1.0 so we don’t have to worry about it?
    • (discussion)
    • CF: Don’t think we should, bigger problems to deal with
    • No, not worth doing now. Probably won’t need to break API to do ABI stability but if we do we can deal with it, we’ll just do 2.0 or whatever. Mark non-breaking.
      • Tentative - AE/KN also to check with other people who want this
  2. added
    non-breakingDoes not require a breaking change (that would block V1.0)
    and removed
    !discussNeeds discussion (at meeting or online)
    on Apr 12, 2024
  3. removed
    non-breakingDoes not require a breaking change (that would block V1.0)
    on Jan 11, 2025
  4. kainino0x commented on Feb 2, 2026

    @kainino0x
    CollaboratorAuthor

    Just a note about _Bool because for some reason I couldn't find any record of the discussion I know we had:

    The reason we don't use _Bool is because it doesn't exist in C++. If we used bool from stdbool.h, it should compile/link fine, but this would result in C using _Bool (ignoring pre-C99) and C++ using its bool. _Bool doesn't exist in C++ so there's no way for C++ code to use a C ABI that contains _Bool. In practice it almost certainly works everywhere we care about, but the only way to know would be to define a list of target C and C++ ABIs and read the specification for each and make sure they match between C and C++.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions