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])