Skip to content

Separate Platform and Backend Packages #36

@al6uiz

Description

@al6uiz

Description
The current package structure includes platform-specific implementations and rendering backends within the same distribution, which increases dependency scope and reduces modularity.

This issue proposes separating platform layers (e.g., Win32, macOS, Linux) from rendering backends (e.g., GDI, Direct2D, OpenGL) into independent packages. This will allow consumers to reference only the components they need, resulting in a lighter dependency graph and improved maintainability.

Goals

  • Reduce unnecessary dependencies and improve modularity
  • Enable flexible platform and backend selection
  • Optimize NativeAOT compatibility, trimming efficiency, and final binary size
Aprillz.MewUI                // Core abstractions, controls, theming, layout
Aprillz.MewUI.Platform.Win32 // Win32 windowing, input, native interop
Aprillz.MewUI.Platform.Linux
Aprillz.MewUI.Platform.macOS

Aprillz.MewUI.Backend.Gdi        // Lightweight default backend for Windows
Aprillz.MewUI.Backend.Direct2D
Aprillz.MewUI.Backend.OpenGL.Win32
Aprillz.MewUI.Backend.OpenGL.X11
Aprillz.MewUI.Backend.Metal      // macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions