Skip to content

#1933 remove use of sun.misc.Unsafe#1934

Draft
robfrank wants to merge 3 commits into
mainfrom
feature/1933-remove-unsafe
Draft

#1933 remove use of sun.misc.Unsafe#1934
robfrank wants to merge 3 commits into
mainfrom
feature/1933-remove-unsafe

Conversation

@robfrank

Copy link
Copy Markdown
Collaborator

What does this PR do?

removes the use sun.mis.Unsafe

Motivation

Unsafe will be removed

Related issues

#1933

Checklist

  • I have run the build using mvn clean package command
  • My unit tests cover both failure and success scenarios

@robfrank robfrank marked this pull request as draft January 25, 2025 07:26
@codacy-production

codacy-production Bot commented Jan 25, 2025

Copy link
Copy Markdown

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
-6.17%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (7800b87) 69934 44795 64.05%
Head commit (bc5db5a) 15755 (-54179) 9120 (-35675) 57.89% (-6.17%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#1934) 0 0 ∅ (not applicable)

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

@lvca lvca self-requested a review January 25, 2025 22:56
@lvca lvca added this to the 25.2.1 milestone Jan 25, 2025
@lvca lvca added the enhancement New feature or request label Jan 25, 2025
@lvca lvca modified the milestones: 25.2.1, 25.3.1 Feb 27, 2025
@lvca lvca modified the milestones: 25.3.1, 25.3.2 Mar 7, 2025
@lvca lvca modified the milestones: 25.3.2, 25.4.1 Mar 24, 2025
@robfrank robfrank modified the milestones: 25.4.1, 25.5.1 Apr 22, 2025
@robfrank robfrank force-pushed the feature/1933-remove-unsafe branch from 2530f6a to 9d158fb Compare May 11, 2025 16:09
@robfrank robfrank modified the milestones: 25.5.1, 25.6.1 May 30, 2025
@lvca lvca modified the milestones: 25.6.1, 25.8.1 Jul 4, 2025
@lvca lvca modified the milestones: 25.8.1, 25.6.1 Jul 4, 2025
@lvca

lvca commented Jul 4, 2025

Copy link
Copy Markdown
Member

It looks good to me!

@robfrank robfrank force-pushed the feature/1933-remove-unsafe branch from bc5db5a to 6a0f578 Compare July 4, 2025 12:35
@lvca lvca modified the milestones: 25.6.1, 25.7.1 Jul 4, 2025
final long rw = theUnsafe.getLong(right, BYTE_ARRAY_BASE_OFFSET + (long) i);
if (lw != rw)
return false;
try (Arena arena = Arena.ofConfined()) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you're using MemorySegments, I think this code could be simplified (and likely doesn't need the Arena given these are heap allocated JVM arrays):

// assumes left and right are non-null and length is non-zero
if (left.length < length || right.length < length) return false;

MemorySegment leftSegment = MemorySegment.ofArray(left).asSlice(0, length);
MemorySegment rightSegment = MemorySegment.ofArray(right).asSlice(0, length);

// mismatch is optimized and should be faster than a for loop
return leftSegment.mismatch(rightSegment) == -1;

Compare needs to take into account the possibility that left or right is a prefix of the other, but would use the same general flow:

// assumes left and right are non-null
MemorySegment leftSegment = MemorySegment.ofArray(left);
MemorySegment rightSegment = MemorySegment.ofArray(right);

long index = leftSegment.mismatch(rightSegment);
if (index == -1) {
    return Integer.compare(left.length, right.length);
}

// index is either the byte offset which differs or the length of the shorter array
if (index >= left.length || index >= right.length) {
    return Integer.compare(left.length, right.length);
}

return Integer.compare(Byte.toUnsignedInt(left[(int)index]), Byte.toUnsignedInt(right[(int)index]));

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, thank you!

