Releases: jline/jline3
Releases · jline/jline3
JLine 4.0.2
JLine 4.0.2
Bugfix release fixing Maven 3/Gradle compatibility and JNI terminal provider issues.
Note: Users of 4.0.0 and 4.0.1 should upgrade to 4.0.2. Both prior releases had broken consumer POMs that prevented Maven 3 and Gradle from resolving JLine dependencies.
Bug Fixes
- Fix Maven 3/Gradle compatibility — Consumer POMs now use
modelVersion4.0.0 with no<parent>reference, making them consumable by Maven 3 and Gradle. Previously, child module POMs referencedjline-parentwhich usedmodelVersion4.1.0, causing resolution failures. (#1691, #1694, fixes #1688, workaround for apache/maven#11772) - Fix JNI terminal failing to load on JDK 21.0.10+ —
Module.isNativeAccessEnabled()was backported to some JDK 21 builds (e.g. 21.0.10), causing a falseUnsupportedOperationExceptionsince the method returnsfalseeven though JNI works without--enable-native-access. JNI native access restrictions are only enforced from JDK 24+, so the check is now skipped on earlier versions. (#1692, fixes #1689)
Dependency Updates
- Bump spotless-maven-plugin from 3.2.1 to 3.3.0
- Bump native-maven-plugin from 0.11.4 to 0.11.5
- Bump maven-shade-plugin from 3.6.0 to 3.6.2
- Bump maven-resources-plugin from 3.3.1 to 3.5.0
JLine 4.0.1
JLine 3.30.8
JLine 3.30.8
Bugfix release fixing JNI terminal provider compatibility with OpenJDK 21.0.10+.
Bug Fixes
- Fix JNI terminal failing to load on JDK 21.0.10+ —
Module.isNativeAccessEnabled()was backported to some JDK 21 builds (e.g. 21.0.10), causing a falseUnsupportedOperationExceptionsince the method returnsfalseeven though JNI works without--enable-native-access. JNI native access restrictions are only enforced from JDK 24+, so the check is now skipped on earlier versions. (#1693, fixes #1689)
Dependency Updates
- Bump spotless-maven-plugin from 3.2.1 to 3.3.0
- Bump maven-shade-plugin from 3.6.0 to 3.6.2
- Bump maven-resources-plugin from 3.3.1 to 3.5.0
JLine 4.0.0
Breaking Changes
- Maven 4 requirement: Upgraded to POM model 4.1.0
- Java 11+ required: Raised minimum runtime requirement from Java 8 to Java 11
- JPMS migration: Complete Java Platform Module System migration with Java 24 support (#1374)
- JNA provider removed: Only JNI and FFM terminal providers remain
- Removed deprecated elements: All previously deprecated APIs removed (#1384)
- Standard Java SPI: Terminal providers now use standard Java ServiceLoader (#1523)
- Terminal lifecycle enforcement: Terminals throw exceptions when used after close (#1575)
- DefaultParser behavior: No longer emits trailing empty word for non-completion contexts (#1489)
New Features
Terminal Graphics & Display
- Comprehensive terminal graphics protocol support with runtime detection (#1378)
- Mode 2027 (grapheme cluster) support with DECRQM probing (#1637)
- True-color detection from COLORTERM environment variable
- ASCII fallback for box-drawing characters when alt charset is unsupported (#1638)
- Web and Swing terminal implementations (#1348)
Shell & Command Processing
- New
jline-shellmodule with extensible shell foundations, variable expansion, subcommands, I/O redirection, signals, scripts, and builtins integration - New
jline-componentsmodule for composable UI components - PipelineParser supports custom operator symbols and pseudo pipe operators (#1391, #1393)
- zsh-like history search navigation (#1449)
Prompts & UI
- New
jline-promptmodule with comprehensive prompt API and modern builder patterns (#1377) - Multi-character padding in secondary prompt pattern
%P{...} - Ctrl+C propagated as UserInterruptException in console-ui prompts
Platform Support
- GraalVM native image support for JNI provider across GraalVM 17, 21, and 25
- Modernized graal module to use FFM provider and Shell API
- Comprehensive ClassLoader support for TerminalBuilder (#1432)
Other
- Multi-version website deployment with version switcher
- WCWidth tables updated to Unicode 16.0 (#1650)
- System property support for line reader options (#1413)
- PosixCommands: POSIX
**globstar semantics, glob arguments, grep enhancements
Bug Fixes
- Display.resize() handles terminals with buffer wider than visible window (#1210)
- Preserve terminal content during resize with status bar (#1604)
- Restored Windows console codepage auto-detection (#1366)
- Expanded MSYS2 environment detection (#1445)
- Fixed quoted word completion buffer cleanup (#1644)
- Fixed StringIndexOutOfBoundsException in CompletionMatcherImpl (#1565)
- Windows: do not raise native signals if not enabled (#1532)
- Windows: prevent inherited input stream from being closed (#1115)
- Check native access before loading JNI library for JDK 24+ (#1067)
- Bracketed paste: send OFF sequence when option is explicitly disabled
- MenuSupport left/right navigation when GROUP_PERSIST is on (#1642)
Improvements
- Replaced reflection-based codepage detection with TerminalProvider SPI method
- Optimized Display performance and terminal capability usage (#1421)
- Platform-independent SyntaxHighlighter tests
JLine 3.30.7
Highlights
This release includes significant Windows terminal fixes, Unicode improvements, JDK 24+ compatibility, and numerous bug fixes backported from the 4.x development branch.
🚀 New Features & Improvements
- Windows codepage auto-detection: Restored automatic detection of Windows console output codepage, fixing Unicode rendering issues since JLine 3.22 (#1672, fixes #1366)
- MSYS2 environment detection: Expanded
IS_MSYSTEMto detect all MSYS2 environments (UCRT64, CLANG64, CLANGARM64, MINGW32), fixing backspace in git-bash (#1671, fixes #1445) - JDK 24+ compatibility: Check native access before loading JNI library to prevent restricted method warnings (#1664)
- Unicode 16.0: Updated
WCWidthcharacter width tables to Unicode 16.0 (#1651) whichcommand: Addedwhichbuiltin command to ConsoleEngine (#1636)- Display resize fix:
Display.resize()now handles terminals with buffer wider than visible window (#1634, fixes #1210) - Terminal closure enforcement: Accessing terminal streams after
close()now logs a warning by default, configurable viajline.terminal.closeModeproperty (#1577) - Standard SPI: Terminal providers now use standard Java
ServiceLoaderfor discovery (#1599) - Key binding docs: Fixed incorrect example for binding terminal capabilities — use
KeyMap.key()instead of rawgetStringCapability()(#1679, fixes #1668)
🐛 Bug Fixes
- Fix MenuSupport left/right navigation when
GROUP_PERSISTis on (#1643) - Fix
StringIndexOutOfBoundsExceptioninCompletionMatcherImpl(#1586, fixes #1565) - Fix doubled quotes when completing quoted words with multiple candidates (#1645)
- Fix ASCII fallback for box-drawing characters when alt charset is unsupported (#1639)
- Fix
DefaultParseremitting trailing empty word for non-completion contexts (#1622, fixes #1489) - Fix Ctrl+C propagation as
UserInterruptExceptionin console-ui prompts (#1621) - Fix newline binding for dumb terminal support in prompts (#1618)
- Fix
BRACKETED_PASTE_OFFnot sent when option is explicitly disabled (#1614) - Fix terminal content preservation during resize with status bar (#1605, fixes #1344)
- Fix inherited input stream being closed on Windows (#1603, fixes #1115)
- Fix nested shell interruption handling (#1602, fixes #1215)
- Fix Nano keypad state management (#1591)
- Fix auto-suggestion menu list not cleared when no completions match (#1632)
- Suppress
IOExceptioninPosixPtyTerminalpump threads during close (#1630) - Do not raise native signals on Windows if not enabled (#1542, fixes #1532)
AnsiConsolenow fails on repeated uninstalls (#1533, fixes #1525)- Allow single-digit options like
-1in Options parser (#1471, fixes #1396) - Fix setting line reader options via system properties (#1472, fixes #1413)
- Support
ls /, pseudo pipe operators, and ignore unknown pipe names (#1587, fixes #1391, #1393, #1436)
📦 Dependency Updates
Click to expand dependency updates
- Bump JUnit from 5.13.4 to 5.14.3
- Bump Groovy from 4.0.28 to 4.0.30
- Bump Apache SSHD from 2.15.0 to 2.17.1
- Bump GraalVM SDK from 24.2.2 to 25.0.2
- Bump JNA from 5.17.0 to 5.18.1
- Bump Maven Bundle Plugin from 6.0.0 to 6.0.2
- Bump Spotless from 2.46.1 to 3.2.1
- Bump Palantir Java Format from 2.73.0 to 2.89.0
- Various other Maven plugin and CI action updates
3.30.6
3.30.5
🚀 New features and improvements
- Improve console variable expansion (fixes #1370) (#1371) @paulk-asert
- ConsoleEngineImpl: change method and field visibilities (#1357) @mattirn
- Allow ConsoleEngineImpl subclasses access to VariableReferenceCompleter (#1362) @paulk-asert
- feat: add reusable POSIX commands to builtins module (#1341) @gnodet
- feat: support slurp command to be renamed (#1333) @paulk-asert
- feat: Extend InputRC with method/s to directly read ~/.inputrc & /etc/inputrc (#1297) @vorburger
- Allow system commands to be renamed. (#1334) @paulk-asert
🐛 Bug Fixes
- Fix macOS hang in pipe operations by removing PTY terminal usage (#1382) @gnodet
- enhancement: only compute suggestions in the Nano editor if something… (#1327) @johnpoth
- fix: refactor TerminalProvider methods to use inputEncoding/outputEncoding parameters (#1319) @gnodet
- Fix System.out not working after closing dumb terminal (#1337) @gnodet
📦 Dependency updates
- chore: Bump com.diffplug.spotless:spotless-maven-plugin from 2.45.0 to 2.46.1 (#1364) @dependabot[bot]
- chore: Bump groovy.version from 4.0.27 to 4.0.28 (#1365) @dependabot[bot]
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.72.0 to 2.73.0 (#1369) @dependabot[bot]
- chore: Bump junit.version from 5.13.3 to 5.13.4 (#1363) @dependabot[bot]
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.71.0 to 2.72.0 (#1359) @dependabot[bot]
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.70.0 to 2.71.0 (#1354) @dependabot[bot]
- chore: Bump org.graalvm.sdk:graal-sdk from 24.2.1 to 24.2.2 (#1352) @dependabot[bot]
- chore: Bump com.google.jimfs:jimfs from 1.3.0 to 1.3.1 (#1351) @dependabot[bot]
- chore: Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.6.0 to 3.6.1 (#1355) @dependabot[bot]
- chore: Bump on-headers and compression in /website (#1356) @dependabot[bot]
- chore: Bump com.diffplug.spotless:spotless-maven-plugin from 2.44.5 to 2.45.0 (#1347) @dependabot[bot]
- chore: Bump org.codehaus.gmavenplus:gmavenplus-plugin from 4.2.0 to 4.2.1 (#1346) @dependabot[bot]
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.67.0 to 2.70.0 (#1342) @dependabot[bot]
- chore: Bump junit.version from 5.13.0 to 5.13.3 (#1343) @dependabot[bot]
- chore: Bump org.apache.maven.plugins:maven-clean-plugin from 3.4.1 to 3.5.0 (#1322) @dependabot[bot]
- chore: Bump com.diffplug.spotless:spotless-maven-plugin from 2.44.4 to 2.44.5 (#1315) @dependabot[bot]
- chore: Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 (#1326) @dependabot[bot]
- chore: Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8 (#1339) @dependabot[bot]
- chore: Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.5.0 to 3.6.0 (#1340) @dependabot[bot]
- chore: Bump junit.version from 5.12.2 to 5.13.0 (#1321) @dependabot[bot]
- chore: Bump eu.maveniverse.maven.njord:extension from 0.6.2 to 0.7.5 (#1330) @dependabot[bot]
📝 Documentation updates
- docs: Link to Nano Customization from Builtins doc page (#1312) @vorburger
- docs: Add Capability.enter_ca_mode and Capability.exit_ca_mode tip (#1311) @vorburger
- Remove double
docs/docsin edit links on jline.org (fixes #1309) (#1310) @vorburger - Update intro.md (#1332) @paulk-asert
👻 Maintenance
- Remove double
docs/docsin edit links on jline.org (fixes #1309) (#1310) @vorburger - chore: make downcall handles static final (#1331) @eregon
JLine 3.30.4
🐛 Bug Fixes
- fix: fix Jansi AnsiConsole broken color detection in uber jars (#1305) @gnodet
- fix: Fix SyntaxHighlighter glob pattern handling for non-default file systems (#1300) @gnodet
📦 Dependency updates
- chore: Bump eu.maveniverse.maven.njord:extension from 0.5.4 to 0.6.2 (#1307) @dependabot[bot]
- chore: Bump groovy.version from 4.0.26 to 4.0.27 (#1306) @dependabot[bot]
- chore: Bump org.codehaus.mojo:exec-maven-plugin from 3.5.0 to 3.5.1 (#1308) @dependabot[bot]
📝 Documentation updates
- docs: Link to Pty4j on Terminal (#1295) @vorburger
👻 Maintenance
JLine 3.30.3
🚀 New features and improvements
- Add support for separate encodings for stdin, stdout, and stderr (#1284) @gnodet
- [consoleui] Make prompts work in non-fullscreen mode (#1283) @gnodet
🐛 Bug Fixes
📦 Dependency updates
- chore: Bump com.palantir.javaformat:palantir-java-format from 2.38.0 to 2.67.0 (#1288) @dependabot[bot]
- chore: Bump org.easymock:easymock from 5.5.0 to 5.6.0 (#1279) @dependabot[bot]
- chore: Bump eu.maveniverse.maven.njord:extension from 0.5.2 to 0.5.4 (#1280) @dependabot[bot]
👻 Maintenance
JLine 3.30.2
🐛 Bug Fixes
📦 Dependency updates
- chore: Bump eu.maveniverse.maven.njord:extension from 0.5.1 to 0.5.2 (#1277) @dependabot[bot]