|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 0.6.0 |
| 4 | + |
| 5 | +### New Features |
| 6 | + |
| 7 | +- **Java expression evaluation (ECJ compile+inject)** — full Java expression support in `dbg eval`, replacing the limited variable/field-only evaluator |
| 8 | + - Arithmetic, method calls with arguments, ternary, constructors, collections, string operations |
| 9 | + - Automatic reflection fallback for private field access |
| 10 | + - Compiles expressions to bytecode with ECJ 3.40.0, injects via JDI `ClassLoader.defineClass` |
| 11 | +- **Java hot code replace (`dbg hotpatch`)** — live-patch Java classes without restarting the JVM |
| 12 | + - `.java` input: compiles with ECJ using debuggee classpath, redefines via `vm.redefineClasses()` |
| 13 | + - `.class` input: reads bytecode directly, auto-detects inner class siblings |
| 14 | + - Obsolete frame detection with restart-frame support |
| 15 | + - Two-step DAP protocol (prepare + redefineClasses) avoids java-debug framework deadlock |
| 16 | + - Works with Spring Boot: attach to running app, hotpatch controller, verify with curl |
| 17 | +- **Unified structured logger** — single typed JSONL log file per session |
| 18 | + - Replaces separate CdpLogger + DaemonLogger + DEBUG_DAP with `Logger<N>` typed by source |
| 19 | + - `LogData<N, M>` conditional type: known messages enforce data shapes at compile time |
| 20 | + - Custom formatters per (source, msg) pair: CDP `→/←/⚡`, DAP `→/←/⚡`, default `key=value` |
| 21 | + - `dbg logs --src cdp --level trace` with colored output |
| 22 | + |
| 23 | +### Bug Fixes |
| 24 | + |
| 25 | +- **JVM freeze after hotpatch** — `SUSPEND_ALL` breakpoint policy (matching IntelliJ) prevents VM safepoint deadlock when `redefineClasses` is called with only one thread paused |
| 26 | +- **Breakpoint disable/re-enable around redefineClasses** — prevents JDWP agent from firing events during class redefinition safepoint |
| 27 | + |
| 28 | +### Improvements |
| 29 | + |
| 30 | +- **Maven-based Java adapter installer** — dependencies resolved via `mvn dependency:copy-dependencies` instead of manual JAR downloads; `pom.xml` is the single source of truth |
| 31 | +- **java-debug 0.53.2** (built from source) — includes `suspendAllThreads` setting for `SUSPEND_ALL` policy |
| 32 | +- **`bun run build:java`** — one command to recompile the Java adapter during development |
| 33 | +- **`dbg install java`** always recompiles (no "already installed" guard) |
| 34 | +- **DAP runtime configs** extracted into `src/dap/runtimes/` with typed `DapRuntimeConfig` interface |
| 35 | +- **WaitForStopOptions** — unified continue/step options across CDP and DAP sessions |
| 36 | +- **`-cp` classpath support** for Java launch: `dbg launch java -- -cp lib/*:classes Main` |
| 37 | +- **Short filename resolution** for Java sources (Maven layout auto-detection) |
| 38 | +- **`PathSearchingVirtualMachine.classPath()`** for safe classpath resolution without thread resumption |
| 39 | + |
3 | 40 | ## 0.5.0 |
4 | 41 |
|
5 | 42 | ### New Features |
|
0 commit comments