Skip to content

Rethink ABI practices #24

Description

@vaxerski

Our ABI usage mostly relies on two things:

  • hopes and prayers
  • using the heap

Reason being we bump ABI when the layout changes, not the size (e.g. appending to a class)

Solutions:

  • wrap internal data structures in a struct passed to a unique_ptr
  • only expose public data and every object has to be created by the lib, making it a subclass
  • mark an ABI break every time a class is expanded

ref hyprwm/hyprpaper#225 #23 hyprwm/Hyprland#8813 hyprwm/Hyprland#8797

cc @fufexan @outfoxxed @gulafaran

(this also applies to all other hypr* libs)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions