gopp 1.2.0
Alexander Pevzner <[email protected]> Wed, 9 Apr 2025 12:23:47 +0300
| Newsgroups | dev.linux.lists.printing-architecture |
|---|---|
| Message-ID | <[email protected]> |
Hi, goipp 1.2.0 is now available. 1. The handling of extension tags has been revised in a manner similar to libcups (they are now treated as a special case of "binary" data). This fixes issue #6, where goipp could panic when decoding an IPP message with a low-value tag encoded as an extension tag. 2. The semantics of Groups.Equal, Attributes.Equal, and Values.Equal have been clarified so that empty Groups/Attributes/Values are no longer considered equal to nil. 3. A new .Similar method has been added for Value, Attribute, Attributes, Group, Groups, and Message. Unlike the .Equal method, it checks for logical similarity—meaning the same set of attributes in a different order is considered Similar but not Equal. This method is particularly useful for writing tests. 4. A .DeepCopy method has been added for Value, Attribute, Attributes, Group, and Groups types. Additionally, a .Clone method has been added for types where it was missing. The difference between .Clone and .DeepCopy is that .Clone returns a shallow copy, while .DeepCopy returns a fully independent copy of the original. 5. New convenience functions MakeAttr() and MakeAttrCollection() have been added. 6. By replacing sparse tables with Go maps for operation/status names, approximately 140KB of memory has been saved. 7. Numerous cosmetic and code formatting tweaks have been made throughout the library. 8. Tests have been significantly reworked, now achieving 100% test coverage. -- Wishes, Alexander Pevzner ([email protected])