@robfrank robfrank modified the milestones: 25.7.1, 25.8.1 Aug 11, 2025
@lvca lvca removed this from the 25.8.1 milestone Sep 10, 2025
@lvca lvca added this to the 25.10.1 milestone Sep 10, 2025
@robfrank robfrank force-pushed the feature/1933-remove-unsafe branch from 6a0f578 to fb4c355 Compare October 10, 2025 19:17
@robfrank robfrank modified the milestones: 25.10.1, 25.11.1 Nov 5, 2025
@lvca lvca modified the milestones: 25.11.1, 25.12.1 Dec 9, 2025
@lvca lvca modified the milestones: 25.12.1, 26.1.1 Jan 6, 2026
@lvca lvca modified the milestones: 26.1.1, 26.4.1 Jan 23, 2026
@robfrank robfrank modified the milestones: 26.3.2, 26.4.1 Mar 20, 2026
@robfrank robfrank removed this from the 26.4.1 milestone Apr 23, 2026
mergify Bot added a commit that referenced this pull request Jun 21, 2026
Bumps `jline.version` from 4.1.3 to 4.2.1.
Updates `org.jline:jline-terminal` from 4.1.3 to 4.2.1
Release notes

*Sourced from [org.jline:jline-terminal's releases](https://github.com/jline/jline3/releases).*

> JLine 4.2.1
> -----------
>
> **JLine 4.2.1** is a security patch release addressing two denial-of-service vulnerabilities in the `remote-telnet` module.
>
> 🔒 Security Fixes
> ----------------
>
> * fix: clamp NAWS terminal dimensions to prevent CPU exhaustion (GHSA-2r2c-cx56-8933)
> * fix: cap NEW-ENVIRON variable count to prevent heap exhaustion (GHSA-47qp-hqvx-6r3f)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/pull/1972)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.6.0 to 3.7.0 ([#1973](https://redirect.github.com/jline/jline3/pull/1973)) @[dependabot[bot]](https://github.com/apps/dependabot)
>
> JLine 4.2.0
> -----------
>
> **JLine 4.2.0** is a minor release that bumps the version to reflect API and behavioral changes since the 4.1.x series.
>
> **Highlights:**
>
> * **`java.logging` module dependency dropped** — JLine now uses `System.Logger` (JEP 264), removing the `java.logging` module requirement and making JLine friendlier in custom JPMS runtimes ([#1934](https://redirect.github.com/jline/jline3/issues/1934))
> * **ScreenTerminal unified** — the two divergent copies (builtins vs terminal) are consolidated into `org.jline.utils.ScreenTerminal`, with a fix for stale status rows when using bordered status displays ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
> * **Exit command made configurable** — the built-in `exit` command is now a regular, configurable command rather than hardcoded ([#1870](https://redirect.github.com/jline/jline3/issues/1870))
> * **Prompt module** — list and checkbox prompts now support per-item footers ([#1933](https://redirect.github.com/jline/jline3/issues/1933))
> * **Robustness fixes** — EOF propagation in PtyInputStream, signal handling with ISIG cleared, resize sync, graphics protocol detection on basic terminals, and several out-of-bounds guards
>
> 🚀 New features and improvements
> -------------------------------
>
> * refactor: unify ScreenTerminal — move from builtins to terminal module ([#1971](https://redirect.github.com/jline/jline3/pull/1971)) [`@​gnodet`](https://github.com/gnodet)
> * feat(prompt): add optional per-item footer to list and checkbox prompts ([#1933](https://redirect.github.com/jline/jline3/pull/1933)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: drop the java.logging module dependency and use System.Logger instead ([#1934](https://redirect.github.com/jline/jline3/pull/1934)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: make exit command a regular, configurable command ([#1870](https://redirect.github.com/jline/jline3/pull/1870)) [`@​Elec332`](https://github.com/Elec332)
> * feat: add custom name parameter to PicocliCommandRegistry ([#1947](https://redirect.github.com/jline/jline3/pull/1947)) [`@​gnodet`](https://github.com/gnodet)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940)) ([#1941](https://redirect.github.com/jline/jline3/pull/1941)) [`@​zikolach`](https://github.com/zikolach)
> * fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1963](https://redirect.github.com/jline/jline3/pull/1963)) [`@​gnodet`](https://github.com/gnodet)
> * fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time writes ([#1962](https://redirect.github.com/jline/jline3/pull/1962)) [`@​gnodet`](https://github.com/gnodet)
> * fix: restore signal handling when ISIG is cleared ([#1942](https://redirect.github.com/jline/jline3/issues/1942)) ([#1959](https://redirect.github.com/jline/jline3/pull/1959)) [`@​gnodet`](https://github.com/gnodet)
> * fix: skip graphics protocol detection for basic terminal types ([#1957](https://redirect.github.com/jline/jline3/pull/1957)) [`@​gnodet`](https://github.com/gnodet)
> * fix: keep polling the terminal probe response past a spurious EOF ([#1944](https://redirect.github.com/jline/jline3/pull/1944)) [`@​WouterGritter`](https://github.com/WouterGritter)
> * fix: guard ScreenTerminal.poke() against out-of-bounds cursor position ([#1946](https://redirect.github.com/jline/jline3/pull/1946)) [`@​gnodet`](https://github.com/gnodet)
> * fix: clamp cx in dumb\_echo to prevent out-of-bounds cursor position ([#1953](https://redirect.github.com/jline/jline3/pull/1953)) [`@​gnodet`](https://github.com/gnodet)
> * fix: validate version format in release workflow ([#1954](https://redirect.github.com/jline/jline3/pull/1954)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.palantir.javaformat:palantir-java-format from 2.92.0 to 2.93.0 ([#1964](https://redirect.github.com/jline/jline3/pull/1964)) @[dependabot[bot]](https://github.com/apps/dependabot)
> * chore: Bump org.codehaus.gmavenplus:gmavenplus-plugin from 4.3.1 to 5.0.0 ([#1938](https://redirect.github.com/jline/jline3/pull/1938)) @[dependabot[bot]](https://github.com/apps/dependabot)

... (truncated)


Commits

* [`ee6981e`](jline/jline3@ee6981e) chore: Bump com.diffplug.spotless:spotless-maven-plugin ([#1973](https://redirect.github.com/jline/jline3/issues/1973))
* [`561d0f2`](jline/jline3@561d0f2) fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/issues/1972))
* [`733eb35`](jline/jline3@733eb35) Merge commit from fork
* [`934f09e`](jline/jline3@934f09e) Merge commit from fork
* [`a5b4ca6`](jline/jline3@a5b4ca6) refactor: unify ScreenTerminal and fix stale status rows ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
* [`41537ce`](jline/jline3@41537ce) fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940))
* [`b018d30`](jline/jline3@b018d30) test: add LineReader EOF tests for different terminal providers ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1968](https://redirect.github.com/jline/jline3/issues/1968))
* [`b3260e4`](jline/jline3@b3260e4) chore: Bump com.palantir.javaformat:palantir-java-format ([#1964](https://redirect.github.com/jline/jline3/issues/1964))
* [`a86915d`](jline/jline3@a86915d) fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1963](https://redirect.github.com/jline/jline3/issues/1963))
* [`fd2741e`](jline/jline3@fd2741e) fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time ...
* Additional commits viewable in [compare view](jline/jline3@4.1.3...4.2.1)
  
Updates `org.jline:jline-reader` from 4.1.3 to 4.2.1
Release notes

*Sourced from [org.jline:jline-reader's releases](https://github.com/jline/jline3/releases).*

> JLine 4.2.1
> -----------
>
> **JLine 4.2.1** is a security patch release addressing two denial-of-service vulnerabilities in the `remote-telnet` module.
>
> 🔒 Security Fixes
> ----------------
>
> * fix: clamp NAWS terminal dimensions to prevent CPU exhaustion (GHSA-2r2c-cx56-8933)
> * fix: cap NEW-ENVIRON variable count to prevent heap exhaustion (GHSA-47qp-hqvx-6r3f)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/pull/1972)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.6.0 to 3.7.0 ([#1973](https://redirect.github.com/jline/jline3/pull/1973)) @[dependabot[bot]](https://github.com/apps/dependabot)
>
> JLine 4.2.0
> -----------
>
> **JLine 4.2.0** is a minor release that bumps the version to reflect API and behavioral changes since the 4.1.x series.
>
> **Highlights:**
>
> * **`java.logging` module dependency dropped** — JLine now uses `System.Logger` (JEP 264), removing the `java.logging` module requirement and making JLine friendlier in custom JPMS runtimes ([#1934](https://redirect.github.com/jline/jline3/issues/1934))
> * **ScreenTerminal unified** — the two divergent copies (builtins vs terminal) are consolidated into `org.jline.utils.ScreenTerminal`, with a fix for stale status rows when using bordered status displays ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
> * **Exit command made configurable** — the built-in `exit` command is now a regular, configurable command rather than hardcoded ([#1870](https://redirect.github.com/jline/jline3/issues/1870))
> * **Prompt module** — list and checkbox prompts now support per-item footers ([#1933](https://redirect.github.com/jline/jline3/issues/1933))
> * **Robustness fixes** — EOF propagation in PtyInputStream, signal handling with ISIG cleared, resize sync, graphics protocol detection on basic terminals, and several out-of-bounds guards
>
> 🚀 New features and improvements
> -------------------------------
>
> * refactor: unify ScreenTerminal — move from builtins to terminal module ([#1971](https://redirect.github.com/jline/jline3/pull/1971)) [`@​gnodet`](https://github.com/gnodet)
> * feat(prompt): add optional per-item footer to list and checkbox prompts ([#1933](https://redirect.github.com/jline/jline3/pull/1933)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: drop the java.logging module dependency and use System.Logger instead ([#1934](https://redirect.github.com/jline/jline3/pull/1934)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: make exit command a regular, configurable command ([#1870](https://redirect.github.com/jline/jline3/pull/1870)) [`@​Elec332`](https://github.com/Elec332)
> * feat: add custom name parameter to PicocliCommandRegistry ([#1947](https://redirect.github.com/jline/jline3/pull/1947)) [`@​gnodet`](https://github.com/gnodet)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940)) ([#1941](https://redirect.github.com/jline/jline3/pull/1941)) [`@​zikolach`](https://github.com/zikolach)
> * fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1963](https://redirect.github.com/jline/jline3/pull/1963)) [`@​gnodet`](https://github.com/gnodet)
> * fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time writes ([#1962](https://redirect.github.com/jline/jline3/pull/1962)) [`@​gnodet`](https://github.com/gnodet)
> * fix: restore signal handling when ISIG is cleared ([#1942](https://redirect.github.com/jline/jline3/issues/1942)) ([#1959](https://redirect.github.com/jline/jline3/pull/1959)) [`@​gnodet`](https://github.com/gnodet)
> * fix: skip graphics protocol detection for basic terminal types ([#1957](https://redirect.github.com/jline/jline3/pull/1957)) [`@​gnodet`](https://github.com/gnodet)
> * fix: keep polling the terminal probe response past a spurious EOF ([#1944](https://redirect.github.com/jline/jline3/pull/1944)) [`@​WouterGritter`](https://github.com/WouterGritter)
> * fix: guard ScreenTerminal.poke() against out-of-bounds cursor position ([#1946](https://redirect.github.com/jline/jline3/pull/1946)) [`@​gnodet`](https://github.com/gnodet)
> * fix: clamp cx in dumb\_echo to prevent out-of-bounds cursor position ([#1953](https://redirect.github.com/jline/jline3/pull/1953)) [`@​gnodet`](https://github.com/gnodet)
> * fix: validate version format in release workflow ([#1954](https://redirect.github.com/jline/jline3/pull/1954)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.palantir.javaformat:palantir-java-format from 2.92.0 to 2.93.0 ([#1964](https://redirect.github.com/jline/jline3/pull/1964)) @[dependabot[bot]](https://github.com/apps/dependabot)
> * chore: Bump org.codehaus.gmavenplus:gmavenplus-plugin from 4.3.1 to 5.0.0 ([#1938](https://redirect.github.com/jline/jline3/pull/1938)) @[dependabot[bot]](https://github.com/apps/dependabot)

... (truncated)


Commits

* [`ee6981e`](jline/jline3@ee6981e) chore: Bump com.diffplug.spotless:spotless-maven-plugin ([#1973](https://redirect.github.com/jline/jline3/issues/1973))
* [`561d0f2`](jline/jline3@561d0f2) fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/issues/1972))
* [`733eb35`](jline/jline3@733eb35) Merge commit from fork
* [`934f09e`](jline/jline3@934f09e) Merge commit from fork
* [`a5b4ca6`](jline/jline3@a5b4ca6) refactor: unify ScreenTerminal and fix stale status rows ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
* [`41537ce`](jline/jline3@41537ce) fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940))
* [`b018d30`](jline/jline3@b018d30) test: add LineReader EOF tests for different terminal providers ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1968](https://redirect.github.com/jline/jline3/issues/1968))
* [`b3260e4`](jline/jline3@b3260e4) chore: Bump com.palantir.javaformat:palantir-java-format ([#1964](https://redirect.github.com/jline/jline3/issues/1964))
* [`a86915d`](jline/jline3@a86915d) fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1963](https://redirect.github.com/jline/jline3/issues/1963))
* [`fd2741e`](jline/jline3@fd2741e) fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time ...
* Additional commits viewable in [compare view](jline/jline3@4.1.3...4.2.1)
  
Updates `org.jline:jline-terminal-jni` from 4.1.3 to 4.2.1
Release notes

*Sourced from [org.jline:jline-terminal-jni's releases](https://github.com/jline/jline3/releases).*

> JLine 4.2.1
> -----------
>
> **JLine 4.2.1** is a security patch release addressing two denial-of-service vulnerabilities in the `remote-telnet` module.
>
> 🔒 Security Fixes
> ----------------
>
> * fix: clamp NAWS terminal dimensions to prevent CPU exhaustion (GHSA-2r2c-cx56-8933)
> * fix: cap NEW-ENVIRON variable count to prevent heap exhaustion (GHSA-47qp-hqvx-6r3f)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/pull/1972)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.6.0 to 3.7.0 ([#1973](https://redirect.github.com/jline/jline3/pull/1973)) @[dependabot[bot]](https://github.com/apps/dependabot)
>
> JLine 4.2.0
> -----------
>
> **JLine 4.2.0** is a minor release that bumps the version to reflect API and behavioral changes since the 4.1.x series.
>
> **Highlights:**
>
> * **`java.logging` module dependency dropped** — JLine now uses `System.Logger` (JEP 264), removing the `java.logging` module requirement and making JLine friendlier in custom JPMS runtimes ([#1934](https://redirect.github.com/jline/jline3/issues/1934))
> * **ScreenTerminal unified** — the two divergent copies (builtins vs terminal) are consolidated into `org.jline.utils.ScreenTerminal`, with a fix for stale status rows when using bordered status displays ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
> * **Exit command made configurable** — the built-in `exit` command is now a regular, configurable command rather than hardcoded ([#1870](https://redirect.github.com/jline/jline3/issues/1870))
> * **Prompt module** — list and checkbox prompts now support per-item footers ([#1933](https://redirect.github.com/jline/jline3/issues/1933))
> * **Robustness fixes** — EOF propagation in PtyInputStream, signal handling with ISIG cleared, resize sync, graphics protocol detection on basic terminals, and several out-of-bounds guards
>
> 🚀 New features and improvements
> -------------------------------
>
> * refactor: unify ScreenTerminal — move from builtins to terminal module ([#1971](https://redirect.github.com/jline/jline3/pull/1971)) [`@​gnodet`](https://github.com/gnodet)
> * feat(prompt): add optional per-item footer to list and checkbox prompts ([#1933](https://redirect.github.com/jline/jline3/pull/1933)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: drop the java.logging module dependency and use System.Logger instead ([#1934](https://redirect.github.com/jline/jline3/pull/1934)) [`@​ingokegel`](https://github.com/ingokegel)
> * refactor: make exit command a regular, configurable command ([#1870](https://redirect.github.com/jline/jline3/pull/1870)) [`@​Elec332`](https://github.com/Elec332)
> * feat: add custom name parameter to PicocliCommandRegistry ([#1947](https://redirect.github.com/jline/jline3/pull/1947)) [`@​gnodet`](https://github.com/gnodet)
>
> 🐛 Bug Fixes
> -----------
>
> * fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940)) ([#1941](https://redirect.github.com/jline/jline3/pull/1941)) [`@​zikolach`](https://github.com/zikolach)
> * fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1963](https://redirect.github.com/jline/jline3/pull/1963)) [`@​gnodet`](https://github.com/gnodet)
> * fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time writes ([#1962](https://redirect.github.com/jline/jline3/pull/1962)) [`@​gnodet`](https://github.com/gnodet)
> * fix: restore signal handling when ISIG is cleared ([#1942](https://redirect.github.com/jline/jline3/issues/1942)) ([#1959](https://redirect.github.com/jline/jline3/pull/1959)) [`@​gnodet`](https://github.com/gnodet)
> * fix: skip graphics protocol detection for basic terminal types ([#1957](https://redirect.github.com/jline/jline3/pull/1957)) [`@​gnodet`](https://github.com/gnodet)
> * fix: keep polling the terminal probe response past a spurious EOF ([#1944](https://redirect.github.com/jline/jline3/pull/1944)) [`@​WouterGritter`](https://github.com/WouterGritter)
> * fix: guard ScreenTerminal.poke() against out-of-bounds cursor position ([#1946](https://redirect.github.com/jline/jline3/pull/1946)) [`@​gnodet`](https://github.com/gnodet)
> * fix: clamp cx in dumb\_echo to prevent out-of-bounds cursor position ([#1953](https://redirect.github.com/jline/jline3/pull/1953)) [`@​gnodet`](https://github.com/gnodet)
> * fix: validate version format in release workflow ([#1954](https://redirect.github.com/jline/jline3/pull/1954)) [`@​gnodet`](https://github.com/gnodet)
>
> 📦 Dependency updates
> --------------------
>
> * chore: Bump com.palantir.javaformat:palantir-java-format from 2.92.0 to 2.93.0 ([#1964](https://redirect.github.com/jline/jline3/pull/1964)) @[dependabot[bot]](https://github.com/apps/dependabot)
> * chore: Bump org.codehaus.gmavenplus:gmavenplus-plugin from 4.3.1 to 5.0.0 ([#1938](https://redirect.github.com/jline/jline3/pull/1938)) @[dependabot[bot]](https://github.com/apps/dependabot)

... (truncated)


Commits

* [`ee6981e`](jline/jline3@ee6981e) chore: Bump com.diffplug.spotless:spotless-maven-plugin ([#1973](https://redirect.github.com/jline/jline3/issues/1973))
* [`561d0f2`](jline/jline3@561d0f2) fix: add compiled groovy classes to javadoc classpath ([#1972](https://redirect.github.com/jline/jline3/issues/1972))
* [`733eb35`](jline/jline3@733eb35) Merge commit from fork
* [`934f09e`](jline/jline3@934f09e) Merge commit from fork
* [`a5b4ca6`](jline/jline3@a5b4ca6) refactor: unify ScreenTerminal and fix stale status rows ([#1971](https://redirect.github.com/jline/jline3/issues/1971))
* [`41537ce`](jline/jline3@41537ce) fix: sync LineReader display model on resize (fixes [#1940](https://redirect.github.com/jline/jline3/issues/1940))
* [`b018d30`](jline/jline3@b018d30) test: add LineReader EOF tests for different terminal providers ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1968](https://redirect.github.com/jline/jline3/issues/1968))
* [`b3260e4`](jline/jline3@b3260e4) chore: Bump com.palantir.javaformat:palantir-java-format ([#1964](https://redirect.github.com/jline/jline3/issues/1964))
* [`a86915d`](jline/jline3@a86915d) fix: propagate EOF in PtyInputStream to avoid infinite loop ([#1961](https://redirect.github.com/jline/jline3/issues/1961)) ([#1963](https://redirect.github.com/jline/jline3/issues/1963))
* [`fd2741e`](jline/jline3@fd2741e) fix: override bulk write in NonCloseableOutputStream to avoid byte-at-a-time ...
* Additional commits viewable in [compare view](jline/jline3@4.1.3...4.2.1)
  
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants