Hutool 3.9 Upd Official

| Issue ID | Description | Impact | |----------|-------------|--------| | #1073 | JsonUtil.toJsonStr() failed on AtomicInteger | High | | #1092 | FileUtil.tail() infinite loop on empty file | Medium | | #1105 | ZipUtil.unzip() leaves open file handles on exception | Critical (Resource leak) | | #1118 | DateUtil.offsetHour() DST boundary error | Medium (Specific timezones) |

The migration is 95% smooth, but watch out for: Hutool 3.9 UPD

At midnight, the server did something impossible: it logged 2024-01-01 00:00:00 — then immediately rolled back to 2023-12-31 23:59:59 . The New Year began. Then it began again. A time loop, contained entirely in software. | Issue ID | Description | Impact |

Many enterprise legacy systems are locked into JDK 7 or early JDK 8 due to technical debt, strict security policies, or middleware constraints. For those teams, upgrading to Hutool 5.x (which requires JDK 8+ with strict module checks) is not trivial. Hutool 3.9.UPD serves as the final, polished, production-ready release for those environments. A time loop, contained entirely in software

The intersection , union , and subtract methods were re-implemented to use HashSet pre-sizing, reducing rehash operations. In benchmarks, set operations on collections >10,000 elements became ~30% faster.