Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
439 commits
Select commit Hold shift + click to select a range
d8322d2
Make the Cupertino pickers real wheels, on the spinners Codename One …
shai-almog Sep 20, 2026
c94144c
flutter-runtime: bring the readiness tracker up to today's measurements
shai-almog Sep 20, 2026
9213a92
flutter-runtime: an outline input border is an outline
shai-almog Sep 20, 2026
a6192d9
flutter-runtime: a resting label is not a placeholder
shai-almog Sep 20, 2026
2c30e13
flutter-runtime: stop a clipped subtree escaping its scroller, and st…
shai-almog Sep 20, 2026
9401e25
flutter-runtime: a push during a pop's transition recorded the wrong …
shai-almog Sep 20, 2026
0c00bc1
flutter-runtime: an elevated button is a pale face with a coloured la…
shai-almog Sep 20, 2026
efcc7cc
flutter-runtime: record what the text field gets wrong, with the numbers
shai-almog Sep 20, 2026
c0689b0
RoundBorder draws itself when there is nothing to draw it into
shai-almog Sep 22, 2026
2fb7f19
flutter-runtime: a paint-only shift has to own a box it can paint into
shai-almog Sep 22, 2026
8975f71
Measure the transpiled gallery against Flutter's own build, in CI
shai-almog Sep 22, 2026
652e959
Document running Flutter widget code, and teach the skill to port it
shai-almog Sep 22, 2026
4d37f26
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 22, 2026
dbd6e91
Give Spinner3D the project's copyright header
shai-almog Sep 22, 2026
2725fda
Keep the JDK 17 modules out of a JDK 8 reactor
shai-almog Sep 22, 2026
76bbd15
Make RoundBorder's direct painting opt-in, not the default
shai-almog Sep 22, 2026
b0ee4f8
Build the benchmark's framework once, on the JDK that can build it
shai-almog Sep 22, 2026
01af30f
Clear the PMD and cast-semantics findings on the new transitions
shai-almog Sep 22, 2026
8f119d3
Generate archetype projects for the JDK that will build them
shai-almog Sep 22, 2026
9d09ae6
Make the guide's Flutter snippets real compiled code
shai-almog Sep 22, 2026
f440966
Use the container's own JDKs for the benchmark's framework build
shai-almog Sep 22, 2026
18780f1
Keep the generate command on one line
shai-almog Sep 22, 2026
94eec9f
Build the benchmark's framework with the JavaSE profile
shai-almog Sep 22, 2026
ec534ab
Let generate-app-project choose the generated project's Java release
shai-almog Sep 22, 2026
ede8f5e
Take the workspace's dependencies with the gallery, not just its source
shai-almog Sep 22, 2026
2c44093
Take the EDT phase trace back out of the event loop
shai-almog Sep 22, 2026
3eb1c18
Drop Image.scaledSmooth and fillSmooth
shai-almog Sep 22, 2026
0f86820
Document the lightweight spinners now that they are public API
shai-almog Sep 22, 2026
bfe9b83
Pin the Flutter release the benchmark measures against
shai-almog Sep 22, 2026
192db7b
CI: give the generated projects a JDK they can target, and a display …
shai-almog Sep 22, 2026
98e31e8
flutter-bench: give the Linux native build its real dependency stack
shai-almog Sep 22, 2026
8e98818
core-unittests: stop a touch-device leak from breaking a later test
shai-almog Sep 22, 2026
7c92538
flutter-bench: build the macOS benchmark unsigned
shai-almog Sep 22, 2026
3c60429
flutter-bench: ask pub where the assets are instead of guessing
shai-almog Sep 22, 2026
7b35709
flutter-bench: say why Windows has no Visual Studio, at the point it …
shai-almog Sep 22, 2026
972930b
flutter-bench: pin the Windows runner too, and check the generator ma…
shai-almog Sep 22, 2026
f2af86e
flutter-bench: build the iOS project by target, not by a scheme it do…
shai-almog Sep 22, 2026
8cc9de7
dart-runtime: five places transpiled code diverged from Dart
shai-almog Sep 22, 2026
7c21c80
flutter-runtime: load NetworkImage headers and MemoryImage, unmount w…
shai-almog Sep 22, 2026
a2f2727
cn1:transcode-flutter: remove flattened assets that left the source tree
shai-almog Sep 22, 2026
39e447e
flutter-bench: make every leg able to produce a number, and the gate …
shai-almog Sep 22, 2026
8abd738
Port Status: render the Flutter benchmark in its own section
shai-almog Sep 22, 2026
3770612
flutter-bench: no POSIX-only paths in the measurement
shai-almog Sep 22, 2026
dfed704
flutter-bench: size Android by the ABI a phone is delivered
shai-almog Sep 22, 2026
b3a601f
flutter-bench: time the Flutter side at all, and size machine code, n…
shai-almog Sep 22, 2026
9604361
flutter-bench: take the start-up ratio from the end least favourable …
shai-almog Sep 22, 2026
991df0b
flutter-bench: arm the gate for Android, Linux, Windows and iOS
shai-almog Sep 22, 2026
378c216
flutter-bench: size the web build from the war that survives the build
shai-almog Sep 22, 2026
f5caddd
flutter-bench: arm the macOS gate for sizes and memory, not start-up
shai-almog Sep 22, 2026
34d3df0
flutter-bench: time Android apps at steady state, not mid-compilation
shai-almog Sep 22, 2026
fb8880b
flutter-bench: arm the JavaScript gate
shai-almog Sep 22, 2026
5728f43
flutter-bench: warm Android up properly, and base its gate on the env…
shai-almog Sep 22, 2026
5f45109
flutter-bench: retry the Flutter APK build on a corrupt SDK download …
shai-almog Sep 22, 2026
81bf45e
iOS: do not call the Metal-only setNoBackingCopy on the watch slice
shai-almog Sep 23, 2026
9bd3a88
flutter-bench: make each Android note's list boundary explicit
shai-almog Sep 23, 2026
b694141
screenshots: reseed Apple graphics-clip, which the shape-clip fix cor…
shai-almog Sep 23, 2026
c861b95
iOS: finish removing the no-backing-copy feature, and the per-frame G…
shai-almog Sep 23, 2026
8acf413
dart-runtime: seven more places transpiled code diverged from Dart
shai-almog Sep 23, 2026
7dc80c0
dart-transpiler: an async function's exceptions go to the Future it r…
shai-almog Sep 23, 2026
ab55c27
flutter-runtime: animation controls return their run's future; attach…
shai-almog Sep 23, 2026
7f9814e
flutter-bench: stage every asset package, and fail the gate when unme…
shai-almog Sep 23, 2026
311de54
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 23, 2026
0b59573
flutter-bench: read the asset-package list without Windows line endings
shai-almog Sep 23, 2026
155c073
Flutter assets: a prefix-free flat name, so no two assets share a file
shai-almog Sep 23, 2026
e0e54e2
dart-transpiler: key the incremental skip on the package and the tran…
shai-almog Sep 23, 2026
b16bc7e
dart-runtime: honour catchError's test, default ports, DateTime zone …
shai-almog Sep 23, 2026
9808bc8
flutter-runtime: GlobalKey reaches its element; identity keys, Locale…
shai-almog Sep 23, 2026
0aa571f
flutter-bench: read the Codename One version without spawning echo
shai-almog Sep 23, 2026
a59f8c8
dart-runtime: Future.wait settles through listeners; Pattern, ==, toS…
shai-almog Sep 23, 2026
92417e8
flutter-runtime: isolate a throwing listener from the rest
shai-almog Sep 23, 2026
0006e6d
dart-transpiler: ??= on members, dynamic operators, argument order, a…
shai-almog Sep 23, 2026
5f83129
dart-transpiler: sequence arguments only where an effect can be reord…
shai-almog Sep 23, 2026
ccba375
vm: restore the CN1_GC_CONFORM banner line the conflict cleanup fused
shai-almog Sep 23, 2026
af0eaf8
dart-runtime: numeric keys, mixed sorts, Completer, Timer, Uri host, …
shai-almog Sep 23, 2026
35b058d
flutter-runtime: -0.0 hashes like 0.0; live Matrix4.storage; requireD…
shai-almog Sep 23, 2026
b9bce65
dart-transpiler: lazy statics, ?? in place, tryParse null, catch imports
shai-almog Sep 23, 2026
2921bbc
dart-runtime: test a key's integrality without Math.rint
shai-almog Sep 23, 2026
33285a2
dart-runtime: DateTime microseconds, identity maps, Dart notation, pa…
shai-almog Sep 23, 2026
410a20e
flutter-runtime: FutureBuilder listens, pushes answer results, reader…
shai-almog Sep 23, 2026
68d3dc1
dart-transpiler: int.parse radix, locale-free case, stub-directory di…
shai-almog Sep 23, 2026
b3c3812
dart-runtime: identity sets, live entries, Map<int,int> API, Dart shi…
shai-almog Sep 23, 2026
e570fe8
flutter-runtime: notifier equality, stop(canceled: false), zero digit…
shai-almog Sep 23, 2026
68a900d
dart-transpiler: Dart shifts, rounding, trim, typed collection lambdas
shai-almog Sep 23, 2026
133ab4a
dart-runtime: List.from(growable:) and indexOf with a start
shai-almog Sep 23, 2026
4282b90
flutter-runtime: drag gestures, ScrollController, row heights, async …
shai-almog Sep 23, 2026
68d6616
dart-transpiler: num keeps int, String * int, List.from growable, ind…
shai-almog Sep 23, 2026
12c4d23
release: publish the Flutter and Dart runtimes
shai-almog Sep 23, 2026
357d9be
dart-runtime: list lengths, ByteData offsets, long delays, Uri valida…
shai-almog Sep 23, 2026
563065c
flutter-runtime: inherited scope order, didChangeDependencies, notifi…
shai-almog Sep 23, 2026
0113c37
animations: a flat three-point segment, and a transform with no sourc…
shai-almog Sep 23, 2026
f21a3d7
dart-runtime: then onError, fail-fast int maps, addAll equality, wide…
shai-almog Sep 23, 2026
0db5f35
flutter-runtime: canPop/maybePop see an open dialog
shai-almog Sep 23, 2026
b458863
dart-transpiler: then's onError and catchError's test are named argum…
shai-almog Sep 23, 2026
785e6b8
core-unittests: copyright headers on the two animation tests this cha…
shai-almog Sep 23, 2026
d3d7618
ios screenshots: reseed metal-27 graphics-clip from CI
shai-almog Sep 23, 2026
fa4912e
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 23, 2026
186b8b1
dart-runtime: non-finite conversions, clamp ranges, live asMap view, …
shai-almog Sep 24, 2026
b4e45da
flutter-runtime: controller stop paths, shared text controllers, canv…
shai-almog Sep 24, 2026
389a6b2
dart-transpiler: lower clamp/toInt/toList(growable) through the runti…
shai-almog Sep 24, 2026
cfc2f83
dart-runtime: exact int/double compareTo, RegExp dotAll, async whenCo…
shai-almog Sep 24, 2026
f739a90
flutter-runtime: FocusNode drives its field, tristate checkbox, Value…
shai-almog Sep 24, 2026
292291c
dart-transpiler: numeric compareTo, int-preserving min/max/pow, valid…
shai-almog Sep 24, 2026
a8d236f
flutter-bench: Maven through retry.sh, and a dispatch measures only t…
shai-almog Sep 24, 2026
ff27b71
dart-runtime: live getRange, Dart-equality map values and int keys, n…
shai-almog Sep 24, 2026
194bff8
flutter-runtime: skip listeners removed mid-dispatch, asset manifest …
shai-almog Sep 24, 2026
032374e
maven-plugin: bundle a Flutter asset manifest listing every asset key
shai-almog Sep 24, 2026
b35d969
dart-transpiler: no state file after a failed write; lower Map.contai…
shai-almog Sep 24, 2026
c88cef8
dart-runtime: Future.wait eagerError/cleanUp, typed List.from checks,…
shai-almog Sep 24, 2026
cae92d7
flutter-runtime: animateTo animates over its duration and curve; Comp…
shai-almog Sep 24, 2026
145775c
dart-transpiler: checked late fields, per-iteration sync*, hashAll ov…
shai-almog Sep 24, 2026
b7f265b
dart-runtime: int == double as the VM does, lastIndexWhere/lastIndexO…
shai-almog Sep 24, 2026
99463de
flutter-runtime: a provider given a new value rebuilds its dependents
shai-almog Sep 24, 2026
d1c9485
dart-transpiler: skip the packages/ asset root, lower List.lastIndexO…
shai-almog Sep 24, 2026
8a55429
Dialog: dispose a timed-out dialog only on the EDT
shai-almog Sep 24, 2026
13a6230
ContainerTransformTransition: cleanup releases the source and destina…
shai-almog Sep 24, 2026
e044ca2
dart-runtime: RegExp compiles in its constructor, IterableMixin throw…
shai-almog Sep 24, 2026
8f28bd9
flutter-runtime: ReverseAnimation and ProxyAnimation forward their pa…
shai-almog Sep 24, 2026
9d6cdee
dart-transpiler: lower Iterable.generate without type arguments
shai-almog Sep 24, 2026
39e3f69
fidelity: crop a screen that has stopped changing, not one fixed-slee…
shai-almog Sep 24, 2026
8d2733a
dart-runtime: thrown values are carried and caught as themselves; unm…
shai-almog Sep 24, 2026
72e48e7
flutter-runtime: awaitable dialogs, Selector's rebuild test, slider s…
shai-almog Sep 24, 2026
e375507
dart-transpiler: one ordered catch chain per try; lower identical, Li…
shai-almog Sep 24, 2026
71a8de9
flutter-bench: discount a slow runner, measured by pinned Flutter, fr…
shai-almog Sep 24, 2026
d83694e
dart-runtime: checked List.from and Uint8List.fromList, Dart-consiste…
shai-almog Sep 24, 2026
b294c09
flutter-runtime: per-element Selector cache, combining marks of every…
shai-almog Sep 24, 2026
c022e45
dart-transpiler: checked List.from, Object.hash through Dart hashes, …
shai-almog Sep 24, 2026
4c21456
dart-runtime: Dart errors for division by zero, Future.wait over a th…
shai-almog Sep 24, 2026
c6b6d6f
flutter-runtime: maxLength 0 is a limit, pushReplacementNamed keeps t…
shai-almog Sep 24, 2026
20bf6fa
dart-transpiler: lower replaceFirst, dynamic operands of && and ||, a…
shai-almog Sep 24, 2026
4009dc0
SimpleDateFormat: setTimeZone/getTimeZone, as java.text.DateFormat has
shai-almog Sep 24, 2026
83112e9
dart-runtime: identity collections use Dart identity; forEach detects…
shai-almog Sep 24, 2026
e415785
flutter-runtime: StatefulBuilder setState rebuilds, viewPadding carri…
shai-almog Sep 24, 2026
0a190c7
dart-transpiler: a class mixing in ChangeNotifier owns its listener list
shai-almog Sep 24, 2026
1c2be1e
copyright gate: header on SimpleDateFormatTest; SimpleDateFormat keep…
shai-almog Sep 24, 2026
570a391
flutter-bench: re-record the JavaScript size baseline
shai-almog Sep 24, 2026
424c67c
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 24, 2026
1da7051
flutter-bench: settle from the marker, fail on a missing gated metric…
shai-almog Sep 24, 2026
50338ba
dart-transpiler: named arguments keep source order around any call
shai-almog Sep 24, 2026
8390e27
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 25, 2026
daa510f
flutter-bench: fail the gate when Codename One is behind Flutter, and…
shai-almog Sep 25, 2026
e0003b5
builders: ship only the native theme the app loads, no transpiler met…
shai-almog Sep 25, 2026
4e38ce7
flutter-bench: measure what ships -- no MCP driver in the app, a stri…
shai-almog Sep 25, 2026
4dc0962
builders: and.hololight is not a build hint, so do not read it as one
shai-almog Sep 25, 2026
469f0db
flutter-bench: compare raw compute on every platform with the VM work…
shai-almog Sep 25, 2026
38f40d4
flutter-bench: build the compute table's intro as one explicit string
shai-almog Sep 25, 2026
c29117a
JavaScript port: IMUL is Math.imul, so int multiplication wraps like …
shai-almog Sep 25, 2026
fe9d3a4
flutter-bench: Flutter on Android takes its compute flag as a list; a…
shai-almog Sep 25, 2026
0ea3e97
flutter-bench: one period after a not-measured compute reason
shai-almog Sep 25, 2026
579c4bc
builders: keep the modern theme when the app asks the port for it
shai-almog Sep 25, 2026
fd5c172
flutter-runtime: a transform scaled to nothing paints nothing
shai-almog Sep 27, 2026
7a695cd
Mac port: answer the pre-window display size in pixels
shai-almog Sep 27, 2026
83f09b3
flutter-bench: stop timing our own compute check, and time Flutter's …
shai-almog Sep 27, 2026
7c12614
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 27, 2026
54ed998
integration-tests: the staged-jar test generates with the archetype's…
shai-almog Sep 27, 2026
3d4b6f7
flutter-bench: find Flutter's content frame by wall time
shai-almog Sep 27, 2026
bd2c10b
iOS/Mac port: rasterise monochrome atlas glyphs through the CGFont path
shai-almog Sep 27, 2026
9a7af4c
Resources: parse through a private read buffer
shai-almog Sep 27, 2026
fcfb7d3
iOS/Mac port: size a bundled resource with stat, not by reading it
shai-almog Sep 27, 2026
2b4f6e9
Linux port: publish the accessibility tree in one hop to the GTK thread
shai-almog Sep 27, 2026
ac7a7e5
Fonts: stop rebuilding the same native font for every theme entry
shai-almog Sep 27, 2026
1989ad6
developer-guide CI: retry transient Central failures when installing …
shai-almog Sep 27, 2026
ef2e494
Fonts: put Font.createTrueTypeFont's load cache back
shai-almog Sep 27, 2026
731453a
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 27, 2026
d7d1c49
Mac port: open the main window at the size it will really have
shai-almog Sep 27, 2026
dba7c66
fidelity: capture only once every tile has painted where it will be c…
shai-almog Sep 27, 2026
bb22dba
Mac port: take the window's first size from its saved frame and fixed…
shai-almog Sep 27, 2026
0d5b820
parparvm-parallel-mark CI: retry transient Central failures
shai-almog Sep 27, 2026
45eee13
Windows screenshot CI: restore the Maven repository from the nearest …
shai-almog Sep 27, 2026
fd661d9
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 28, 2026
f65cd25
iOS simulator tests: build the embedded watch app for the runner's ar…
shai-almog Sep 28, 2026
456458a
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 28, 2026
d4d0524
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 29, 2026
a148446
ParparVM: read DartLongList's array through CN1_ARRAY_DATA
shai-almog Sep 29, 2026
04551b7
CI: skip the translator-selected DLL intrinsics arm; fix the Telemetr…
shai-almog Sep 29, 2026
68f01f6
macOS: mark idle present surfaces purgeable
shai-almog Sep 29, 2026
a1a1fbe
ParparVM: cull what nothing reachable calls, not only what nothing calls
shai-almog Sep 29, 2026
217610a
ParparVM: inline threshold 50 on optimized C builds
shai-almog Sep 29, 2026
d2dfb9b
Desktop: honour desktop.width/height on native Linux and Windows; ben…
shai-almog Sep 29, 2026
175ae8d
macOS: purgeable screen texture at rest, memoryless stencil
shai-almog Sep 29, 2026
6560fe8
ParparVM: keep the size changes building under self-hosting and zig cc
shai-almog Sep 29, 2026
14c01ac
Metal: round overflowing pictures at the box instead of building a ro…
shai-almog Sep 29, 2026
1461dc1
flutter-bench: attribute compute failures against a host JVM reference
shai-almog Sep 29, 2026
23469b8
JS port: build objects from a per-class cached layout
shai-almog Sep 29, 2026
da0e534
JS port: hold a long that fits in 53 bits as a plain number
shai-almog Sep 29, 2026
24d3d37
JS port: emit collection and autobox natives as calls to their Java t…
shai-almog Sep 29, 2026
de43171
JS port: stop 64-bit long values flipping form on every operation
shai-almog Sep 29, 2026
f377038
JS port: allocate through a per-class function V8 can inline
shai-almog Sep 29, 2026
54b733a
JS port: call a virtual method directly when the receiver type allows…
shai-almog Sep 29, 2026
f91bd21
JS port: runtime strings are not interned; cheaper class-init guard, …
shai-almog Sep 29, 2026
c3a18ea
JS port: allocation-free identity counter; direct calls skip the gene…
shai-almog Sep 29, 2026
bb668dd
JS screenshots: reseed chart-time, whose golden recorded "Invalid Date"
shai-almog Sep 29, 2026
3b68a50
perf gate: calibrate Linux x64 AMD EPYC 9V45
shai-almog Sep 29, 2026
d8ebd8a
JS port: match bridge-built name stems only against the bridge sources
shai-almog Sep 29, 2026
c6865e1
JS port: allocation functions only where an allocation is hot
shai-almog Sep 29, 2026
d3d5071
JS port: run java.lang.System's static initializer instead of replaci…
shai-almog Sep 29, 2026
fa90f03
JS port: start the application lifecycle on the EDT
shai-almog Sep 29, 2026
737e3b7
JS port: hashCode/equals sites are synchronous; exact receiver type f…
shai-almog Sep 29, 2026
5eddfd3
Linux: cut three launch costs -- GDK GL probing, repeated font metric…
shai-almog Sep 29, 2026
75088bb
JS port: direct calls at the site, literal long constants, indexed na…
shai-almog Sep 29, 2026
074cf54
Linux: draw scaled images directly; cache text widths
shai-almog Sep 29, 2026
8c3d4c1
Windows: draw scaled images directly
shai-almog Sep 29, 2026
ed33954
JS port: numeric array stores stay numeric; inline bounds test in loops
shai-almog Sep 29, 2026
69997ed
JS tests: copyright header on the contended-monitor fixture
shai-almog Sep 29, 2026
8321d9c
JS port: string literals read in a loop keep their String in a slot
shai-almog Sep 29, 2026
fad4135
Windows screenshots: reseed the two scaled-image goldens
shai-almog Sep 29, 2026
47730f4
Linux screenshots: reseed the two scaled-image goldens (x64 and arm64)
shai-almog Sep 29, 2026
7537b75
perf gate: keep a failed benchmark's run logs where the job uploads them
shai-almog Sep 29, 2026
31a4b37
ParparVM CMake: inline threshold on generated sources only
shai-almog Sep 29, 2026
c8fae5f
ParparVM CMake: a GCC inline limit, so a gcc-built Linux app shrinks too
shai-almog Sep 29, 2026
725f476
Metal: load the default library once per pipeline cache
shai-almog Sep 29, 2026
ab9efbd
iOS bundle: ship PNGs as they are, and not the port's design notes
shai-almog Sep 29, 2026
2d6e77c
ParparVM cull: type-aware reachability for the C targets, with a CI trap
shai-almog Sep 29, 2026
5a4bd6c
ParparVM cull: seed reflection per Class.forName site, not per newIns…
shai-almog Sep 29, 2026
6e80b89
macOS: build the main window before [NSApp run], overlapping the VM boot
shai-almog Sep 29, 2026
97d4b84
iOS size: cull what only dead native C names; drop the loose legacy i…
shai-almog Sep 29, 2026
f1539c5
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Sep 30, 2026
d50f587
flutter-bench: re-record the Android code-size baseline
shai-almog Sep 30, 2026
d922cb9
macOS: document why the main window is built before [NSApp run]
shai-almog Sep 30, 2026
23e387a
Themes: custom mode ships and installs no native theme, on every port
shai-almog Sep 30, 2026
e6090c2
Theme install: defer the desktop base theme, build control glyphs on …
shai-almog Sep 30, 2026
0011310
Themes: nativeTheme=custom does not reach the JavaSE desktop
shai-almog Oct 1, 2026
0bcf456
flutter-bench: Android code-size baseline after the custom theme mode…
shai-almog Oct 1, 2026
927fb4b
perf gate: re-measure the Windows AMD Family 26 objectAllocation memo…
shai-almog Oct 1, 2026
0eb91fc
Translator: make the reachability cull cheap without changing what it…
shai-almog Oct 1, 2026
047c9d0
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Oct 1, 2026
8c399d5
Flutter runtime: cut first-build overhead in mount, styling and theme…
shai-almog Oct 1, 2026
456f136
Fidelity harness: wait for tile geometry, not just position, and rech…
shai-almog Oct 1, 2026
2fc4148
flutter-bench: Android code-size baseline after the runtime mount/sty…
shai-almog Oct 1, 2026
d070d57
flutter-bench: Android code-size tolerance +0.5%
shai-almog Oct 1, 2026
c2c7622
flutter-bench: keep the write token out of the job that runs pull req…
shai-almog Oct 1, 2026
b7f0e91
SimpleDateFormat: parse text without a zone in the configured zone
shai-almog Oct 1, 2026
4875edd
UIManager: install a deferred base theme before getThemeName and zoom…
shai-almog Oct 1, 2026
138159d
Dart transpiler and Flutter runtime: fixes from review
shai-almog Oct 1, 2026
a8b3826
perf gate: a crashed round records the native stacks of every thread
shai-almog Oct 1, 2026
12c3ddf
perf gate: linux-arm64 stringBuilding memory row tolerates the JDK's …
shai-almog Oct 1, 2026
20fe663
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Oct 1, 2026
9717cb0
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Oct 1, 2026
1b36753
flutter-bench: judge start-up and memory by the median of paired per-…
shai-almog Oct 2, 2026
0274c5c
Merge remote-tracking branch 'origin/master' into flutter-dart-transp…
shai-almog Oct 2, 2026
bebca11
macOS: serve the first frame before [NSApp run]; publish the window's…
shai-almog Oct 2, 2026
604b8ee
macOS: build the menu bar after the first frame
shai-almog Oct 2, 2026
2fc134c
Perf baselines: parameterise the overlay engine by a Layout, share th…
shai-almog Oct 2, 2026
30d1fe2
flutter-bench: regression baselines on the performance gate's overlay…
shai-almog Oct 2, 2026
c045041
flutter-bench: calibrate this branch's ratio rows and re-measure its …
shai-almog Oct 2, 2026
4432a53
ci: check and fold the Flutter benchmark's baselines with the perform…
shai-almog Oct 2, 2026
423d7e3
flutter-bench: document the regression baselines beside the head-to-h…
shai-almog Oct 2, 2026
4314574
flutter-bench: size rows are one-sided; a shrink is reported, not failed
shai-almog Oct 2, 2026
d8bac45
flutter-bench: calibrate pr/5883.json from run 37015988276 at 604b8ee2e5
shai-almog Oct 2, 2026
40867c4
flutter-bench: repair the README a scripted edit multiplied to 14 MB
shai-almog Oct 2, 2026
a8a84e6
flutter-bench: JavaScript reports a loss to Flutter without failing o…
shai-almog Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 4 additions & 1 deletion .github/workflows/developer-guide-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,10 @@ jobs:
if: github.event_name != 'pull_request' || steps.changes.outputs.docs == 'true' || steps.changes.outputs.demos == 'true' || steps.changes.outputs.workflow == 'true'
run: |
set -euo pipefail
xvfb-run -a mvn -B -ntp -f maven/pom.xml \
# Through retry.sh, transient failures only, like the demo install below:
# this is the step that resolves the most from Central, and a single 502
# on a plugin dependency (maven-shared-utils) failed the whole guide build.
RETRY_ONLY_MATCHING=transient xvfb-run -a bash scripts/ci/retry.sh mvn -B -ntp -f maven/pom.xml \
-pl core,javase,android,css-compiler,codenameone-maven-plugin,backend \
-am install \
-Plocal-dev-javase \
Expand Down
505 changes: 505 additions & 0 deletions .github/workflows/flutter-bench.yml

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions .github/workflows/input-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,16 @@ on:
- 'scripts/build-ios-app.sh'
workflow_dispatch: {}

env:
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

concurrency:
# Only the latest revision needs validation. PR numbers keep forks isolated;
# event names keep a manual/scheduled run from cancelling a push or PR run.
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/ios-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ concurrency:
group: packaging-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
build-port:
if: ${{ !inputs.port_prepared }}
Expand Down
44 changes: 17 additions & 27 deletions .github/workflows/linux-build-run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,16 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
# Build the codenameone maven plugin (it needs CEF, which is x64-only on Linux)
# and the hellocodenameone screenshot suite, then publish the suite + ads-mock
Expand Down Expand Up @@ -173,34 +183,14 @@ jobs:
- name: Check out repository
uses: actions/checkout@v6

# The native Linux port's full dependency stack: GTK3 + Cairo + Pango +
# GdkPixbuf + GLib/GIO (render/widgets), FontConfig/FreeType (bundled-font
# registration), libcurl (HTTP), GStreamer (media/camera/audio), WebKitGTK
# (browser), libsecret (secure storage), libnotify (notifications), GeoClue
# (location), libepoxy + EGL/GLES + the Mesa software driver (the offscreen
# 3D backend). Plus CMake/Ninja, Xvfb and a font for Pango to lay out.
#
# The GStreamer plugin set matters as much as the library: base + good carry
# appsrc/appsink, videoconvert and mp4mux but NO codec. VideoIO's encoder is
# x264enc/x265enc (plugins-ugly) parsed by h264parse/h265parse (plugins-bad)
# with avenc_aac for audio and avdec_* for playback (libav), so without those
# three packages the port has no encoder and no H.264 decoder at all.
# The port's full dependency stack, shared with the Flutter benchmark,
# which builds the same local-linux-device target. See the script for what
# each group is for and why the GStreamer plugin set is part of it.
- name: Install the GTK build stack + toolchain
run: |
set -e
# Through the shared helper: it refreshes the index once when a .deb
# 404s, which is what a point release landing mid-job looks like --
# three openssl packages took this job out on 2026-08-25.
bash scripts/ci/apt-get-install.sh \
cmake ninja-build pkg-config unzip xvfb fonts-dejavu-core \
libgtk-3-dev libcairo2-dev libpango1.0-dev libgdk-pixbuf-2.0-dev libglib2.0-dev \
libfontconfig1-dev libfreetype-dev \
libcurl4-openssl-dev libssl-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav \
libwebkit2gtk-4.1-dev libsecret-1-dev libnotify-dev libgeoclue-2-dev \
libepoxy-dev libegl1-mesa-dev libgles2-mesa-dev libgl1-mesa-dri \
clang time
run: bash scripts/ci/install-linux-native-deps.sh

- name: Install clang and time
run: bash scripts/ci/apt-get-install.sh clang time

- name: Set up JDK 8
uses: actions/setup-java@v5
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/parparvm-parallel-mark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -135,15 +135,18 @@ jobs:
# nothing for the tests module to resolve against, which is how the first
# revision of this workflow failed on all three arms including the control.
# This mirrors parparvm-tests.yml.
# Through retry.sh, transient failures only: a TLS handshake that did not
# complete fetching maven-clean-plugin from Central failed this step once,
# before anything under test had been built.
- name: Build JavaAPI and the translator
run: mvn -B clean package -pl JavaAPI -am -DskipTests
run: RETRY_ONLY_MATCHING=transient bash ../scripts/ci/retry.sh mvn -B clean package -pl JavaAPI -am -DskipTests
working-directory: vm

- name: GC suite
env:
CN1_TEST_EXTRA_CFLAGS: ${{ matrix.cflags }}
run: |
mvn -B test -pl tests -am \
RETRY_ONLY_MATCHING=transient bash ../scripts/ci/retry.sh mvn -B test -pl tests -am \
-Dsurefire.failIfNoSpecifiedTests=false \
-Dtest='GcHeapIntegrityIntegrationTest,GcOverflowSpiralIntegrationTest,GcUncooperativeThreadIntegrationTest,LargeArrayGcIntegrationTest,LowMemoryThrottleIntegrationTest,BibopPageFloorIntegrationTest'
working-directory: vm
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/parparvm-selfhost.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ concurrency:

env:
CN1_NATIVE_VERIFY: strict
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
selfhost:
Expand Down
25 changes: 24 additions & 1 deletion .github/workflows/parparvm-tests-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ env:
# the translator so a customer build that succeeds today keeps succeeding; see
# NativeSignatureVerifier.
CN1_NATIVE_VERIFY: strict
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
vm-tests-windows:
Expand Down Expand Up @@ -359,11 +367,26 @@ jobs:
with:
distribution: 'temurin'
java-version: '8'
cache: 'maven'
- name: Save JDK 8 path
shell: pwsh
run: echo "JDK_8_HOME=$env:JAVA_HOME" >> $env:GITHUB_ENV

# The Maven repository, restored from the NEAREST earlier run rather than an
# exact match. setup-java's cache: 'maven' keys on the hash of every pom.xml
# and restores nothing on a miss, so any change to a pom started this job
# from an empty repository -- and Central rate-limits Windows runners hard:
# one such run got 429 Too Many Requests on junit-bom through all five
# attempts of the retry loop below, over ten minutes, before building
# anything. A near match already holds almost every artifact, so the few new
# ones are all that has to come from Central.
- name: Maven repository cache
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: maven-${{ runner.os }}-screenshot-${{ hashFiles('**/pom.xml') }}
restore-keys: |
maven-${{ runner.os }}-screenshot-

# Install the locally-built artifacts the hellocodenameone Maven build needs:
# codename1-core + the Windows port (translator inputs), the codenameone
# maven plugin (runs transcode-svg / css / annotation processing during the
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/parparvm-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,14 @@ env:
# the translator so a customer build that succeeds today keeps succeeding; see
# NativeSignatureVerifier.
CN1_NATIVE_VERIFY: strict
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
# EVERY DOCUMENTED RUNTIME CONFIGURATION MUST STILL COMPILE.
Expand Down
23 changes: 19 additions & 4 deletions .github/workflows/perf-baseline.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
name: Performance baselines

# Two gates keep their baselines this way, with one set of rules
# (vm/selfhost/perf_baseline.py): the ParparVM performance gate in
# vm/selfhost/perf-baseline/, and the Flutter benchmark's regression gate in
# scripts/flutter-bench/baseline/ (scripts/flutter-bench/flutter_baseline.py).
#
# The ParparVM performance gate's baselines live in vm/selfhost/perf-baseline/:
# base/ holds the consolidated rows, and each pull request that changes a baseline
# writes only its own pr/<number>.json, so baseline changes stay in the pull
Expand Down Expand Up @@ -49,16 +54,25 @@ jobs:
working-directory: vm/selfhost
run: python3 -m unittest test_perf_gate

- name: The Flutter benchmark gate's unit tests
working-directory: scripts/flutter-bench
run: python3 -m unittest test_flutter_baseline

- name: Check the baselines
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
# Both, even when the first fails, so one comment shows every problem.
status=0
if [ -n "${BASE_SHA}" ]; then
python3 vm/selfhost/perf_baseline.py check --base "${BASE_SHA}" --pr "${PR_NUMBER}"
python3 vm/selfhost/perf_baseline.py check --base "${BASE_SHA}" --pr "${PR_NUMBER}" || status=1
python3 scripts/flutter-bench/flutter_baseline.py check --base "${BASE_SHA}" --pr "${PR_NUMBER}" || status=1
else
python3 vm/selfhost/perf_baseline.py check
python3 vm/selfhost/perf_baseline.py check || status=1
python3 scripts/flutter-bench/flutter_baseline.py check || status=1
fi
exit $status

fold:
if: (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/master'
Expand Down Expand Up @@ -87,14 +101,15 @@ jobs:
git fetch --quiet origin master
git reset --quiet --hard origin/master
python3 vm/selfhost/perf_baseline.py fold
git add -A vm/selfhost/perf-baseline
python3 scripts/flutter-bench/flutter_baseline.py fold
git add -A vm/selfhost/perf-baseline scripts/flutter-bench/baseline
if git diff --staged --quiet; then
echo "No overlays to fold."
echo "folded=false" >> "$GITHUB_OUTPUT"
exit 0
fi
git diff --staged --stat
git commit --quiet -m "ci: fold merged performance baselines into perf-baseline/base"
git commit --quiet -m "ci: fold merged performance and Flutter benchmark baselines into base/"
if git push origin HEAD:master; then
echo "folded=true" >> "$GITHUB_OUTPUT"
exit 0
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,14 @@ env:
# outcome of customer builds that succeed today, so it is ours to enforce, not
# theirs to trip over. See NativeSignatureVerifier.
CN1_NATIVE_VERIFY: strict
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

concurrency:
# Only the latest revision needs validation. PR numbers keep forks isolated;
Expand Down
46 changes: 45 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -359,6 +359,46 @@ jobs:
[ "$code" = "200" ] || { echo "MISSING on R2: codenameone-guibuilder (HTTP $code)" >&2; exit 1; }
echo "ok: codenameone-guibuilder ${GITHUB_REF_NAME} on R2"

# --- Flutter runtime and Dart runtime -----------------------------------
# codenameone-dart-runtime and codenameone-flutter-runtime compile at
# release 17, so the maven/ reactor only includes them on JDK 17 (the
# flutter-modules profile) and the JDK 8 core pass above never builds them.
# Without this pass a project that declares codenameone-flutter-runtime at a
# released version -- as the archetype documentation says to -- cannot
# resolve it. The transpiler itself builds on JDK 8 and ships with the core.
- name: Build and stage the Flutter runtimes
id: deploy_flutter
continue-on-error: true
if: >-
always() && (steps.deploy.outcome == 'success' ||
steps.r2_core.outcome == 'success')
run: |
export GPG_TTY=$(tty)
cd maven
# -pl without -am: the parent and core were released above and are in
# the local repository at this version; re-staging them here would
# produce new signatures for artifacts that are already immutable on R2.
# With -pl the plugin stages under the FIRST reactor module's target --
# maven/dart-runtime/target/central-staging, holding both runtimes --
# not under maven/target, so the core tree is left untouched.
xvfb-run -a mvn deploy -Psign-artifacts -Dgpg.passphrase=$MAVEN_GPG_PASSPHRASE \
-pl dart-runtime,flutter-runtime -DskipTests -DskipPublishing=true
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}

