Prepare for v3.3.0
Change-Id: Idca4f005a485529673a2e33992cfe65e4b802a2e
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5cbd3e3..1bdb58f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Changelog
-## [Unreleased]
+## [v3.3.0] - 2026-03-26
### Fixed
@@ -8,6 +8,17 @@
- Shell wrapper auto-detection message (memory/workload) is no longer echoed to stderr; passed via environment variable and included in the log file instead
- Fixed `java.util.logging.ErrorManager` NPE on JVM shutdown caused by `LOGGER` calls inside shutdown hooks executing after `LogManager.reset()` had already closed file handlers
- For annotation and krill output modes, console logging is suppressed entirely (everything goes to the log file at the requested level)
+- Fixed OutOfMemoryError and deadlock regressions in external annotation mode by bounding the worker backlog instead of letting whole-document annotation tasks accumulate unbounded in heap
+- Annotation worker buffer sizing now respects `KORAPXMLTOOL_XMX`, so large configured heaps permit larger bounded backlogs without collapsing throughput
+- Fixed Krill incremental output stalls where completed texts could be compressed but never written, causing the progress bar to stay near zero while memory kept growing
+- Fixed Krill work-stealing queue selection to use month-aware `compareTextIds()` ordering instead of raw string order, preventing one foundry from starving the others
+- Fixed a Krill writer-thread stall introduced by compression backpressure by keeping compression enqueueing on worker-completion paths instead of letting the writer thread run compressor work
+- Fixed sparse and empty foundry handling regressions in Krill output by covering them with fixture-based tests (`ndy_sample.cmc.zip`, `ndy_sample.gender.zip`)
+
+### Added
+
+- Added `KRILL-STATS` log lines with heap usage, raw/compressed backlog sizes, in-flight compression count, ready-queue depth, and peak values for server-side tuning
+- Added compression-pool diagnostics to `KRILL-STATS` (`active`, `queued`, `threads`) to distinguish writer stalls from compressor backlog
## [v3.2.1] - 2026-03-17
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index f7087d1..3f00653 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -61,7 +61,7 @@
@Command(
name = "korapxmltool",
mixinStandardHelpOptions = true,
- version = ["korapxmltool v3.2.1"],
+ version = ["korapxmltool v3.3.0"],
usageHelpAutoWidth = false,
usageHelpWidth = 200,
description = ["Converts between KorAP-XML ZIP format and formats like CoNLL-U, Krill, word2vec, NOW\n"+
diff --git a/build.gradle b/build.gradle
index f2bb849..3d26af9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,4 +5,4 @@
}
// Zentrale Projektversion für korapxmltool
-version = '3.2.1'
+version = '3.3.0'