Skip to content

Releases: jline/jline3

JLine 4.0.2

09 Mar 23:01
2505581

Choose a tag to compare

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 modelVersion 4.0.0 with no <parent> reference, making them consumable by Maven 3 and Gradle. Previously, child module POMs referenced jline-parent which used modelVersion 4.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 false UnsupportedOperationException since the method returns false even 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

09 Mar 21:52
f6a7673

Choose a tag to compare

Merge pull request #1692 from jline/fix/jni-native-access-check-1689

fix: Skip JNI native access check on JDK < 24 (fixes #1689)

JLine 3.30.8

09 Mar 21:58
816322a

Choose a tag to compare

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 false UnsupportedOperationException since the method returns false even 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

03 Mar 15:15

Choose a tag to compare

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-shell module with extensible shell foundations, variable expansion, subcommands, I/O redirection, signals, scripts, and builtins integration
  • New jline-components module 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-prompt module 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

03 Mar 14:41
2cbd67f

Choose a tag to compare

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_MSYSTEM to 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 WCWidth character width tables to Unicode 16.0 (#1651)
  • which command: Added which builtin 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 via jline.terminal.closeMode property (#1577)
  • Standard SPI: Terminal providers now use standard Java ServiceLoader for discovery (#1599)
  • Key binding docs: Fixed incorrect example for binding terminal capabilities — use KeyMap.key() instead of raw getStringCapability() (#1679, fixes #1668)

🐛 Bug Fixes

  • Fix MenuSupport left/right navigation when GROUP_PERSIST is on (#1643)
  • Fix StringIndexOutOfBoundsException in CompletionMatcherImpl (#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 DefaultParser emitting trailing empty word for non-completion contexts (#1622, fixes #1489)
  • Fix Ctrl+C propagation as UserInterruptException in console-ui prompts (#1621)
  • Fix newline binding for dumb terminal support in prompts (#1618)
  • Fix BRACKETED_PASTE_OFF not 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 IOException in PosixPtyTerminal pump threads during close (#1630)
  • Do not raise native signals on Windows if not enabled (#1542, fixes #1532)
  • AnsiConsole now fails on repeated uninstalls (#1533, fixes #1525)
  • Allow single-digit options like -1 in 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

10 Sep 14:29

Choose a tag to compare

🐛 Bug Fixes

  • Optimize Display performance and fix terminal capability usage (#1422) @gnodet

3.30.5

10 Sep 14:31
ae95742

Choose a tag to compare

🚀 New features and improvements

🐛 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

📝 Documentation updates

👻 Maintenance

JLine 3.30.4

28 May 07:51
fcf6461

Choose a tag to compare

🐛 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

📝 Documentation updates

👻 Maintenance

  • chore: fix intermittent encoding test failures by handling READ_EXPIRED correctly (#1303) @gnodet
  • chore: improve Maven cache fallback strategy in GitHub Actions (#1304) @gnodet

JLine 3.30.3

22 May 11:26
6616485

Choose a tag to compare

🚀 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

  • fix: Fix missing close in PosixSysTerminal. (#1281) @gnodet

📦 Dependency updates

👻 Maintenance

  • chore: Fix build.bat syntax errors and preserve arguments in rebuild command (#1286) @gnodet
  • chore: Fix flaky DumbTerminalPasswordTest (#1287) @gnodet
  • chore: add Palantir Java Format version property for Dependabot updates (#1285) @gnodet

JLine 3.30.2

19 May 16:29
e68c37a

Choose a tag to compare

🐛 Bug Fixes

  • fix: enhance nanorc loading and introduce a ClasspathResourceUtil utility (#1276) @gnodet

📦 Dependency updates