![]() ![]() I guess what I meant was that libpng is (currently) the only implementation that attempts to fit a libpng-shaped hole. It’s the same feeling I get from seeing LibreSSL and BoringSSL: that an ecosystem that was essentially “dead” and stuck in a set of bad choices due to everyone sticking with one unchanging reference impl, is now coming alive again. So, like I said, I’m glad someone is finally writing an alternative implementation (in C), such that the projects that currently use libpng could reasonably choose to switch to libspng. They even gave you libpng to make that easier!) It’s supposed to be everyone else’s job, in the ecosystem, to produce conformant implementations. (And why would they? Their job as the PNG Working Group is to produce the PNG base spec. ![]() They don’t want to restrict the development of extra PNG features (yes, even though they developed MNG and might see features like APNG as “competing” with MNG, they don’t really care.) They keep libpng the way it is, not for ideological reasons, but simply because they don’t care about doing anything with libpng that moves it away from “reference implementation of the base PNG spec” territory. That was never the PNG Working Group’s intent, of course. And this is what kills support for features like APNG in the crib.) Because these all just compile in libpng. (Sure, all the major browsers except Edge support APNG, but does your image editor? Does your IoT thermostat whose OS uses PNG image assets? Does your game console? Nah. Libpng is optimized for one thing only: allowing other PNG implementations to build spec-compatibility test suites by testing against libpng behaviour.īecause of this rigid adherence, libpng doesn’t implement-and will never implement-any features that aren’t in the base PNG spec, like APNG.Īnd since everyone uses libpng as their PNG implementation (for some reason), nobody ends up adopting these extra features. PNG has been in a uniquely bad position re: “monoculture”, with libpng being not just the “reference implementation”, but the only implementation anyone bothers to use.īut libpng was intended as only a reference implementation-a rigid adherent to the PNG standard, for the sake of having a “runnable version” of the PNG standard-and was never particularly optimized for production use-cases, or code readability/maintainability/low attack surface, or any other criteria you might like to have. I gotta say, it’s great that someone is making this attempt, however it turns out. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |