- From: John Bowler <john.cunningham.bowler@gmail.com>
- Date: Mon, 6 Jan 2025 18:51:30 -0800
- To: "Seeger, Chris (NBCUniversal)" <Chris.Seeger@nbcuni.com>
- Cc: "Portable Network Graphics (PNG) Working Group" <public-png@w3.org>
- Message-ID: <CAP7U39_D1+c=76dRnBD4ogiGj=L+kqdEZuaBQLZe=SdEzReFmw@mail.gmail.com>
On Mon, Jan 6, 2025 at 1:43 PM Seeger, Chris (NBCUniversal) < Chris.Seeger@nbcuni.com> wrote: > In Github, for libpng, I see “Tags” but no “Releases” for specific > versions. Because this version contains new functionality (cICP), is it > easy to make a “Release” based on the new “Tag”. I’m hopeful it might > encourage a larger group to make the effort and upgrade to the new library > version. > The things that are marked as "tags" in fact **are** releases, but they are "patch" releases so typically OS developers take them automatically ASAP - as soon as their verification tests have passed. Certainly when Cosmin releases 1.6.45 it will immediately go into the Gentoo release queue. I expect to see a ~dev release of Gentoo with it in after a couple of days (Gentoo releases continuously in two stages, basically "~ "i.e. "bleeding edge" and "stable"). TL;DR: The patch releases cannot co-exist; there is only one at once. The major releases (e.g. 1.6 vs 1.8) do coexist; an OS distribution can and typically will carry a completely new DLL for 1.8 at the same time as one for 1.6. Therefore the OS can ship a mix of apps some of which use 1.6 and some 1.8. Typically Debian style systems will only take a patch release if it doesn't break something obvious and will back it out if a break turns up later. Major releases are easier for them because they can co-exist; think throw it against the wall and see if it sticks. You can see that with Qt; any major release of Qt can be installed regardless of any other major release. You can see the problems of not doing this with other libraries which don't use the methodology or get it wrong. There were enormous problems with two different versions of libssl. A patch release does not require recompilation of the apps that use the base release. An app can be compiled against any version of 1.6 and used against any other version. The only condition (which, incidentally, I have consistently argued against) is that the app must not use new ABIs unless it is absolutely sure it will never run on an OS with a version prior to the introduction of the new ABI. I think I had a log discussion with @ChrisB about how this works but maybe it was on github, not this list. Most people are not familiar with how DLLs work. This does not apply at all to systems like Windows and MacOS which do not ship libpng. On those systems apps which use libpng have to bundle their own build. Whether or not they take a new build when a patch is released depends on the internal decisions of the relevant corporation; they have to balance the instability of new, untested, code against any advantage it may give. Typically they abide by the rule, "If it ain't broke don't fix it." Windows, since the oleaut32 disaster (termed "DLL hell") has developed a system which allows multiple applications to share the same DLL even across patch relesases. Windows can run multiple versions of the nominally same DLL at the same time. This was developed after I left Microsoft so I am unfamiliar with the precise details; someone who does understand "assemblies" may wish to comment, Cosmin? Android and iOS don't ship libpng so apps build their own. The security issues probably mean that those builds cannot be shared. I developed the "minconfig" stuff to accommodate this; a build of libpng can easily be stripped of all unnecessary poo. So far as I can see the app developers will have to pull the new release and rebuild their apps (unlike on Windows and all modern UN*X derivatives, including MacOS). Since Cosmin will be releasing a patch release many devs will do that, it will just work, even if they use new ABIs. MacOS itself is OpenBSD but still doesn't distribute libpng. I assume they have their own internal, independent, PNG handling code. I have every reason to believe Windows is in the same position. Such code is monumentally more simple than libpng and the work to add chunk support will only be limited by the motivation (or lack) to add such support. John Bowler
Received on Tuesday, 7 January 2025 02:51:34 UTC