- name: Publish Flutter runtimes to R2
id: r2_flutter
continue-on-error: true
if: always() && steps.deploy_flutter.conclusion != 'skipped'
run: |
bash maven/scripts/r2/publish-staging-to-r2.sh maven/dart-runtime/target/central-staging
for artifact in codenameone-dart-runtime codenameone-flutter-runtime; do
url="${R2_BASE_URL}/com/codenameone/${artifact}/${GITHUB_REF_NAME}/${artifact}-${GITHUB_REF_NAME}.pom?cb=${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
code=$(curl -s -o /dev/null -w "%{http_code}" "$url")
[ "$code" = "200" ] || { echo "MISSING on R2: $artifact (HTTP $code)" >&2; exit 1; }
echo "ok: $artifact ${GITHUB_REF_NAME} on R2"
done

- name: Mark the R2 release complete
id: r2_mark_complete
continue-on-error: true
Expand Down Expand Up @@ -387,12 +427,14 @@ jobs:
steps.deploy_certificatewizard.outcome == 'success' &&
steps.deploy_settings.outcome == 'success' &&
steps.deploy_guibuilder.outcome == 'success' &&
steps.deploy_flutter.outcome == 'success' &&
steps.r2_core.outcome == 'success' &&
steps.r2_core_confirm.outcome == 'success' &&
steps.r2_gamebuilder.outcome == 'success' &&
steps.r2_certificatewizard.outcome == 'success' &&
steps.r2_settings.outcome == 'success' &&
steps.r2_guibuilder.outcome == 'success'
steps.r2_guibuilder.outcome == 'success' &&
steps.r2_flutter.outcome == 'success'
run: bash maven/scripts/r2/mark-release-complete.sh "${GITHUB_REF_NAME}"

