Tomcat 11: Lenient vs Strict Defaults, Side by Side
A side-by-side comparison of legacy Tomcat defaults and the strict defaults in Tomcat 11, showing which behaviors change and what to verify before you upgrade a Java web tier.
JetbrainsAleksey ZamullaAnnouncement
Kotlin Multiplatform’s current compilation scheme can cause IDE and compiler disagreements or unexpected resolution of platform-specific declarations from common source sets. In Kotlin 2.5.0-Beta1, an optional separate compilation approach aligns compiler behavior with IDE analysis, making common code resolve only against metadata KLIB declarations. This also eliminates issues like overload selection differing by target and type inference failures in platform code. Separate compilation is experimental and disabled by default, enabled by adding kotlin.kmp.separateCompilation=true to gradle.properties. Known issues include problems with cinterop commonization and single-target modules; library authors must publish metadata KLIBs for the feature to work correctly.
Kotlin Multiplatform projects with multiple source sets (e.g., commonMain and jvmMain) produce platform artifacts and metadata KLIBs. During compilation of a platform source set, the compiler compiles common source set code against the platform artifacts of dependencies, which can lead to unexpected resolution of platform-only declarations. The IDE, however, resolves common code against only the metadata KLIB (common declarations), causing disagreements between IDE analysis and compiler behavior.
Separate compilation resolves common source set calls using metadata KLIBs only, preventing implicit resolution to platform declarations.
Enable separate compilation by setting kotlin.kmp.separateCompilation=true in gradle.properties; it is experimental and disabled by default.
Library authors must publish metadata KLIBs for separate compilation to work correctly in downstream projects.
Add the compiler option kotlin.kmp.separateCompilation=true to your gradle.properties file. The feature is experimental and disabled by default.
Library authors must publish metadata KLIBs for separate compilation to work correctly. The KMP Gradle plugin does this by default, but it becomes essential under the new compilation scheme.
Yes. For example, with commonization of cinterops (issues KT-88178, KT-41509) and various smaller problems (KT-88148). KMP modules with a single declared target are not affected.
Summaries are generated from the original by a language model. Check the original before relying on it.
See the idea
A side-by-side comparison of legacy Tomcat defaults and the strict defaults in Tomcat 11, showing which behaviors change and what to verify before you upgrade a Java web tier.
Keep reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
One useful email. Unsubscribe anytime.