-
Notifications
You must be signed in to change notification settings - Fork 315
Expand file tree
/
Copy pathchanges.xml
More file actions
2711 lines (2671 loc) · 171 KB
/
Copy pathchanges.xml
File metadata and controls
2711 lines (2671 loc) · 171 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:
1. Add items when you fix a bug or add a feature (this makes the
release process easy :-).
2. Do a JIRA search for tickets closed since the previous release.
3. Use the report generated by the maven-changelog-plugin to see all
SVN commits. TBA how to use this with SVN.
To generate the release notes from this file:
mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n]
The <action> type attribute can be add,update,fix,remove.
-->
<document xmlns="http://maven.apache.org/changes/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
<properties>
<title>Apache Commons Compress Release Notes</title>
</properties>
<body>
<release version="1.29.0" date="YYYY-MM-DD" description="This is a feature and maintenance release. Java 8 or later is required. This release updates Apache Commons Lang to 3.18.0 to pick up the fix for CVE-2025-48924 (https://nvd.nist.gov/vuln/detail/CVE-2025-48924), but is not affected by it.">
<!-- FIX sevenz -->
<action type="fix" issue="COMPRESS-702" dev="ggregory" due-to="Zhang Di, Lastoneee">Performance issue in SevenZFile #681.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix kilobyte to kibibyte conversion in SevenZFile.ArchiveStatistics.assertValidity(int).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix kilobyte to kibibyte conversion in SevenZFile.ArchiveStatistics.toString().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix kilobyte to kibibyte conversion in SevenZFile.Builder.setMaxMemoryLimitKb(int).</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">SevenZFile now throws an ArchiveException if a result overflows a long (or an int, depending on the context).</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">SevenZFile.Builder.get() now throws an ArchiveException instead of an IllegalArgumentException.</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">Fix format string in SevenZFile.assertFitsIntoNonNegativeInt(String, long).</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory, Stanislav Fort">SevenZFile now throws a MemoryLimitException (an IOException subclass) instead of an OutOfMemoryError.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">DeltaDecoder.encode(OutputStream, Object) looses the underlying exception when throwing its IOException subclass.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">AES256SHA256Decoder now enforces the CPP source k_NumCyclesPower_Supported_MAX = 24 limit.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Don't loose precision while reading folders from a SevenZFile.</action>
<action type="fix" dev="ggregory" due-to="Roel van Dijk, Gary Gregory">Improve some exception messages in TarUtils and TarArchiveEntry.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">SevenZFile now enforces the same folder and coder limits as the CPP implementation.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Refactor unsigned number parsing and header validation in SevenZFile.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action>
<!-- FIX bzip2 -->
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">BZip2CompressorInputStream now throw CompressorException (a subclass of IOException) for invalid or corrupted data, providing more specific error reporting.</action>
<action type="fix" dev="pkarwasz" due-to="Tyler Nighswander, Piotr P. Karwasz">BZip2 input streams treat Huffman codes longer than 20 bits as corrupted data, matching the behavior of the reference implementation.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Oti">Fix NullPointerException at BZip2CompressorOutputStream.writeRun() #757.</action>
<!-- FIX dump -->
<action type="fix" dev="pkarwasz" due-to="Tyler Nighswander">Align DUMP archive block size with Linux `dump` utility.</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">DumpArchiveInputStream.getNextEntry() throws an ArchiveException instead of ArrayIndexOutOfBoundsException.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Fix DumpArchiveInputStream to correctly handle file names up to 255 bytes #711.</action>
<action type="fix" dev="ggregory" due-to="Philip Betzler-Braun, Gary Gregory, Piotr P. Karwasz" issue="COMPRESS-712">Unsanitized read causes IndexOutOfBoundsException in #749.</action>
<!-- FIX zip -->
<action type="fix" dev="ggregory" due-to="Dominik Stadler, Gary Gregory" issue="COMPRESS-598">ZipArchiveInputStream.read(byte[], int, int) now throws an IOException instead of a NullPointerException.</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">ZipFile.createBoundedInputStream(long, long) now throws an ArchiveException instead of IllegalArgumentException.</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">ZipFile.getContentBeforeFirstLocalFileHeader() now throws an ArchiveException instead of IllegalArgumentException.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ExplodingInputStream now throws ArchiveException instead of ArithmeticException.</action>
<action type="fix" dev="ggregory" due-to="Tyler Nighswander, Gary Gregory">ZipArchiveInputStream.read() now throws an IOException instead of java.lang.ArrayIndexOutOfBoundsException.</action>
<action type="fix" dev="ggregory" due-to="Stanislav Fort, Gary Gregory">ZipArchiveInputStream now throws an MemoryLimitException instead of ArchiveException, or OutOfMemoryError when running with low memory settings set on the command line.</action>
<action type="fix" dev="ggregory" due-to="YuWeiBoy, Gary Gregory" issue="COMPRESS-708">ZstdCompressorInputStream closes the InputStream held by ZipArchiveInputStream garbage collection.</action>
<action type="fix" dev="pkarwasz" due-to="Gary Gregory, Piotr P. Karwasz" issue="COMPRESS-713">Unchecked pre-decremental notation in for-loop as array index causes ArrayOutOfBounds access #755.</action>
<action type="fix" dev="pkarwasz" due-to="Gary Gregory, Piotr P. Karwasz, Soheila Esmaeili" issue="COMPRESS-715">ZipArchiveInputStream fails with "Unexpected record signature: 0x0" #753.</action>
<action type="fix" dev="pkarwasz" due-to="Gary Gregory, Piotr P. Karwasz" issue="COMPRESS-714">Internal IllegalArgumentException in ZipFile and TarFile creation is not caught #754.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Improve Javadoc of ZipArchiveEntry #769.</action>
<!-- FIX tar -->
<action type="fix" dev="pkarwasz" due-to="Tyler Nighswander, Piotr P. Karwasz, Gary Gregory">>Uniform handling of special tar records in TarFile and TarArchiveInputStream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Stanislav Fort">TarArchiveOutputStream now throws a IllegalArgumentException instead of an OutOfMemoryError.</action>
<action type="fix" dev="ggregory" issue="COMPRESS-707" due-to="Gary Gregory, Roel van Dijk">TarUtils.verifyCheckSum() throws an Exception when checksum could not be parsed.</action>
<!-- FIX ar -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArArchiveInputStream.readGNUStringTable(byte[], int, int) now provides a better exception message, wrapping the underlying exception.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArArchiveInputStream.read(byte[], int, int) now throws ArchiveException instead of ArithmeticException.</action>
<action type="fix" dev="pkarwasz" due-to="Tyler Nighswander">Simplify handling of special AR records in ArArchiveInputStream.</action>
<!-- FIX arj -->
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Correct byte accounting and truncation errors in ARJ input stream.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Add strict header validation in ARJ input stream and `selfExtracting` option.</action>
<!-- FIX unpack200 -->
<action type="fix" dev="tallison" due-to="Tim Allison">Pack200CompressorInputStream no longer throws InaccessibleObjectException when decompressing a FileInputStream or buffered stream on Java 17 and later; org.apache.commons.compress.harmony.unpack200 no longer reflects into java.io internals.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Stanislav Fort">org.apache.commons.compress.harmony.unpack200 now throws Pack200Exception, IllegalArgumentException, and IllegalStateException instead of other runtime exceptions and Error.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Enforce strict attribute layout parsing in Pack200.</action>
<!-- FIX pack200 -->
<action type="fix" dev="ggregory" due-to="Gary Gregory, Igor Morgenstern">org.apache.commons.compress.harmony.pack200 now throws Pack200Exception, IllegalArgumentException, IllegalStateException, instead of other runtime exceptions and Error.</action>
<action type="fix" dev="ppkarwasz" due-to="Raeps">Extract duplicate code in org.apache.commons.compress.harmony.pack200.IntList.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Simplify `PackingUtils` by leveraging Commons IO.</action>
<!-- FIX cpio -->
<action type="fix" dev="ggregory" due-to="Stan, Gary Gregory">CpioArchiveEntry now throws ArchiveException instead of Arithmetic exception.</action>
<action type="fix" dev="ggregory" due-to="Stan, Gary Gregory">CpioArchiveInputStream.getNextEntry() now throws a MemoryLimitException instead of OutOfMemoryError when it can't process input greater than available memory.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CpioArchiveInputStream.readOldAsciiEntry(boolean) now throws ArchiveException instead of Arithmetic exception.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CpioArchiveInputStream.readOldBinaryEntry(boolean) now throws ArchiveException instead of Arithmetic exception.</action>
<action type="fix" issue="COMPRESS-711" dev="pkarwasz" due-to="Piotr P. Karwasz">Fix checksum calculation in CpioArchiveInputStream when reading with a non-zero offset.</action>
<action type="fix" issue="COMPRESS-718" dev="ggregory" due-to="Anay Wadhera, Gary Gregory">CpioArchiveEntry does not allow files over 4GB in OLD_ASCII format.</action>
<action type="fix" dev="ggregory" due-to="Christopher Linke, Gary Gregory">Throw ArchiveException instead of EOFException when CPIO name size less than or equal to 0 #771.</action>
<!-- FIX gzip -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">GzipParameters.setOperatingSystem(int) now throws CompressorException on illegal input.</action>
<action type="fix" issue="COMPRESS-705" dev="ggregory" due-to="Mario Fredenhagen, Gary Gregory">GZip IOException: Extra subfield length exceeds remaining bytes in extra field; use new option GzipCompressorInputStream.Builder.setIgnoreExtraField(boolean).</action>
<!-- FIX snappy -->
<action type="fix" dev="ggregory" due-to="Stanislav Fort, Gary Gregory">Fix for when a valid raw Snappy stream with uncompressed size > 2 GiB used to decompress and then fail at physical EOF with a “Premature end of stream” exception instead of completing cleanly.</action>
<!-- FIX general -->
<action type="fix" dev="ggregory" due-to="Piotr P. Karwasz, Gary Gregory">Add missing Javadoc @since tag to org.apache.commons.compress.compressors.lz77support.LZ77Compressor.AbstractReference.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Classes in org.apache.commons.compress.archivers now throw a subclass of IOException called ArchiveException instead of IOException when a formatting problem is found.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Classes in org.apache.commons.compress.compressors now throw a subclass of IOException called CompressorException instead of IOException when a formatting problem is found.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Normalize exception message sentences to start with a capital letter.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ByteUtils.EMPTY_BYTE_ARRAY in favor or ArrayUtils.EMPTY_BYTE_ARRAY.</action>
<action type="fix" dev="ggregory" due-to="Martin Wiesner, Gary Gregory">Fix grammar issues and typos #687.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">SeekableInMemoryByteChannel.SeekableInMemoryByteChannel() internal buffer now defaults to IOUtils.DEFAULT_BUFFER_SIZE.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">SeekableInMemoryByteChannel.position(), size(), and truncate() now comply with the SeekableByteChannel contract and throw ClosedChannelException.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">SeekableInMemoryByteChannel.position(long) now throws IllegalArgumentException instead of IOException when the position request is negative, complying with the SeekableByteChannel.position(long) contract.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">Makes TarUtils final and cleans up protected methods #712.</action>
<action type="fix" dev="pkarwasz" due-to="Piotr P. Karwasz">All archive input stream constructors now throw IOException.</action>
<action type="fix" dev="pkarwasz" due-to="Gary Gregory, Piotr P. Karwasz">SeekableInMemoryByteChannel.position(long) shouldn't throw an IllegalArgumentException for a new positive position that's too large #756.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate SeekableInMemoryByteChannel in favor of ByteArraySeekableByteChannel.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.archivers.sevenz.CLI.CLI().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.archivers.zip.ExtraFieldUtils.ExtraFieldUtils().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.utils.FileNameUtils.FileNameUtils().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.utils.OsgiUtils.OsgiUtils().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.archivers.zip.ZipEncodingHelper.ZipEncodingHelper().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.archivers.zip.ZipUtil.ZipUtil().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.compressors.zstandard.ZstdConstants.ZstdConstants().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.harmony.archive.internal.nls.Messages.Messages().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.harmony.pack200.PackingUtils.PackingUtils().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.harmony.unpack200.SegmentUtils.SegmentUtils().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix all Javadoc warnings.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Shan Jiang" issue="COMPRESS-719">CPConstant subclasses are missing optional hashCode() and equals() to match its Comparable.compareTo().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CPUTF8 is missing optional hashCode() and equals() to match its Comparable.compareTo().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Pack200 class IcBands.IcTuple implements equals() but not hashCode().</action>
<action type="fix" dev="ggregory" due-to="Martin Wiesner">Fix typos in Javadoc and comments #761.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.utils.ParsingUtils should set the cause of the exceptions it throws.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add MemoryLimitException.MemoryLimitException(long, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CompressException.CompressException(String, Object...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.ArchiveException(String, Object...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CompressorException.CompressorException(String, Object...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Pack200Exception.Pack200Exception(String, Object...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Pack200Exception.requireNonNull(T, String, Object...).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add MemoryLimitException.checkBytes(int, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add MemoryLimitException.checkKiB(long, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.addExact(int, int).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.addExact(int, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.addExact(long, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.toIntExact(long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CompressException.addExact(int, long).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Pack200Exception.addExact(int, long).</action>
<action type="add" issue="COMPRESS-705" dev="ggregory" due-to="Gary Gregory">Add GzipCompressorInputStream.Builder.setIgnoreExtraField(boolean).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SnappyCompressorInputStream.getUncompressedSize() and deprecate getSize().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory, Piotr P. Karwasz">Introduce builders for all ArchiveInputStream implementations and deprecate some constructors.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">TarFile now implements IOIterable<TarArchiveEntry>.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add a builder for the TarFile class and deprecate some constructors.</action>
<action type="add" dev="pkarwasz" due-to="Piotr Karwasz">SevenZFile, TarFile, and ZipFile now always close underlying resources when builder or constructor fails.</action>
<action type="add" dev="pkarwasz" due-to="Piotr P. Karwasz">Introduce an ArchiveFile abstraction to unify the APIs of SevenZFile, TarFile, and ZipFile.</action>
<action type="add" dev="pkarwasz" due-to="Piotr P. Karwasz">Add a configurable maxEntryNameLength option to all archivers.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add UnsupportedZipFeatureException.Feature.toString().</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 85 to 100 #707, #752.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump com.github.luben:zstd-jni from 1.5.7-4 to 1.5.7-6 #717, #740.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump com.github.luben:zstd-jni from 1.5.7-6 to 1.5.7-7 #768 https://github.com/luben/zstd-jni/compare/v1.5.7-6...v1.5.7-7.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump com.github.luben:zstd-jni from 1.5.7-7 to 1.5.7-9.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump com.github.marschall:memoryfilesystem from 2.8.1 to 2.8.2 #727.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-codec:commons-codec from 1.19.0 to 1.22.0 #745.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.tukaani:xz from 1.10 to 1.11, https://github.com/tukaani-project/xz-java/compare/v1.10..v1.11</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.tukaani:xz from 1.11 to 1.12, #767, https://github.com/tukaani-project/xz-java/compare/v1.11...v1.12</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump Bump io.airlift:aircompressor from 2.0.2 to 2.0.3 #760.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io from 2.21.0 to 2.22.0.</action>
<!-- REMOVE -->
<action type="remove" dev="pkarwasz" due-to="Piotr P. Karwasz">Deprecate IOUtils.readFully and IOUtils.skip.</action>
</release>
<release version="1.28.0" date="2025-07-26" description="This is a feature and maintenance release. Java 8 or later is required.">
<!-- FIX -->
<action type="fix" issue="COMPRESS-686" dev="ggregory" due-to="Richard Blank, Gary Gregory">Better exception messages in SeekableInMemoryByteChannel.</action>
<action type="fix" issue="COMPRESS-691" dev="ggregory" due-to="yujincheng08, Gary Gregory">ZipArchiveOutputStream.addRawArchiveEntry() should check is2PhaseSource #571.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Arturo Bernal">ArchiveException extends IOException #605, see also https://github.com/apache/httpcomponents-client/pull/580.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory, Arturo Bernal">CompressorException extends IOException #605, see also https://github.com/apache/httpcomponents-client/pull/580.</action>
<action type="fix" dev="ggregory" due-to="Glavo">Update outdated descriptions in IOUtils and IOUtilsTest #612.</action>
<action type="fix" dev="ggregory" due-to="Glavo">Remove unused local variable in ZipFile #615.</action>
<action type="fix" dev="ggregory" due-to="Glavo, Gary Gregory">Optimize ZipEightByteInteger #614.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ZipEightByteInteger.toString() now returns a number string without text prefix, like BigInteger.</action>
<action type="fix" dev="ggregory" due-to="ddeschenes-1, Gary Gregory">Throw an IllegalArgumentException when a file name or comment in gzip parameters encodes to a byte array with a 0 byte #618.</action>
<action type="fix" dev="ggregory" due-to="Glavo">Update outdated links in ZipMethod Javadoc #619.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ZipUtil.signedByteToUnsignedInt(byte) in favor of Byte.toUnsignedInt(byte).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ZipArchiveOutputStream.close() does not close its underlying output stream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Don't use deprecated code in TarArchiveInputStream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Don't use deprecated code in TarFile.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CpioArchiveInputStream.read(byte[], int, int) now throws an IOException on a data pad count mismatch.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CpioArchiveInputStream.readNewEntry(boolean) now throws an IOException on a header pad count mismatch.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CpioArchiveInputStream.readOldBinaryEntry(boolean) now throws an IOException on a header pad count mismatch.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Javadoc and names in the org.apache.commons.compress.archivers.sevenz package to specify kibibyte scale in memory limits.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Javadoc and names in the org.apache.commons.compress.compressors.lzw package to specify kibibyte scale in memory limits.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Javadoc and names in the org.apache.commons.compress.compressors.z package to specify kibibyte scale in memory limits.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor LZ77Compressor block classes to reduce duplication.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Package-private and private classes can be final.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ArjArchiveEntry.HostOs.HostOs().</action>
<action type="fix" dev="sebb">Drop coveralls reference (no longer needed)</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Some ZIP operations won't read all data from a non-blocking file channel.</action>
<action type="fix" dev="ggregory" due-to="Steve Roughley, Gary Gregory" issue="COMPRESS-696">ZipArchiveInputStream.getCompressedCount() throws NullPointerException if called before getNextEntry().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.SegmentConstantPool.getConstantPoolEntry(int, long) now throws Pack200Exception instead of Error and does better range checking of the index argument.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.SegmentConstantPool.getInitMethodPoolEntry(int, long, String) now throws Pack200Exception instead of Error and does better range checking of the index argument.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.SegmentConstantPool.getInitMethodPoolEntry(int, long, String) now throws Pack200Exception instead of Error on bad constant pool type input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.SegmentConstantPool.getClassSpecificPoolEntry(int, long, String) now throws Pack200Exception instead of Error on bad constant pool type input.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.SegmentConstantPool.getClassPoolEntry(String) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.ByteCode.extractOperands(OperandManager, Segment, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm.setByteCodeOperands(ByteCode, OperandManager, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.CodeAttribute.CodeAttribute(int, int, byte[], Segment, OperandManager, List) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.forms.IMethodRefForm.setByteCodeOperands(ByteCode, OperandManager, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.forms.MultiANewArrayForm.setByteCodeOperands(ByteCode, OperandManager, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.forms.NewClassRefForm.setByteCodeOperands(ByteCode, OperandManager, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.bytecode.forms.ReferenceForm.setByteCodeOperands(ByteCode, OperandManager, int) now throws Pack200Exception instead of Error on some bad inputs and states.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate CanonicalCodecFamilies.CanonicalCodecFamilies().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate FileNameUtils#getBaseName(Path).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate FileNameUtils#getExtension(Path).</action>
<action type="fix" dev="ggregory" due-to="Alexis Jehan, Gary Gregory">org.apache.commons.compress.harmony.unpack200.Archive.unpack() should not log to system out (the console).</action>
<action type="fix" dev="Sebb" due-to="aSemy">[site] Fix minor zip docs type: remove extraneous 'a' #665.</action>
<action type="fix" dev="ggregory" due-to="Zaki, Gary Gregory">Throw a better exception in SevenZFile.readFilesInfo(ByteBuffer, Archive).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">MemoryLimitException now extends CompressException instead of IOException (CompressException extends IOException).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">DumpArchiveException now extends ArchiveException instead of IOException (ArchiveException extends CompressException).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">PasswordRequiredException now extends CompressException instead of IOException (CompressException extends IOException).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Pack200Exception now extends CompressException instead of IOException (CompressException extends IOException).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArArchiveInputStream.getBSDLongName(String) now throws its EOFException with a message.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ZipEncodingHelper.getZipEncoding(*) can throw NullPointerException and IllegalArgumentException on bad input instead of returning a value using the default Charset.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Javadoc improvements throughout.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-699">ArchiveStreamFactory.detect(inputStream) ArchiveException for TAR regression.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-700">Can't detect file flutter_awesome_buttons-0.1.0.tar as a TAR file.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.utils.TimeUtils.toUnixTime(FileTime) in favor of org.apache.commons.io.file.attribute.FileTimes.toUnixTime(FileTime).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate org.apache.commons.compress.utils.TimeUtils.truncateToHundredNanos(FileTime).</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.getModificationInstant().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.setModificationInstant(Instant).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.OS, setOS(OS), getOS().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.toString().</action>
<action type="add" dev="ggregory" issue="COMPRESS-638" due-to="vincexjl, Gary Gregory, Piotr P. Karwasz">Add GzipParameters.setFileNameCharset(Charset) and getFileNameCharset() to override the default ISO-8859-1 Charset #602.</action>
<action type="add" dev="ggregory" due-to="ddeschenes-1, Gary Gregory">Add support for gzip extra subfields, see GzipParameters.setExtra(HeaderExtraField) #604.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add CompressFilterOutputStream and refactor to use.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ZipFile.stream().</action>
<action type="add" dev="ggregory" due-to="Danny Deschenes, Gary Gregory">GzipCompressorInputStream reads the modification time (MTIME) and stores its value incorrectly multiplied by 1,000.</action>
<action type="add" dev="ggregory" due-to="Danny Deschenes, Gary Gregory">GzipCompressorInputStream writes the modification time (MTIME) the value incorrectly divided by 1,000.</action>
<action type="add" dev="ggregory" due-to="Danny Deschenes, Gary Gregory">Add optional FHCRC to GZIP header #627.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipCompressorInputStream.Builder allowing to customize the file name and comment Charsets.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipCompressorInputStream.Builder.setOnMemberStart(IOConsumer) to monitor member parsing.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipCompressorInputStream.Builder.setOnMemberEnd(IOConsumer) to monitor member parsing.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add PMD check to default Maven goal.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SevenZFile.Builder.setMaxMemoryLimitKiB(int).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add MemoryLimitException.MemoryLimitException(long, int, Throwable) and deprecate MemoryLimitException.MemoryLimitException(long, int, Exception).</action>
<action type="add" issue="COMPRESS-692" dev="ggregory" due-to="Mehmet Karaman, Andrey Loskutov, Gary Gregory">Add support for zstd compression in zip archives.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add support for XZ compression in ZIP archives.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-695">Add ZipArchiveInputStream.createZstdInputStream(InputStream) to provide a different InputStream implementation for Zstandard (Zstd) #649.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Pack200Exception.Pack200Exception(String, Throwable).</action>
<action type="add" issue="COMPRESS-697" dev="ggregory" due-to="Fredrik Kjellberg, Gary Gregory">Move BitStream.nextBit() method to BitInputStream #663.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream.builder/Builder().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream.builder/Builder().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.compress.compressors.xz.XZCompressorInputStream.builder/Builder().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.compress.compressors.xz.XZCompressorOutputStream.builder/Builder().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory, David Walluck, Piotr P. Karwasz">Add org.apache.commons.compress.compressors.xz.ZstdCompressorOutputStream.builder/Builder() #666.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory, David Walluck, Piotr P. Karwasz">Add org.apache.commons.compress.compressors.xz.ZstdConstants #666.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory, Zaki">Add org.apache.commons.compress.archivers.ArchiveException.requireNonNull(T, Supplier<String>).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.compress.compressors.CompressorException as the root for all custom exceptions ArchiveException and CompressorException.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.ArchiveException(String, Throwable).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveException.ArchiveException(Throwable).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SevenZArchiveEntry.isEmptyStream().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add generics for org.apache.commons.compress.compressors.CompressorStreamProvider.createCompressorOutputStream(String, T).</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory, sebb">Bump org.apache.commons:commons-parent from 72 to 85 #563, #567, #574, #582, #587, #595, #668.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump com.github.luben:zstd-jni from 1.5.6-4 to 1.5.7-4 #565, #578, #601, #616, #630, #640, #642. Version 1.5.7-3 fixes https://github.com/luben/zstd-jni/pull/356</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.16.0 to 3.18.0 #568, #678.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-io:commons-io from 2.16.1 to 2.20.0 #575, #610.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump com.github.marschall:memoryfilesystem from 2.8.0 to 2.8.1 #577.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.ow2.asm:asm from 9.7 to 9.7.1 #586.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-codec:commons-codec from 1.17.1 to 1.19.0 #636.</action>
<!-- REMOVE -->
<action type="remove" dev="ggregory" issue="COMPRESS-638" due-to="vincexjl, Gary Gregory, Piotr P. Karwasz">GzipCompressorOutputStream no longer percent-endcodes in US-ASCII a file name or comment that the Charset in GzipParameters.setFileNameCharset(Charset) cannot encode.</action>
<action type="remove" dev="ggregory" due-to="Gary Gregory">Remove ZstdCompressorOutputStream.toString(), it was misleading by returning the delegate's toString().</action>
</release>
<release version="1.27.1" date="2024-08-16" description="This is a feature and maintenance release. Java 8 or later is required.">
<action type="fix" issue="COMPRESS-686" dev="ggregory" due-to="Richard Blank, Gary Gregory">Compression into BZip2 format has unexpected end of file when using a BufferedOutputStream.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.15.0 to 3.16.0 #556.</action>
</release>
<release version="1.27.0" date="2024-08-03" description="This is a feature and maintenance release. Java 8 or later is required.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD UnnecessaryFullyQualifiedName and others.</action>
<action type="fix" issue="COMPRESS-681" dev="ggregory" due-to="joker53-1, Gary Gregory">Support reading a 7z file that writing archive properties #541.</action>
<action type="fix" dev="ggregory" due-to="Mike Drob, Gary Gregory">Upgrade commons-io from 2.15.1 to 2.16.1 #513</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">CompressorOutputStream now extends FilterOutputStream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArchiveOutputStream now extends FilterOutputStream.</action>
<action type="fix" issue="COMPRESS-685" dev="ggregory" due-to="Archie L. Cobbs, Gary Gregory">Update Javadoc description for GzipCompressorInputStream #551.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Replace FileNameUtil.getCompressedFileName(String) use of Locale.ENGLISH with Locale.ROOT.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs DLS_DEAD_LOCAL_STORE in SevenZFile.readPackInfo(ByteBuffer, Archive).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE in ZipFile.openZipChannel(Path, long, OpenOption[]).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs UC_USELESS_OBJECT in unpack200.CpBands.parseCpSignature(InputStream).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD UselessOverridingMethod in unpack200.bytecode.InnerClassesAttribute.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD UselessOverridingMethod in unpack200.bytecode.LineNumberTableAttribute.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD CheckSkipResult in ZipArchiveInputStream.closeEntry().</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveInputStream.forEach(IOConsumer).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveInputStream.iterator().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveOutputStream.isFinished().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add ArchiveOutputStream.checkFinished().</action>
<!-- UPDATE -->
<action type="update" dev="sebb" issue="COMPRESS-684">Replace assert with Exception</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 69 to 72 #537.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump PMD from 6.x to 7.2.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-codec:commons-codec from 1.17.0 to 1.17.1 #544.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.15.0 #545.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump com.github.luben:zstd-jni from 1.5.6-3 to 1.5.6-4 #548.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.tukaani:xz from 1.9 to 1.10 #550.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.hamcrest:hamcrest from 2.2 to 3.0 #552.</action>
</release>
<release version="1.26.2" date="2024-05-18" description="Minor feature and maintenance release.">
<!-- FIX -->
<action type="fix" issue="COMPRESS-665" dev="ggregory" due-to="Gary Gregory, Elliotte Rusty Harold">Deprecate org.apache.commons.compress.utils.CharsetNames in favor or java.nio.charset.StandardCharsets.</action>
<action type="fix" issue="COMPRESS-674" dev="ggregory" due-to="Gren Elliot">Validate TarArchiveEntry checksums #500.</action>
<action type="fix" issue="COMPRESS-676" dev="ecki" due-to="Martin Schneider">OSGi: Remove unresolvable dependencies in manifest and make the commons-io packages really optional.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid possible NullPointerException in org.apache.commons.compress.utils.Sets.newHashSet(E...).</action>
<action type="fix" issue="COMPRESS-677" dev="ggregory" due-to="Jeffrey Adamson, Gary Gregory">ZipArchiveOutputStream.setEncoding(String) with a null value throws IllegalArgumentException.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">org.apache.commons.compress.harmony.unpack200.Archive.unpack() should not close streams it does not own (when constructed from Archive(InputStream, JarOutputStream)).</action>
<action type="fix" dev="ggregory" due-to="takaaki nakama, Gary Gregory">ArArchiveOutputStream doesn't pad correctly when a file name length is odd and greater than 16 (padding missing).</action>
<action type="fix" issue="COMPRESS-678" dev="ggregory" due-to="Gary Gregory">ArArchiveOutputStream should check that a file name length greater than 16 fits in a header.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArArchiveOutputStream implicit narrowing conversion in compound assignment.</action>
<action type="fix" issue="COMPRESS-679" dev="ggregory" due-to="Mikaël MECHOULAM, Gary Gregory">Regression on parallel processing of 7zip files.</action>
<action type="fix" issue="COMPRESS-675" dev="ggregory" due-to="Tim Allison, Gary Gregory">Regression in pack200's Archive class -- underlying InputStream is now closed.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in java.nio.channels.spi.AbstractInterruptibleChannel.close() when calling FileRandomAccessOutputStream.close().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs NP_NULL_PARAM_DEREF in Sets.newHashSet().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Private class' method PackingLogger.setVerbose(boolean) should be private.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 66 to 69 #495, #508.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.ow2.asm:asm from 9.6 to 9.7 #504.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump com.github.luben:zstd-jni from 1.5.5-11 to 1.5.6-2 #510.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump commons-io:commons-io from 2.15.1 to 2.16.1 #514.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.slf4j:slf4j-api from 2.0.12 to 2.0.13 #519.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-codec:commons-codec from 1.16.1 to 1.17.0.</action>
</release>
<release version="1.26.1" date="2024-03-05" description="Minor feature and maintenance release.">
<!-- FIX -->
<action type="fix" issue="COMPRESS-659" dev="ggregory" due-to="David Handermann, Gary Gregory">TarArchiveOutputStream should use Commons IO Charsets instead of Commons Codec Charsets.</action>
<action type="fix" issue="COMPRESS-660" dev="ggregory" due-to="660, Gary Gregory">Add org.apache.commons.codec to OSGi imports #482.</action>
<action type="fix" issue="COMPRESS-664" dev="ggregory" due-to="Radek Kraus">Return null value from getNextEntry() for empty file #486.</action>
<action type="fix" issue="COMPRESS-664" dev="ggregory" due-to="Elliotte Rusty Harold">Remove unused variables in tests #487.</action>
<action type="fix" issue="COMPRESS-666" dev="ggregory" due-to="Cosmin Carabet, Gary Gregory">Multithreaded access to Tar archive throws java.util.zip.ZipException: Corrupt GZIP trailer.</action>
<action type="fix" issue="COMPRESS-644" dev="ggregory" due-to="Tim Allison, Gary Gregory">ArchiveStreamFactory.detect(InputStream) returns TAR for ICO file #386.</action>
<action type="fix" issue="COMPRESS-661" dev="ggregory" due-to="Alexander Veit, Tilman Hausherr, Gary Gregory">ArchiveInputStream markSupported should always return false.</action>
<!-- REMOVE -->
<action type="remove" issue="COMPRESS-662" dev="ggregory" due-to="Christoph Loy, Gary Gregory">Remove out of date jar and scripts #483.</action>
</release>
<release version="1.26.0" date="2024-02-17" description="Minor feature and maintenance release.">
<!-- FIX -->
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">Check for invalid PAX values in TarArchiveEntry #438.</action>
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">Fix for zero size headers in ArjInputStream #439.</action>
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich">Fixes and tests for ArInputStream #440.</action>
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">Fixes for dump file parsing #442.</action>
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">Improve CPIO exception detection and handling #441.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate SkipShieldingInputStream without replacement (no longer used).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-codec, don't duplicate class PureJavaCrc32C (removed package-private class).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-codec, don't duplicate class XXHash32 (deprecated class).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-io, don't duplicate class Charsets (deprecated class).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-io, don't duplicate class IOUtils (deprecated methods).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-io, don't duplicate class BoundedInputStream (deprecated class).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse commons-io, don't duplicate class FileTimes (deprecated TimeUtils methods).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reuse Arrays.equals(byte[], byte[]) and deprecate ArchiveUtils.isEqual(byte[], byte[]).</action>
<action type="fix" dev="ggregory" due-to="alumi, Gary Gregory">Add a null-check for the class loader of OsgiUtils #451.</action>
<action type="fix" dev="ggregory" due-to="alumi, Gary Gregory">Add a null-check in Pack200.newInstance(String, String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ChecksumCalculatingInputStream in favor of java.util.zip.CheckedInputStream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate CRC32VerifyingInputStream.CRC32VerifyingInputStream(InputStream, long, int).</action>
<action type="fix" issue="COMPRESS-655" dev="ggregory" due-to="cpreisler, Gary Gregory">FramedSnappyCompressorOutputStream produces incorrect output when writing a large buffer #457.</action>
<action type="fix" issue="COMPRESS-657" dev="ggregory" due-to="Sebastian Schuberth, Gary Gregory">Fix TAR directory entries being misinterpreted as files #460.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate unused method FileNameUtils.getBaseName(String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate unused method FileNameUtils.getExtension(String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">ArchiveInputStream.BoundedInputStream.read() incorrectly adds 1 for EOF to the bytes read count.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate IOUtils.read(File, byte[]).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate IOUtils.copyRange(InputStream, long, OutputStream, int).</action>
<action type="fix" issue="COMPRESS-653" dev="ggregory" due-to="Zbynek Vyskovsky, Gary Gregory">ZipArchiveOutputStream multi archive updates metadata in incorrect file #455.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ByteUtils.InputStreamByteSupplier.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ByteUtils.fromLittleEndian(InputStream, int).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ByteUtils.toLittleEndian(DataOutput, long, int).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Reduce duplication by having ArchiveInputStream extend FilterInputStream.</action>
<action type="fix" dev="ggregory" due-to="Zbynek Vyskovsky, Gary Gregory">Support preamble garbage in ZipArchiveInputStream #471.</action>
<action type="fix" issue="COMPRESS-658" dev="ggregory" due-to="Arnout Engelen">Fix formatting the lowest expressable DOS time #472.</action>
<action type="fix" dev="ggregory" due-to="Romain Manni-Bucau, Gary Gregory">Drop reflection from ExtraFieldUtils static initialization #480.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Preserve exception causation in ExtraFieldUtils.register(Class).</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">New runtime dependencies on commons-codec, commons-lang3 and commons-io.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ZipFile.builder(), ZipFile.Builder, and deprecate constructors.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use SevenZFile.builder(), SevenZFile.Builder, and deprecate constructors.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArchiveInputStream.getCharset().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArchiveEntry.resolveIn(Path).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-lang3 from 3.13.0 to 3.14.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump com.github.marschall:memoryfilesystem from 2.6.1 to 2.8.0 #444, #458.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io from 2.15.0 to 2.15.1.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-parent from 64 to 66.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump com.github.luben:zstd-jni from 1.5.5-10 to 1.5.5-11 #448.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.slf4j:slf4j-api from 2.0.9 to 2.0.12.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-codec:commons-codec from 1.16.0 to 1.16.1.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add dependency on commons-codec:commons-codec:1.16.1.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add dependency on org.apache.commons:commons-lang3:3.14.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Add dependency on commons-io:commons-io:2.15.1.</action>
</release>
<release version="1.25.0" date="2023-11-12" description="Minor feature and maintenance release.">
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.getFileName() and deprecate getFilename().</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipParameters.setFileName(String) and deprecate setFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add FileNameUtil.getCompressedFileName(String) and deprecate getCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add FileNameUtil.getUncompressedFileName(String) and deprecate getUncompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add FileNameUtil.isCompressedFileName(String) and deprecate isCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add BZip2Utils.getCompressedFileName(String) and deprecate getCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add BZip2Utils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add BZip2Utils.isCompressedFileName(String) and deprecate isCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add LZMAUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add LZMAUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add LZMAUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add XYUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add XYUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add XYUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipUtils.getCompressedFileName(String) and deprecate getCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipUtils.getUncompressedFileName(String) and deprecate getUncompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add GzipUtils.isCompressedFileName(String) and deprecate isCompressedFilename(String).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SevenZOutputFile.putArchiveEntry(SevenZArchiveEntry) and deprecate putArchiveEntry(ArchiveEntry).</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add generics to ChangeSet and ChangeSetPerformer.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add generics to ArchiveStreamProvider and friends.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add a generic type parameter to ArchiveOutputStream and avoid unchecked/unconfirmed type casts in subclasses.</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">Add a generic type parameter to ArchiveInputStream and deprecate redundant get methods in subclasses.</action>
<action type="add" issue="COMPRESS-648" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">Add ability to restrict autodetection in CompressorStreamFactory #433.</action>
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile regular expression in ArArchiveInputStream.isBSDLongName(String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile regular expression in ArArchiveInputStream.isGNULongName(String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile regular expression in TarArchiveEntry.parseInstantFromDecimalSeconds(String).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Precompile regular expression in ChangeSet.addDeletion(Change).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory" issue="COMPRESS-649">Improve performance in BlockLZ4CompressorOutputStream.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Null-guard Lister.main(String[]) for programmatic invocation.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">NPE in pack200.NewAttributeBands.Reference.addAttributeToBand(NewAttribute, InputStream).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Incorrect lazy initialization and update of static field in pack200.CodecEncoding.getSpecifier(Codec, Codec).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Incorrect string comparison in unpack200.AttributeLayout.numBackwardsCallables().</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Inefficient use of keySet iterator instead of entrySet iterator in pack200.PackingOptions.addOrUpdateAttributeActions(List, Map, int).</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Package private class pack200.IcBands.IcTuple should be a static inner class.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Private class ZipFile.BoundedFileChannelInputStream should be a static inner class.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor internal SevenZ AES256SHA256Decoder InputStream into a named static inner class.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Refactor internal SevenZ AES256SHA256Decoder OutputStream into a named static inner class.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Use the root Locale for string conversion of command line options in org.apache.commons.compress.archivers.sevenz.CLI.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Calling PackingUtils.config(PackingOptions) with null now closes the internal FileHandler.</action>
<action type="fix" issue="COMPRESS-650" dev="ggregory" due-to="Chad Preisler">LZ4 compressor throws IndexOutOfBoundsException.</action>
<action type="fix" issue="COMPRESS-632" dev="ggregory" due-to="Yakov Shafranovich, Gary Gregory">LZWInputStream.initializeTables(int) should throw IllegalArgumentException instead of ArrayIndexOutOfBoundsException.</action>
<action type="fix" issue="COMPRESS-647" dev="ggregory" due-to="Robin Schimpf, Gary Gregory">Throw IOException instead of ArrayIndexOutOfBoundsException when reading Zip with data descriptor entries.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.slf4j:slf4j-api from 2.0.8 to 2.0.9 #413.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io from 2.13.0 to 2.15.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump com.github.luben:zstd-jni from 1.5.5-5 to 1.5.5-10 #422, #431.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump org.ow2.asm:asm from 9.5 to 9.6 #421.</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 62 to 64 #421.</action>
</release>
<release version="1.24.0" date="2023-09-04" description="Minor feature and maintenance release.">
<!-- ADD -->
<action type="add" dev="kinow" due-to="Gary Gregory">Make ZipArchiveEntry.getLocalHeaderOffset() public.</action>
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Daniele Galloppo">Use try-with-resources in ArchiveStreamFactory #391.</action>
<action type="fix" dev="ggregory" due-to="Martin Wiesner">Javadoc and code comments: Sanitize grammar issues and typos #393.</action>
<action type="fix" dev="ggregory" due-to="Martin Wiesner">Remove redundant (null) initializations #394.</action>
<action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">[StepSecurity] ci: Harden GitHub Actions #396.</action>
<!-- UPDATE -->
<action type="update" dev="kinow" due-to="Dependabot">Bump zstd-jni from 1.5.4-2 to 1.5.5-5 #377, #383, #388, #390, #400.</action>
<action type="update" dev="kinow" due-to="Dependabot">Bump memoryfilesystem from 2.5.0 to 2.6.1 #381, #385, #387.</action>
<action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">Bump commons-parent from 56 to 61 #384.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-io:commons-io from 2.11.0 to 2.13.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons-lang3 from 3.12.0 to 3.13.0.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.slf4j:slf4j-api from 2.0.7 to 2.0.8.</action>
</release>
<release version="1.23.0" date="2023-03-18" description="Minor feature and maintenance release.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="CodeQL, Gary Gregory">Implicit narrowing conversion in compound assignment.</action>
<action type="fix" dev="ggregory" due-to="CodeQL, Gary Gregory">Avoid NPE in FileNameUtils.getBaseName(Path) for paths with zero elements like root paths.</action>
<action type="fix" dev="ggregory" due-to="CodeQL, Gary Gregory">Avoid NPE in FileNameUtils.getExtension(Path) for paths with zero elements like root paths.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">LZMA2Decoder.decode() looses original exception.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Extract conditions and avoid duplicate code. #297.</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">Remove duplicate conditions. Use switch instead. #298.</action>
<action type="fix" dev="ggregory" due-to="Robin Schimpf">Replace JUnit 3 and 4 with JUnit 5 #344, #346.</action>
<action type="fix" dev="ggregory" due-to="Glavo">Make 'ZipFile.offsetComparator' static #353.</action>
<action type="fix" issue="COMPRESS-638" dev="ggregory" due-to="Radar wen, Gary Gregory, Michael Osipov">
The GzipCompressorOutputStream#writeHeader() uses ISO_8859_1 to write the file name and comment.
If the strings contains non-ISO_8859_1 characters, unknown characters are displayed after decompression.
Use percent encoding for non ISO_8859_1 characters.
</action>
<action type="fix" dev="ggregory" due-to="Jonathan Leitschuh, Gary Gregory">Port some code from IO to NIO APIs.</action>
<action type="fix" dev="ggregory" due-to="Una, Gary Gregory, Jochen Wiedmann, quaternary, Bruno P. Kinoshita">pack200: Fix FileBands misusing InputStream#read(byte[]) #360.</action>
<action type="fix" issue="COMPRESS-641" dev="ggregory" due-to="XenoAmess, Gary Gregory, Bruno P. Kinoshita">Add TarArchiveEntry.getLinkFlag() #365.</action>
<action type="fix" issue="COMPRESS-642" dev="ggregory" due-to="Anton Klarén, Gary Gregory">Integer overflow ArithmeticException in TarArchiveOutputStream #368.</action>
<action type="fix" issue="COMPRESS-502" dev="ggregory" due-to="Dominik Stadler, Stefan Bodewig, Gary Gregory">ZipFile.finalize() should not write to std err.</action>
<!-- ADD -->
<action type="add" issue="COMPRESS-614" dev="ggregory" due-to="Andre Brait, Gary Gregory">Use FileTime for time fields in SevenZipArchiveEntry #256.</action>
<action type="add" issue="COMPRESS-621" dev="ggregory" due-to="Glavo">Fix calculation the offset of the first ZIP central directory entry #334.</action>
<action type="add" issue="COMPRESS-633" dev="ggregory" due-to="Daniel Santos, Bruno P. Kinoshita, Gary Gregory">Add encryption support for SevenZ #332.</action>
<action type="add" issue="COMPRESS-613" dev="ggregory" due-to="Andre Brait, Gary Gregory, Bruno P. Kinoshita">Support for extra time data in Zip archives #345.</action>
<action type="add" issue="COMPRESS-621" dev="ggregory" due-to="Gary Gregory">Add DefaultBackingStoreSupplier to write to a custom folder instead of the default temporary folder.</action>
<action type="add" issue="COMPRESS-600" dev="ggregory" due-to="Gary Gregory, Pascal Davoust">Add capability to configure Deflater strategy in GzipCompressorOutputStream: GzipParameters.setDeflateStrategy(int).</action>
<!-- REMOVE -->
<action type="remove" dev="ggregory" due-to="Gary Gregory">Remove BZip2CompressorOutputStream.finalize() which only wrote to std err.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Dependabot">Bump mockito.version from 4.8.0 to 4.11.0 #328, #331, #340, #348.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump pmd from 6.50.0 to 6.53.0.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump memoryfilesystem from 2.3.0 to 2.5.0 #330, #359.</action>
<action type="update" dev="kinow" due-to="Dependabot">Bump slf4j-api from 2.0.3 to 2.0.7 #329, #333, #341, #371.</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump japicmp from 0.16.0 to 0.17.1.</action>
<action type="update" dev="ggregory" due-to="Dependabot">Bump commons-parent from 54 to 56 #339, #349.</action>
<action type="update" dev="kinow" due-to="Dependabot">Bump zstd-jni from 1.5.2-5 to 1.5.4-2 #362, #364.</action>
<action type="update" dev="kinow" due-to="Dependabot">Bump asm from 9.4 to 9.5 #376.</action>
</release>
<release version="1.22" date="2022-11-01" description="Minor feature and maintenance release.">
<!-- FIX -->
<action type="fix" dev="ggregory" due-to="Gary Gregory">
Fix some compiler warnings in pack200 packages.
</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">
Close File input stream after unpacking in Pack200UnpackerAdapter.unpack(File, JarOutputStream).
</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">
Pack200UnpackerAdapter.unpack(InputStream, JarOutputStream) should not close its given input stream.
</action>
<action issue="COMPRESS-596" type="fix" date="2021-12-07" dev="Peter Lee" due-to="Tamas Mucs">
Fix minor problem in examples.
</action>
<action issue="COMPRESS-584" type="fix" date="2021-08-11" dev="matthijsln" due-to="Matthijs Laan, Peter Lee">
Add a limit to the copy buffer in IOUtils.readRange() to
avoid reading more from a channel than asked for.
Github Pull Request #214.
</action>
<action type="fix" dev="ggregory" due-to="Helder Magalhães, Gary Gregory, PeterAlfredLee">
Documentation nits #217.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Replace wrapper Collections.sort is with an instance method directly. #245.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Replace manual comparisons with Comparator.comparingInt() #244.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Replace manual copy of array contents with System.arraycopy() #246.
</action>
<action type="fix" dev="ggregory" due-to="Glavo, Bruno P. Kinoshita, PeterAlfredLee, Gary Gregory">
Fix thread safety issues when encoding 7z password #248.
</action>
<action type="fix" dev="ggregory" due-to="Peter Dettman">
bzip2: calculate median-of-3 on unsigned values #242.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory, Bruno P. Kinoshita">
Use Math.min and Math.max calculations. #247.
</action>
<action issue="COMPRESS-603" type="fix" date="2022-02-09" dev="Peter Lee" due-to="Matt Sicker">
Expander should be able to work if an entry's name is "./".
</action>
<action issue="COMPRESS-604" type="fix" dev="ggregory" due-to="Andre Brait">
Ensure compatibility with Java 8 #252.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Use StringBuilder instead of StringBuffer. #284.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Inline variable. Remove redundant local variable. #283.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Use compare method #285.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Remove Unnecessary interface modifiers #281.
</action>
<action type="fix" dev="ggregory" due-to="Arturo Bernal">
Avoid use C-style array declaration. #282.
</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">
ChecksumVerifyingInputStream.read() does not always validate checksum at end-of-stream.
</action>
<action type="fix" dev="ggregory" due-to="Matt Juntunen">
Fix TarFileTest #289.
</action>
<action issue="COMPRESS-625" type="fix" dev="ggregory" due-to="MrBump, Gary Gregory">
Update Wikipedia link in TarUtils.java:627.
</action>
<action issue="COMPRESS-626" type="fix" dev="ggregory" due-to="Andrii Hudz, Gary Gregory">
OutOfMemoryError on malformed pack200 input (attributes).
</action>
<action issue="COMPRESS-628" type="fix" dev="ggregory" due-to="Andrii Hudz, Gary Gregory">
OutOfMemoryError on malformed pack200 input (NewAttributeBands.readNextUnionCase).
</action>
<action issue="COMPRESS-628" type="fix" dev="ggregory" due-to="Gary Gregory">
OutOfMemoryError on malformed unpack200 input (org.apache.commons.compress.harmony.unpack200.NewAttributeBands.readNextUnionCase).
</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">
Some input streams are not closed in PackingUtils.
</action>
<action issue="COMPRESS-627" type="fix" dev="ggregory" due-to="anatawa12, Gary Gregory">
Pack200 causes a 'archive.3E' error if it’s not in the system class loader.
</action>
<!-- ADD -->
<action issue="COMPRESS-602" type="add" dev="ggregory" due-to="Postelnicu George, Gary Gregory">
Migrate ZIP package to use NIO #236.
</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">
Add APK file extension constants: ArchiveStreamFactory.APK, APKM, APKS, XAPK.
</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">
ArchiveStreamFactory.createArchiveInputStream(String, InputStream, String) supports the "APK" format (it's a JAR).
</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">
Expander example now has NIO Path versions of IO File APIs.
</action>
<action issue="COMPRESS-612" type="add" dev="ggregory" due-to="Andre Brait, Gary Gregory">
Improve TAR support for file times #254.
</action>
<action type="add" dev="ggregory" due-to="Gary Gregory">
Add SevenZArchiveEntry.setContentMethods(SevenZMethodConfiguration...).
</action>
<!-- UPDATE -->
<action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
Bump actions/cache from 2.1.6 to 3.0.10 #230, #257, #305, #320.
</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
Bump actions/checkout from 2.3.4 to 3.1.0 #226, #227, #251, #300, #321.
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump actions/setup-java from 2 to 3.5.1 #278.
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump github/codeql-action from 1 to 2 #287.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump mockito-core from 3.11.1 to 4.6.1 #209, #224, #231, #235, #243, #253, #286, #294.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump org.apache.felix.framework from 7.0.0 to 7.0.1 #208.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump memoryfilesystem from 2.1.0 to 2.3.0 #212, #237.
</action>
<action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
Bump zstd-jni from 1.5.0-2 to 1.5.2-5 #215, #233, #238, #240, #250, #291, #326.
</action>
<action type="update" issue="COMPRESS-582" dev="ggregory" due-to="Alex Landau, Stephan, Gary Gregory">
Bump Pack200 packages from ASM 3.2 to 9.2 #216.
Breaks binary compatibility in the internals of the pack200 implementation:
- Segment
- SegmentMethodVisitor
- SegmentAnnotationVisitor
- SegmentFieldVisitor
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump asm from 9.2 to 9.4 #279, #322.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump maven-javadoc-plugin from 3.3.0 to 3.4.1 #221, #249, #288, #308.
</action>
<action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #296, #309, #311.
</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">
Bump pmd from 6.44.0 to 6.50.0.
</action>
<action type="update" dev="kinow" due-to="Gary Gregory">
Bump commons.japicmp.version from 0.15.3 to 0.16.0.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump maven-bundle-plugin from 5.1.2 to 5.1.8 #234, #239, #290, #292, #301, #304.
</action>
<action type="update" dev="ggregory" due-to="Dependabot">
Bump org.apache.felix.framework from 7.0.1 to 7.0.5 #232, #295.
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump slf4j-api from 1.7.30 to 2.0.3 #213, #241, #258, #310, #314, #315, #318.
</action>
<action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">
Bump commons-parent from 52 to 54 #280.
</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">
Bump commons.jacoco.version from 0.8.7 to 0.8.8.
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump junit.version from 5.8.2 to 5.9.1 #302, #317.
</action>
<action type="update" dev="kinow" due-to="Dependabot">
Bump mockito.version from 4.6.1 to 4.8.0 #307, #312.
</action>
<action type="update" dev="ggregory" due-to="Gary Gregory">
Bump maven-surefire-plugin from 3.0.0-M6 to 3.0.0-M7.
</action>
</release>
<release version="1.21" date="2021-07-12"
description="Release 1.21 (Java 8 or above)
----------------------------------------
SevenZFileOptions has a new setting that needs to be enabled explicity
if SevenZFile should try to recover broken archives - a feature
introduced with Commons Compress 1.19. This is a breaking change if
you relied on the recovery attempt.">
<action type="update" date="2020-03-07"
due-to="Peter Alfred Lee">
Made sure ZstdCompressorOutputStream no longer used
deprecated ZstOutputStream constructors.
Github Pull Request #94.
</action>
<action issue="COMPRESS-504" type="update" date="2020-03-16">
Make compression level of ParallelScatterZipCreator
configurable via a new constructor.
</action>
<action issue="COMPRESS-505" type="fix" date="2020-03-24">
Fix bugs in random access of 7z. Problems may happen
in a mixture use of random access and sequential access
of 7z.
Github Pull Request #95.
</action>
<action issue="COMPRESS-510" type="fix" date="2020-04-18">
Fix bugs in random access of 7z. Exceptions are thrown
when reading the first entry multiple times by random
access.
</action>
<action issue="COMPRESS-509" type="fix" date="2020-05-06"
due-to="Petr Vasak" dev="PeterLee">
Add '/' to directories with long name in tar. This is to
resolve the ambiguous behavior of the TarArchiveEntry.getName()
method between directory with short name and long name.
</action>
<action issue="COMPRESS-520" type="fix" date="2020-05-23" due-to="Robin Schimpf">
Removed the PowerMock dependency.
</action>
<action issue="COMPRESS-516" type="fix" date="2020-05-23">
Added improved checks to detect corrupted bzip2 streams and
throw the expected IOException rather than obscure
RuntimeExceptions.
See also COMPRESS-519.
</action>
<action issue="COMPRESS-517" type="fix" date="2020-05-23">
Improved parsing of X5455_ExtendedTimestamp ZIP extra field.
</action>
<action issue="COMPRESS-518" type="fix" date="2020-05-23">
ZipArchiveInputStream and ZipFile will now throw an
IOException rather than a RuntimeException if the zip64 extra
field of an entry could not be parsed.
</action>
<action issue="COMPRESS-523" type="fix" date="2020-05-23">
Improved detection of corrupt ZIP archives in ZipArchiveInputStream.
</action>
<action issue="COMPRESS-521" type="fix" date="2020-05-24">
Added improved checks to detect corrupted deflate64 streams and
throw the expected IOException rather than obscure
RuntimeExceptions.
See also COMPRESS-522, COMPRESS-525, COMPRESS-526, and COMPRESS-527.
</action>
<action issue="COMPRESS-515" type="fix" date="2020-05-22" due-to="ian-lavallee">
Add the archive name in the exception in the constructor of
ZipFile to make it a more specific exception.
Github Pull Request #102.
</action>
<action issue="COMPRESS-530" type="fix" date="2020-05-26">
Throw IOException when it encounters a non-number while parsing pax header.
</action>
<action issue="COMPRESS-531" type="fix" date="2020-05-31">
Throw IOException when a tar archive contains a PAX header
without any normal entry following it.
</action>
<action issue="COMPRESS-532" type="fix" date="2020-05-31">
Added improved checks to detect corrupted IMPLODED streams and
throw the expected IOException rather than obscure
RuntimeExceptions.
</action>
<action issue="COMPRESS-529" type="fix" date="2020-06-01">
Throw expected IOException instead of NumberFormatException if
it encounters non-numbers when parsing pax headers for tarball.
Throw IllegalArgumentException instead of RuntimeExceptions if
the file name is longer than 100 bytes with the longFileMode
of LONGFILE_ERROR, and address this in java docs.
Throw IllegalArgumentException instead of RuntimeExceptions if
the any of the numeric values of an entry exceeds the limits
of a traditional tar header while bigNumberMode is
BIGNUMBER_ERROR, and address this in java docs.
</action>
<action issue="COMPRESS-536" type="update" date="2020-06-03"
due-to="Jin Xu">
Made an inner class static
Github Pull Request #107.
</action>
<action issue="COMPRESS-535" type="update" date="2020-06-06"
due-to="Jin Xu">
added an early exit to a loop in BZip2CompressorOutputStream
Github Pull Request #106.
</action>
<action issue="COMPRESS-404" type="update" date="2020-06-08" due-to="theobisproject">
Update the class of variable file in TarArchiveEntry from
java.io.File to java.nio.file.Path. Corresponding constructors
and methods are also modified/added.
NOTE: The userName, groupName, userID and groupID will also be
set if they are available. The userName and groupName was not
set previously, and the previous value of UserID:GroupID was
0:0 by default.
Please note this may cause a reproducibility problem.
Github Pull Request #97.
</action>
<action issue="COMPRESS-539" type="update" date="2020-07-04" due-to="Robin Schimpf">
Reuse the record buffer in TarArchiveInputStream.
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add SevenZOutputFile.write(InputStream).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add SevenZOutputFile.write(Path, OpenOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add SevenZOutputFile.createArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add ArArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add ArArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add ctor CpioArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add ctor CpioArchiveEntry(short, Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add CpioArchiveEntry.setTime(FileTime).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add TarArchiveOutputStream.createArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add ctor TarArchiveEntry(Path, String, LinkOption...).
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add IOUtils.EMPTY_LINK_OPTIONS.
</action>
<action type="update" date="2020-08-08" due-to="Gary Gregory" dev="ggregory">
Add Path support to ZipArchiveOutputStream #123.
</action>
<action issue="COMPRESS-543" type="fix" date="2020-08-10"
due-to="wulf2333" dev="PeterLee">
Fix for test fails on Windows. The tests are failing because the
default charset is not UTF-8.
</action>
<action issue="COMPRESS-544" type="fix" date="2020-08-13"
due-to="Aditya Prasad" dev="PeterLee">
TarArchiveInputStream can not detect a truncated tar in skip()
and skipRecordPadding().
</action>
<action issue="COMPRESS-542" type="fix" date="2020-08-15"
due-to="theobisproject" dev="theobisproject">
Make the memory allocation in SevenZFile.readFilesInfo a lazy
allocation to avoid OOM when dealing some giant 7z archives.
Github Pull Request #120.
Also added sanity checks before even trying to parse an
archive and made SevenZFileOptions' maxMemorySizeInKb apply to
the stored metadata for an archive.
And further added an option that needs to be enabled in order
to make SevenZFile try to recover a broken archive. This is a
backwards incompatible change.
</action>
<action issue="COMPRESS-546" type="fix" date="2020-08-15"
due-to="Maksim Zuev" dev="PeterLee">
ZipArchiveInputStream should throw an exception if a corrputed
zip64 extra field is met.
</action>
<action type="fix" date="2020-08-22" dev="PeterLee">
Add a new maven profile in pom.xml for JDK14+ to ignore the
failing tests about Pack200.
This has later been superseeded by adding the Apache Harmony
classes for Pack200 support.
</action>
<action issue="COMPRESS-548" type="fix" date="2020-08-24"
due-to="Maksim Zuev" dev="PeterLee">
Throw an IOException when reading the ZIP extra field if the
length is too short.
</action>
<action issue="COMPRESS-554" type="fix" date="2020-09-01"
due-to="Maksim Zuev" dev="PeterLee">
Throw an declared IOException if a null entry is met when
reading a global pax header instead of a runtime NPE.
</action>
<action issue="COMPRESS-545" type="fix" date="2020-09-02"
due-to="Maksim Zuev" dev="PeterLee">
ZIP extraction could lead to ArrayIndexOutOfBoundsExceptions
rather than the expected IOException.
</action>
<action issue="COMPRESS-547" type="fix" date="2020-09-02"
due-to="Maksim Zuev" dev="PeterLee">
Add asserts for Arrays.copyOf in X0017_StrongEncryptionHeader.
</action>
<action issue="COMPRESS-550" type="add" date="2020-09-07"
due-to="Scott Frederick" dev="PeterLee">
Add writePreamble to ZipArchiveInputStream. This method could
write raw data to ZIP archive before any entry was written to
the ZIP archive.
For most of the time, this is used to create self-extracting
ZIP.
Github Pull Request #127.
</action>
<action type="fix" date="2020-09-24" dev="PeterLee">
Fix for the CFH signature detect in ZipArchiveInputStream.
The problem could be reproduced by a ZIP archive with Data
Descriptor and STORED, and without the Data Descriptor
signature.
</action>
<action issue="COMPRESS-553" type="fix" date="2020-10-07"
due-to="Maksim Zuev" dev="PeterLee">
The length validation in TarArchiveInputStream.parsePaxHeaders
should also consider the headers with length smaller than 1
and ignore these headers.
</action>
<action issue="COMPRESS-558" type="fix" date="2020-11-13"
due-to="Robin Schimpf" dev="Robin Schimpf">
Fix accidentally added '/' to file names.
This problem is caused by the incomplete fix of
COMPRESS-509.
Github Pull Request #151.
</action>
<action issue="COMPRESS-560" type="fix" date="2020-11-30"
due-to="Robin Schimpf" dev="Robin Schimpf">
As sparse entries can be successfully parsed now,
TarArchiveInputStream.canReadEntryData should return
true if the entry is a sparse entry.
Github Pull Request #153.
</action>
<action issue="COMPRESS-559" type="fix" date="2020-12-10"
due-to="Robin Schimpf" dev="Robin Schimpf">
SparseFilesTest#testExtractPaxGNU should be skipped
if the version of GNU tar binary is 1.28.
Github Pull Request #152.
</action>
<action issue="COMPRESS-561" type="update" date="2020-12-22"
due-to="Arturo Bernal" dev="Arturo Bernal">
Some minor improvements.
Github Pull Request #157.
</action>
<action issue="COMPRESS-540" type="add" date="2020-01-09"
due-to="Robin Schimpf" dev="Robin Schimpf">
Added support for random access to the TAR packages.
Github Pull Request #113.
</action>
<action issue="COMPRESS-565" type="add" date="2021-02-14"
due-to="Michael L Heuer" dev="PeterLee">
Added support for BufferPool in ZstdCompressorInputStream.
Github Pull Request #165.
</action>
<action type="fix" date="2021-02-27" due-to="Fabian Meumertzheim">
Removed an empty loop that was just warming the planet for
certain ZIP archives.
Github Pull Request #172.
</action>
<action issue="COMPRESS-567" type="fix" date="2021-02-28">
Made some of the stream classes used internally throw
IOExceptions on illegal arguments rather than
RuntimeExceptions to make it more likely that corrupt archives
cause expected checked exceptions rather than RuntimException
for various formats.
Fixes a specific case for ZIP but affects other formats as
well.
</action>
<action issue="COMPRESS-507" type="add" date="2021-07-02"
due-to="Gary Gregory, Apache Harmony" dev="ggregory">
Commons Compress cannot be built with JDK14 due to Pack200 removal.
Add Pack200 implementation from Apache Harmony.
</action>
<action type="fix" date="2021-07-02" due-to="Arturo Bernal" dev="ggregory">
Simplify Assertions #205.
</action>
<!-- UPDATE -->
<action type="update" date="2020-08-18">
Update from Java 7 to 8.
</action>
<action type="update" date="2020-08-10" due-to="Dependabot" dev="ggregory">
Update GitHub actions/checkout from v1 to v2.3.4, #114, #124, #139, #150.
</action>
<action type="update" date="2020-08-21" due-to="Dependabot, Gary Gregory" dev="ggregory">
Update actions/setup-java from v1.4.0 to v2, #125, #133, #141.
</action>
<action type="update" date="2020-08-21" due-to="Dependabot, Gary Gregory" dev="ggregory">
Update com.github.luben:zstd-jni from 1.4.4-7 to 1.5.0-2, #118, #159, #173, #174, #203.
</action>
<action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">
Update tests slf4j-api from 1.7.26 to 1.7.30 #117.
</action>
<action type="update" date="2020-08-21" due-to="Dependabot" dev="ggregory">