- name: Regenerate R2 metadata and archetype catalog
Expand Down Expand Up @@ -445,12 +487,14 @@ jobs:
bad "${{ steps.deploy_certificatewizard.outcome }}" && fail "Signing Wizard build"
bad "${{ steps.deploy_settings.outcome }}" && fail "Settings build"
bad "${{ steps.deploy_guibuilder.outcome }}" && fail "GUI Builder build"
bad "${{ steps.deploy_flutter.outcome }}" && fail "Flutter runtimes build"
bad "${{ steps.r2_core.outcome }}" && fail "core reactor -> R2"
bad "${{ steps.r2_core_confirm.outcome }}" && fail "core artifacts missing on R2"
bad "${{ steps.r2_gamebuilder.outcome }}" && fail "Game Builder -> R2"
bad "${{ steps.r2_certificatewizard.outcome }}" && fail "Signing Wizard -> R2"
bad "${{ steps.r2_settings.outcome }}" && fail "Settings -> R2"
bad "${{ steps.r2_guibuilder.outcome }}" && fail "GUI Builder -> R2"
bad "${{ steps.r2_flutter.outcome }}" && fail "Flutter runtimes -> R2"
bad "${{ steps.r2_mark_complete.outcome }}" && fail "marking the R2 release complete"
bad "${{ steps.r2_metadata.outcome }}" && fail "R2 metadata regeneration"
# A skipped marker is not a legitimate skip: it is how a release ends up
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/scripts-ios-native.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@ concurrency:
group: native-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
build-port:
if: ${{ !inputs.port_prepared }}
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/scripts-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,16 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
# A method the translator culled as unreachable is still emitted as a stub,
# because dispatch tables name it. With this on, the stub aborts with the
# method's name instead of returning 0, so a wrong cull fails the suite that
# reached it rather than shipping a silent null. Ours to enforce, like
# CN1_NATIVE_VERIFY: customer builds keep the plain stub. See
# BytecodeMethod.appendMethodC. Not in the size or perf benchmarks, whose
# binaries should be the ones customers get.
CN1_CULL_TRAP: '1'

jobs:
select:
runs-on: ubuntu-24.04
Expand Down
Loading
Loading