Skip to content

Backend: WebClient with required HTTP/2 and client certificates (#5990) - #6056

Merged
shai-almog merged 4 commits into
masterfrom
backend-webclient-h2-mtls
Oct 20, 2026
Merged

shai-almog merged 4 commits into
masterfrom
backend-webclient-h2-mtls

Conversation

@shai-almog

Copy link
Copy Markdown
Collaborator

Implements #5990: outbound HTTP/2 and client-certificate authentication for the backend.

API

  • WebClient: a configured client. It holds the client certificate, setRequireHttp2, the connect, read and request timeouts, and setReuseConnections. Its settings are fixed after the first request, and close() releases the pool.
  • ClientCertificate.pem(...) / pkcs12(...): toString() never prints the secret.
  • Web.Result.getProtocol() reports the protocol a response came over.
  • The static Web.* methods behave as before.

Native (libcurl)

  • Each client has its own pool of connection handles, so different credentials never share a connection.
  • When HTTP/2 is required, the ALPN result is checked after the handshake and the request is aborted before it is sent. The HTTP/1.1 fixture proves the request never reaches that server.
  • Credentials are passed from memory and zeroed after use.
  • Containerfile.musl builds curl with nghttp2, so the musl and glibc builds both speak HTTP/2.
  • Fix: CURL_CA_BUNDLE and SSL_CERT_FILE are now honoured. libcurl reads neither, although the docs said it did.

JVM

  • Each client gets its own SSLSocketFactory.
  • Fix: a pooled client now reuses connections. Before, disconnect() closed every one.
  • HttpURLConnection can't do HTTP/2, so a client that requires it fails with an exception that says so.

Tests

vm/backend/tests/web-mtls-h2.sh [javase] [musl] [glibc] runs local mTLS servers, one HTTP/2 and one HTTP/1.1. It fails if any secret appears in the output.

  • JVM: 23/23 checks pass.
  • musl: 26/26 checks pass.
  • glibc: 26/26 checks pass.

SpotBugs, PMD, Checkstyle, javadoc -Werror, Vale and the guide checks pass. LanguageTool was not run. As the issue asked, no CI job was added.

🤖 Generated with Claude Code

…client pools (#5990)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shai-almog

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T05:17:51.770054Z a1a5fd6 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ce048692f5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread vm/backend/impl/javase/com/codename1/backend/Web.java
Comment thread vm/backend/src/com/codename1/backend/WebClient.java
Comment thread vm/backend/impl/javase/com/codename1/backend/Web.java Outdated
Comment thread vm/backend/impl/javase/com/codename1/backend/Web.java
Comment thread vm/backend/native/cn1_backend_web.c Outdated
Comment thread vm/backend/impl/javase/com/codename1/backend/ClientCredentials.java
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Developer Guide build artifacts are available for download from this workflow run:

Developer Guide quality checks:

  • AsciiDoc linter: No issues found (report)
  • Vale: No alerts found (report)
  • Paragraph capitalization: No paragraph capitalization issues (report)
  • LanguageTool: No grammar matches (report)
  • Image references: No unused images detected (report)

@github-actions

Copy link
Copy Markdown
Contributor

Cloudflare Preview

@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 206 screenshots: 206 matched.
✅ JavaScript-port screenshot tests passed.

…ient TLS factory, cert-aware redirects, keyless PKCS#12, timeout overflow)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shai-almog

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3032e51e6a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread vm/backend/src/com/codename1/backend/WebClient.java
Comment thread vm/backend/impl/javase/com/codename1/backend/Web.java
@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 185 screenshots: 185 matched.
Native Windows port, REAL shipping pipeline: the hellocodenameone screenshot suite rendered by a binary CROSS-COMPILED on Linux (clang-cl + xwin, WebView2 linked) and RUN on a Windows x64 runner. Compared against the in-repo baseline in scripts/windows/screenshots.

Benchmark Results

Detailed Performance Metrics

Metric Duration
SIMD kernel backend SSE2 (x64) / NEON (arm64) native kernels
SIMD int-add (64K x300) java 57ms / native 5ms = 11.4x speedup
SIMD float-mul (64K x300) java 59ms / native 6ms = 9.8x speedup
SIMD kernel correctness PASS (native result == scalar reference)
Base64 native bridge unavailable (CN1 + SIMD + image benchmarks only)
Base64 payload size 8192 bytes
Base64 benchmark iterations 6000
Base64 SIMD byte path gated to scalar (CPU autovectorizes scalar; explicit SIMD not beneficial here)
Base64 CN1 encode 75.000 ms
Base64 CN1 decode 91.000 ms
Base64 SIMD encode 105.000 ms
Base64 encode ratio (SIMD/CN1) 1.400x (40.0% slower)
Base64 SIMD decode 99.000 ms
Base64 decode ratio (SIMD/CN1) 1.088x (8.8% slower)
Image encode benchmark iterations 100
Image createMask (SIMD off) 10.000 ms
Image createMask (SIMD on) 5.000 ms
Image createMask ratio (SIMD on/off) 0.500x (50.0% faster)
Image applyMask (SIMD off) 25.000 ms
Image applyMask (SIMD on) 35.000 ms
Image applyMask ratio (SIMD on/off) 1.400x (40.0% slower)
Image modifyAlpha (SIMD off) 25.000 ms
Image modifyAlpha (SIMD on) 16.000 ms
Image modifyAlpha ratio (SIMD on/off) 0.640x (36.0% faster)
Image modifyAlpha removeColor (SIMD off) 29.000 ms
Image modifyAlpha removeColor (SIMD on) 15.000 ms
Image modifyAlpha removeColor ratio (SIMD on/off) 0.517x (48.3% faster)

…ckets

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Continuous Quality Report

Test & Coverage

Static Analysis

  • SpotBugs [Report archive]
    • ✅ ByteCodeTranslator: 0 findings (no issues)
    • ✅ android: 0 findings (no issues)
    • ✅ android-compat: 0 findings (no issues)
    • ✅ android-res-compiler: 0 findings (no issues)
    • ✅ backend: 0 findings (no issues)
    • ✅ backend-test: 0 findings (no issues)
    • ✅ build-engine: 0 findings (no issues)
    • ✅ build-hint-catalog: 0 findings (no issues)
    • ✅ build-hint-tools: 0 findings (no issues)
    • ✅ codenameone-gradle-plugin: 0 findings (no issues)
    • ✅ codenameone-maven-plugin: 0 findings (no issues)
    • ✅ core-unittests: 0 findings (no issues)
    • ✅ ios: 0 findings (no issues)
    • ✅ javac: 0 findings (no issues)
    • ✅ project-model: 0 findings (no issues)
  • ✅ PMD: 0 findings (no issues) [Report archive]
  • ✅ Checkstyle: 0 findings (no issues) [Report archive]

Generated automatically by the PR CI workflow.

@shai-almog

Copy link
Copy Markdown
Collaborator Author

@codex review

@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 185 screenshots: 185 matched.
Native Windows port (x64 / Intel-AMD): full hellocodenameone screenshot suite rendered offscreen with Direct2D/DirectWrite, plus the real benchmarks (base64 native/CN1/SIMD, image createMask/applyMask/modifyAlpha/PNG/JPEG, SSE2 SIMD kernels). Compared against the in-repo baseline in scripts/windows/screenshots.

Benchmark Results

Detailed Performance Metrics

Metric Duration
SIMD kernel backend SSE2 (x64) / NEON (arm64) native kernels
SIMD int-add (64K x300) java 44ms / native 3ms = 14.6x speedup
SIMD float-mul (64K x300) java 43ms / native 2ms = 21.5x speedup
SIMD kernel correctness PASS (native result == scalar reference)
Base64 native bridge unavailable (CN1 + SIMD + image benchmarks only)
Base64 payload size 8192 bytes
Base64 benchmark iterations 6000
Base64 SIMD byte path gated to scalar (CPU autovectorizes scalar; explicit SIMD not beneficial here)
Base64 CN1 encode 61.000 ms
Base64 CN1 decode 73.000 ms
Base64 SIMD encode 91.000 ms
Base64 encode ratio (SIMD/CN1) 1.492x (49.2% slower)
Base64 SIMD decode 81.000 ms
Base64 decode ratio (SIMD/CN1) 1.110x (11.0% slower)
Image encode benchmark iterations 100
Image createMask (SIMD off) 7.000 ms
Image createMask (SIMD on) 4.000 ms
Image createMask ratio (SIMD on/off) 0.571x (42.9% faster)
Image applyMask (SIMD off) 28.000 ms
Image applyMask (SIMD on) 22.000 ms
Image applyMask ratio (SIMD on/off) 0.786x (21.4% faster)
Image modifyAlpha (SIMD off) 35.000 ms
Image modifyAlpha (SIMD on) 15.000 ms
Image modifyAlpha ratio (SIMD on/off) 0.429x (57.1% faster)
Image modifyAlpha removeColor (SIMD off) 34.000 ms
Image modifyAlpha removeColor (SIMD on) 27.000 ms
Image modifyAlpha removeColor ratio (SIMD on/off) 0.794x (20.6% faster)

ParparVM vs HotSpot (JDK 25): Windows x64

Runner CPU: AMD64 Family 25 Model 17 Stepping 1, AuthenticAMD (baseline windows-x64@amd64-family-25-model-17-authenticamd)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 15% (time) / 15% (RAM) away from its baseline in vm/selfhost/perf-baseline/ fails: above it is a regression, below it an improvement that has to be rebaselined (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (WinHelloMain) 4 1.29x (base 1.38x, -6.2%) 0.69x (base 0.82x, -15.1%) ok
translator (self) 4 0.78x (base 0.70x, +11.2%) 0.51x (base 0.55x, -7.4%) ok
intArithmetic 4 1.10x (base 1.10x, +0.4%) 0.05x (base 0.06x, -3.1%) ok
longArithmetic 4 1.08x (base 1.08x, +0.0%) 0.05x (base 0.06x, -1.2%) ok
mathTranscendental 4 0.85x (base 0.85x, +0.4%) 0.06x (base 0.06x, +1.5%) ok
arraySequential 4 1.81x (base 1.72x, +5.6%) 0.38x (base 0.38x, +0.0%) ok
arrayRandom 4 1.04x (base 1.01x, +2.2%) 0.23x (base 0.23x, +0.1%) ok
objectAllocation 4 1.28x (base 1.25x, +2.0%) 0.29x (base 0.29x, -0.1%) ok
valueEscape 4 0.10x (base 0.10x, -1.4%) 0.05x (base 0.04x, +1.5%) ok
hashMapChurn 4 1.30x (base 1.39x, -6.8%) 0.10x (base 0.10x, +7.6%) ok
stringBuilding 4 1.41x (base 1.36x, +3.9%) 0.27x (base 0.28x, -3.9%) ok
recursion 4 1.38x (base 1.43x, -3.3%) 0.06x (base 0.06x, +0.3%) ok
quicksort 4 1.11x (base 1.11x, +0.3%) 0.12x (base 0.12x, -0.5%) ok

Result: no regression

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa15bd0e91

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread vm/backend/native/cn1_backend_web.c
Comment thread vm/backend/impl/javase/com/codename1/backend/Web.java Outdated
@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 185 screenshots: 185 matched.
Native Linux port (x64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub x64 runner. Baseline: scripts/linux/screenshots.

ParparVM vs HotSpot (JDK 25): Linux x64

Runner CPU: AMD EPYC 9V45 96-Core Processor (baseline linux-x64@amd-epyc-9v45-96-core-processor)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 15% (time) / 15% (RAM) away from its baseline in vm/selfhost/perf-baseline/ fails: above it is a regression, below it an improvement that has to be rebaselined (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (LinuxHelloMain) 4 0.95x (base 0.92x, +3.5%) 0.84x (base 0.84x, +0.1%) ok
translator (self) 4 0.59x (base 0.64x, -7.3%) 0.51x (base 0.45x, +11.8%) ok
intArithmetic 4 1.00x (base 1.00x, +0.7%) 0.05x (base 0.06x, -1.0%) ok
longArithmetic 4 0.99x (base 0.99x, -0.1%) 0.05x (base 0.07x, -24.8%) ok
mathTranscendental 4 1.18x (base 1.20x, -1.8%) 0.06x (base 0.06x, +1.7%) ok
arraySequential 4 3.05x (base 2.91x, +4.9%) 0.38x (base 0.36x, +5.5%) ok
arrayRandom 4 1.00x (base 1.04x, -4.0%) 0.21x (base 0.23x, -8.3%) ok
objectAllocation 4 1.57x (base 1.61x, -2.6%) 0.25x (base 0.24x, +4.7%) ok
valueEscape 4 0.10x (base 0.10x, +0.2%) 0.04x (base 0.04x, +2.4%) ok
hashMapChurn 4 1.34x (base 1.31x, +2.2%) 0.09x (base 0.09x, +3.2%) ok
stringBuilding 4 1.57x (base 1.58x, -0.5%) 0.22x (base 0.22x, -0.2%) ok
recursion 4 1.35x (base 1.34x, +0.7%) 0.08x (base 0.08x, -0.9%) ok
quicksort 4 1.06x (base 1.06x, -0.3%) 0.13x (base 0.11x, +17.8%) ok

Result: no regression

@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 185 screenshots: 185 matched.
Native Linux port (arm64), GTK3/Cairo/Pango, ParparVM bytecode-to-C (no JVM): the hellocodenameone screenshot suite rendered by a native ELF built + run on the GitHub arm64 runner. Baseline: scripts/linux/screenshots-arm.

ParparVM vs HotSpot (JDK 25): Linux arm64

Runner CPU: Neoverse-N2 (baseline linux-arm64@neoverse-n2)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 15% (time) / 15% (RAM) away from its baseline in vm/selfhost/perf-baseline/ fails: above it is a regression, below it an improvement that has to be rebaselined (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (LinuxHelloMain) 4 0.98x (base 1.02x, -4.2%) 0.78x (base 0.93x, -16.3%) ok
translator (self) 4 0.74x (base 0.70x, +5.7%) 0.46x (base 0.51x, -9.5%) ok
intArithmetic 4 1.04x (base 1.04x, -0.0%) 0.03x (base 0.03x, -3.0%) ok
longArithmetic 4 0.79x (base 0.79x, -0.3%) 0.03x (base 0.03x, -3.2%) ok
mathTranscendental 4 1.10x (base 1.10x, -0.0%) 0.03x (base 0.03x, -0.2%) ok
arraySequential 4 0.38x (base 0.36x, +3.7%) 0.37x (base 0.37x, -0.0%) ok
arrayRandom 4 0.94x (base 0.94x, +0.1%) 0.20x (base 0.20x, +0.3%) ok
objectAllocation 4 1.91x (base 1.77x, +8.1%) 0.36x (base 0.38x, -4.9%) ok
valueEscape 4 0.51x (base 0.51x, -0.1%) 0.03x (base 0.03x, -0.2%) ok
hashMapChurn 4 0.83x (base 0.84x, -1.1%) 0.12x (base 0.12x, +2.8%) ok
stringBuilding 4 1.49x (base 1.57x, -4.8%) 0.27x (base 0.26x, +2.5%) ok
recursion 4 1.42x (base 1.43x, -0.9%) 0.03x (base 0.04x, -4.8%) ok
quicksort 4 1.00x (base 0.99x, +0.9%) 0.09x (base 0.09x, +0.7%) ok

Result: no regression

@shai-almog

shai-almog commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Compared 185 screenshots: 185 matched.
Native Windows port (arm64 / Apple Silicon - Arm): full hellocodenameone screenshot suite rendered offscreen with Direct2D/DirectWrite, plus the real benchmarks (base64 native/CN1/SIMD, image createMask/applyMask/modifyAlpha/PNG/JPEG, NEON SIMD kernels). Compared against the in-repo baseline in scripts/windows/screenshots.

Benchmark Results

Detailed Performance Metrics

Metric Duration
SIMD kernel backend SSE2 (x64) / NEON (arm64) native kernels
SIMD int-add (64K x300) java 50ms / native 2ms = 25.0x speedup
SIMD float-mul (64K x300) java 49ms / native 3ms = 16.3x speedup
SIMD kernel correctness PASS (native result == scalar reference)
Base64 native bridge unavailable (CN1 + SIMD + image benchmarks only)
Base64 payload size 8192 bytes
Base64 benchmark iterations 6000
Base64 SIMD byte path gated to scalar (CPU autovectorizes scalar; explicit SIMD not beneficial here)
Base64 CN1 encode 61.000 ms
Base64 CN1 decode 70.000 ms
Base64 SIMD encode 78.000 ms
Base64 encode ratio (SIMD/CN1) 1.279x (27.9% slower)
Base64 SIMD decode 69.000 ms
Base64 decode ratio (SIMD/CN1) 0.986x (1.4% faster)
Image encode benchmark iterations 100
Image createMask (SIMD off) 5.000 ms
Image createMask (SIMD on) 3.000 ms
Image createMask ratio (SIMD on/off) 0.600x (40.0% faster)
Image applyMask (SIMD off) 20.000 ms
Image applyMask (SIMD on) 22.000 ms
Image applyMask ratio (SIMD on/off) 1.100x (10.0% slower)
Image modifyAlpha (SIMD off) 17.000 ms
Image modifyAlpha (SIMD on) 13.000 ms
Image modifyAlpha ratio (SIMD on/off) 0.765x (23.5% faster)
Image modifyAlpha removeColor (SIMD off) 22.000 ms
Image modifyAlpha removeColor (SIMD on) 14.000 ms
Image modifyAlpha removeColor ratio (SIMD on/off) 0.636x (36.4% faster)

ParparVM vs HotSpot (JDK 25): Windows arm64

Runner CPU: ARMv8 (64-bit) Family 8 Model D49 Revision 0, MICROSOFT CORPORATION (baseline windows-arm64@armv8-64-bit-family-8-model-d49-microsoft-corporation)

Ratios are ParparVM / JDK 25: below 1.00x ParparVM is faster (time) or smaller (RAM). Median of 5 interleaved, paired rounds; every run's output was verified. A ratio more than 15% (time) / 15% (RAM) away from its baseline in vm/selfhost/perf-baseline/ fails: above it is a regression, below it an improvement that has to be rebaselined (a row whose calibration runs were noisier carries a wider tolerance), and for RAM the change must also exceed 0.05x in absolute terms. Both run unpinned on all of the runner's CPUs, with their own default thread counts.

Benchmark Cores Time RAM Status
hello (WinHelloMain) 4 1.01x (base 1.11x, -8.6%) 0.61x (base 0.75x, -19.5%) ok
translator (self) 4 0.84x (base 0.84x, -0.3%) 0.52x (base 0.51x, +2.8%) ok
intArithmetic 4 1.04x (base 1.04x, -0.1%) 0.06x (base 0.06x, +1.1%) ok
longArithmetic 4 0.79x (base 0.80x, -0.1%) 0.06x (base 0.06x, +1.5%) ok
mathTranscendental 4 0.72x (base 0.72x, -0.2%) 0.06x (base 0.06x, +0.3%) ok
arraySequential 4 0.41x (base 0.46x, -10.7%) 0.39x (base 0.39x, -0.0%) ok
arrayRandom 4 0.93x (base 0.94x, -1.2%) 0.23x (base 0.23x, +0.8%) ok
objectAllocation 4 1.82x (base 2.81x, -35.4%) 0.40x (base 0.43x, -6.2%) ok
valueEscape 4 0.76x (base 0.76x, +0.0%) 0.05x (base 0.05x, +0.1%) ok
hashMapChurn 4 0.98x (base 0.98x, -0.2%) 0.12x (base 0.12x, -0.3%) ok
stringBuilding 4 1.61x (base 1.43x, +12.8%) 0.27x (base 0.27x, -0.2%) ok
recursion 4 1.56x (base 1.46x, +6.4%) 0.06x (base 0.07x, -0.6%) ok
quicksort 4 1.00x (base 1.00x, -0.2%) 0.12x (base 0.12x, -0.2%) ok

Result: no regression

@github-actions

Copy link
Copy Markdown
Contributor

✅ ByteCodeTranslator Quality Report

Test & Coverage

  • ✅ Tests: 833 total, 0 failed, 57 skipped

Benchmark Results

  • Execution Time: 8894 ms

  • Hotspots (Top 20 sampled methods):

    • 9.07% com.codename1.tools.translator.IteratorEscape.mangle (125 samples)
    • 8.71% java.util.ArrayList.indexOf (120 samples)
    • 4.79% com.codename1.tools.translator.BytecodeMethod.equals (66 samples)
    • 4.43% java.lang.System.identityHashCode (61 samples)
    • 3.19% java.lang.StringBuilder.append (44 samples)
    • 2.98% com.codename1.tools.translator.JavascriptReachability.enqueueResolved (41 samples)
    • 2.83% java.lang.Object.hashCode (39 samples)
    • 2.54% com.codename1.tools.translator.bytecodes.Invoke.findMethodUp (35 samples)
    • 2.03% java.util.AbstractCollection.containsAll (28 samples)
    • 1.60% com.codename1.tools.translator.IteratorEscape.walk (22 samples)
    • 1.52% com.codename1.tools.translator.bytecodes.Invoke.resolveDirectTarget (21 samples)
    • 1.31% com.codename1.tools.translator.NativeSymbolIndex.extend (18 samples)
    • 1.31% com.codename1.tools.translator.ReachabilityCull.run (18 samples)
    • 1.31% com.codename1.tools.translator.BytecodeMethod.updateInlinableFieldDependencies (18 samples)
    • 1.23% com.codename1.tools.translator.Parser.cullMethods (17 samples)
    • 1.23% com.codename1.tools.translator.classfile.analysis.Frame.merge (17 samples)
    • 1.16% java.lang.String.equals (16 samples)
    • 1.16% java.lang.StringCoding.encode (16 samples)
    • 1.09% java.io.FileOutputStream.writeBytes (15 samples)
    • 1.09% java.util.HashMap.hash (15 samples)
  • ⚠️ Coverage report not generated.

Static Analysis

  • ✅ SpotBugs: no findings (report was not generated by the build).
  • ⚠️ PMD report not generated.
  • ⚠️ Checkstyle report not generated.

Generated automatically by the PR CI workflow.

…d deadline tasks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@shai-almog

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: a1a5fd6ced

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@shai-almog shai-almog linked an issue Oct 20, 2026 that may be closed by this pull request
4 tasks
@shai-almog
shai-almog merged commit 1bd4fc9 into master Oct 20, 2026
52 of 57 checks passed
@shai-almog
shai-almog deleted the backend-webclient-h2-mtls branch October 20, 2026 05:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RFE: Backend outbound HTTP/2 and client-certificate authentication

1 participant