sys/png: move SysDecodePng to separate subpackage#9
Merged
Conversation
Fixes #6 The root libghostty package previously imported image/png for SysDecodePng. Because image/png registers itself via an init() function, the Go linker cannot eliminate it from binaries that never call SysDecodePng. Every consumer paid the cost. Move the built-in PNG decoder into sys/png so users opt in explicitly. The root package no longer imports image or image/png. The kitty_graphics_test.go file inlines a local test helper to avoid the import cycle that would result from an internal test package importing its own subpackage.
dolmen
reviewed
Apr 11, 2026
| @@ -1,17 +1,43 @@ | |||
| package libghostty | |||
There was a problem hiding this comment.
Changing to an external test would allow to use sys/png.
Owner
Author
There was a problem hiding this comment.
Yeah it would but sys/png is tested in isolation and we just want to verify the basic graphics APIs work here. I think its fine to duplicate and have no dependency.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6
The root libghostty package previously imported image/png for SysDecodePng. Because image/png registers itself via an init() function, the Go linker cannot eliminate it from binaries that never call SysDecodePng. Every consumer paid the cost.
Move the built-in PNG decoder into sys/png so users opt in explicitly. The root package no longer imports image or image/png. The kitty_graphics_test.go file inlines a local test helper to avoid the import cycle that would result from an internal test package importing its own subpackage.