Commits
Tarun Sukhani authored 7f3654a8641
feat(bundle): jars-only classpath and a JDK AOT cache for the bundle launcher (PF-180) GraalVM native image is rejected for this fork; the decision and its four re-evaluation triggers are recorded in docs/adr/0001-reject-graalvm-native-image.md. What it would have bought at startup is taken from the JDK instead: JDK 25's AOT cache (JEP 483, JEP 514) stores the classes a training run loaded and linked. The JDK will not write a cache while a non-empty directory is on the classpath, and conf/ was the first entry of a bundle's classpath. So: - PlayBundleTask writes jars only into .classpath. - Logger.LoggerInit and Play.initStaticStuff look in <app>/conf themselves when the classpath has no such resource, or has it only inside a jar. Without that a custom application.log.path resolved to null in a bundle and the application logged nothing. A Gradle launch, whose classpath still starts with conf/, resolves as before. bundle-play.sh gains "aot-gen", a training run: it starts the application with run's JVM options plus -XX:AOTCacheOutput, waits on the port over bash's /dev/tcp, requests GET /, stops the JVM with SIGTERM and moves the cache to app.aot only when the JVM finished assembling it. It never touches the pid file, and a failed run leaves the cache in use as it was. run and start pass -XX:AOTCache=app.aot when the file exists, ahead of the operator's options, and leave it out when those carry an option the JVM refuses to start with next to it. Under Git Bash aot-gen refuses: kill is a hard kill for java.exe there, and the cache is written only on a normal exit. Behaviour change for bundles: a library that finds a file in conf/ through the system class loader (Log4j's log4j2.component.properties, for one) no longer does. Play's own use of conf/, and lookups through Play.classloader, are unchanged. The upgrade note is in deployment.textile. Docs: "The AOT cache for a play bundle" and "Upgrading: conf/ is no longer on a bundle's classpath" in deployment.textile; logs.textile, main.textile; AGENTS.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KDUoh3KhBpfjXn4rV6H356