You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
add a portable semantics tree for all lightweight Codename One components, including roles, states, values, ranges, custom actions, grouping, traversal, live regions, panes, and collection metadata
expose virtual native accessibility trees through TalkBack, VoiceOver and Catalyst, Windows UI Automation, Linux ATK/AT-SPI, Java accessibility, and web ARIA
infer semantics for standard controls while preserving the existing accessibility text API
document the complete API and platform behavior in the developer guide
Motivation
Codename One renders lightweight controls itself, so native accessibility frameworks cannot infer a complete semantic hierarchy from native widgets. This change manufactures that hierarchy explicitly and gives applications a portable API comparable to modern semantics systems.
Testing
Java 8 core accessibility suite: 6 tests passed
Java 8 core smoke suite: 9 tests passed
clean HelloCodenameOne common build under Java 17, compiling 190 Java sources and the Kotlin fixtures
extensive AccessibilityTest assertions registered in scripts/hellocodenameone for native CI platforms
Android AccessibilityNodeProvider compiled against the Android API
Compared 140 screenshots: 140 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 62ms / native 6ms = 10.3x speedup
SIMD float-mul (64K x300)
java 61ms / native 4ms = 15.2x 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)
Compared 140 screenshots: 140 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 47ms / native 3ms = 15.6x speedup
SIMD float-mul (64K x300)
java 51ms / native 3ms = 17.0x 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)
Compared 140 screenshots: 140 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 53ms / native 3ms = 17.6x speedup
SIMD float-mul (64K x300)
java 55ms / native 3ms = 18.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)
Compared 141 screenshots: 141 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.
Compared 141 screenshots: 141 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Motivation
Codename One renders lightweight controls itself, so native accessibility frameworks cannot infer a complete semantic hierarchy from native widgets. This change manufactures that hierarchy explicitly and gives applications a portable API comparable to modern semantics systems.
Testing