Adds serialization to JSON format to collect and analyze the results of
benchmark runs.
Additionally, improve the Gradle build by using version catalogues and
modern APIs.
## Testing
A regular benchmarks execution was set on the CI.
## Release Notes
### Features - Multiple Platforms
- Improve benchmarks build and serialize results into JSON for the
collection and analysis
Benchmarks crash due to the attempt to use a cached scene that was
closed in the previous benchmark.
Create a Surface for each of the benchmarks instead.
## Testing
Testing was done manually.
## Release Notes
N/A
A script for extended CI check to not miss issues like
https://youtrack.jetbrains.com/issue/CMP-7738/Compose-fails-to-sync-in-Bazel
## Testing
```
./gradlew publishComposeJbToMavenLocal
```
```
./check.sh -Dkotlin.version=2.1.0 -Dcompose.version=9999.0.0-SNAPSHOT
```
doesn't fail on the latest jb-main, fails on 1.8.0-alpha04
## Release Notes
N/A
- Replace total CPU time by CPU/GPU/TOTAL average frame time
- Because `Mode.CPU` now measures GPU, rename it to `SIMPLE`
- Because the difference between `FRAMES` and `SIMPLE` is only in vsync,
rename it to `VSYNC_EMULATION`
- Remove `Mode.FRAMES_GPU`, as it affects only output
- Add Compose/Kotlin version, frame/warmup count
- Add writing to CSV on Desktop

Example of output into console:
```
Running emulating 120 FPS
# AnimatedVisibility
Version: 1.7.1 (Kotlin 2.1.0)
1000 frames (warmup 100)
CPU average frame time: 268.626us
GPU average frame time: 1.383332ms
TOTAL average frame time: 1.651958ms
Worst p1 CPU (ms): 2.017518ms
Worst p2 CPU (ms): 1.566880ms
Worst p5 CPU (ms): 1.188572ms
Worst p10 CPU (ms): 982.504us
Worst p25 CPU (ms): 753.478us
Worst p50 CPU (ms): 592.363us
Worst p1 GPU (ms): 5.945218ms
Worst p10 GPU (ms): 2.379730ms
Worst p50 GPU (ms): 1.909719ms
Missed frames (no buffering):
- count: 3
- ratio: 0.003
Missed frames (double buffering):
- count: 3
- ratio: 0.003
Results saved to D:\Work\compose-multiplatform\benchmarks\multiplatform\benchmarks\build\benchmarks\AnimatedVisibility.csv
# LazyGrid
...
```
## Release Notes
N/A
Fixes
https://youtrack.jetbrains.com/issue/CMP-7744/Desktop-Execution-failed-for-task-composeAppproguardReleaseJars-when-upgrade-to-CMP-1.8.0-alpha03
Also added `-dontnote androidx.**` to remove unnecessary notes about
Compose and other androidx libraries, which users can't fix themselves:
```
Note: androidx.lifecycle.ClassesInfoCache calls 'Method.getAnnotation'
Note: androidx.compose.ui.text.platform.ReflectionUtil$findAssignableField$result$1 calls 'Field.getType'
Note: androidx.compose.ui.text.platform.AwtFontUtils: can't find dynamically referenced class sun.font.CFont
Note: androidx.lifecycle.viewmodel.internal.JvmViewModelProviders accesses a declared constructor '<init>()' dynamically
```
## Testing
- `DesktopApplicationTest.proguard` fails before the fix, success after
## Release Notes
### Fixes - Desktop
- Fix `Execution failed for task ':composeApp:proguardReleaseJars'` when
`material3` is included in the project
This PR fixes compose resources for native macOS app (see currently
broken chat app using runDebugExecutableMacosArm64).
This PR also adds support for embedding resources into native macOS
framework. Similar to how it works on iOS. This allows using the macOS
compose code in an Xcode project. Just like iOS, using kotlin code as
framwork. Then call the main function from the Xcode project to run the
compose app.
https://github.com/JetBrains/compose-multiplatform/pull/5219https://github.com/JetBrains/compose-multiplatform/pull/5169
## Testing
- For executable: run chat app using runDebugExecutableMacosArm64
- For framework: Tested by adding macOS support to the iOS Xcode project
in chat app (not in this PR). Can add the sample app if needed. There
were also tests added to verify this.
## Release Notes
N/A
Treat it as a feature rather than a fix.
Example of a performance improvement:
https://github.com/JetBrains/compose-multiplatform-core/pull/1863
Alternative A - treat it as a fix, not a feature:
```
- Highlights # major features, performance improvements
- Features # minor features
- Fixes # bug fixes, undefined behavior changes, performance improvements
```
Alternative B - refer Fixes in Highlights:
```
- Highlights # major features and fixes
- Features # minor features
- Fixes # bug fixes, undefined behavior changes, performance improvements
```
## Release Notes
N/A
Fixes
https://youtrack.jetbrains.com/issue/CMP-7409/Add-a-CI-check-for-PR-containing-Release-Notes
- Add a GitHub workflow that checks Release Notes are correctly added.
Runs automatically on creation and description change
- Move the guide into one file from the PR templates
- Parse categories for the script instead of hardcoding them (to have a
single source of truth in the guide)
- Don't do network requests to avoid rate limit (60 requests per hour),
read the description from the workflow variable
Also added to
[compose-multiplatform-core](https://github.com/JetBrains/compose-multiplatform-core/pull/1900)
## Testing
1. Change Release Notes in this PR
2. CI successes with correct Release Notes
3. CI fails with incorrect ones
(Replace RR by R, otherwise the check picks a wrong section, I think no
need to write additional logic just for this PR)
Correct N/A:
```
## RRelease Notes
N/A
```
Correct change:
```
## RRelease Notes
### Features - iOS
- Simple feature
```
Release notes missing:
```
```
Title is incorrect:
```
## RRelease Note
### Features - iOS
- Simple feature
```
Section isn't standard:
```
## RRelease Notes
### Features - Compose
- Simple feature
```
Items are missing:
```
## RRelease Notes
### Features - iOS
```
Sections are missing:
```
## RRelease Notes
- Simple feature
```
## Testing
Tested for injections
1. For script injection
```
"; echo QQ > prDescription.txt #
```
2. For workflow injection
```
q
run: |
echo "QQ"
```
3. Verified that injection into `changelog.main.kts` isn't possible, as
it doesn't execute anything parsed (including links)
## Release Notes
N/A
This PR addresses typographical errors in the comments of the
`splitpane` package. The corrections are as follows:
1. **VerticalSplitPane function comment**:
- **Original**: "Pane that place it parts **vertically** from top to
bottom and allows to change items **heights**."
- **Correction**: "Pane that places its parts **vertically** from top to
bottom and allows changing items' **heights**."
2. **HorizontalSplitPane function comment**:
- **Original**: "Pane that place it parts **horizontally** from left to
right and allows to change items **width**."
- **Correction**: "Pane that places its parts **horizontally** from left
to right and allows changing items' **widths**."
3. **SplitPane function comment**:
- **Original**: "@param isHorizontal describes is it horizontal of
vertical split pane"
- **Correction**: "@param isHorizontal describes whether it is a
horizontal or vertical split pane"
These changes enhance the clarity and grammatical accuracy of the code
comments.
**Fixes**
N/A
**Testing**
As these changes are limited to comments and do not affect the
executable code, no additional testing is required.
**Release Notes**
N/A
Since the changes are non-functional and pertain only to code comments,
they do not necessitate an entry in the release notes.
It fails with:
```
> Dependency verification failed for configuration ':buildSrc:classpath'
One artifact failed verification: kotlinx-coroutines-bom-1.6.4.pom (org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4) from repository Gradle Central Plugin Repository
```
Looks like there are different artifacts in different repos (Gradle and
Maven Central). We need to more carefully enable it in the future
# Release Notes
N/A
Fixes
https://youtrack.jetbrains.com/issue/CMP-7603/Fix-Maven-Central-publication
- Update Space API to almost the latest
- the most latest requires Ktor Eap lib
- it is no longer depends on the broken `net.minidev:json-smart`
- Add artifact verification to avoid some security issues in the
publication process
# Testing
The command from the issue passes configuration phase, and fails with:
```
java.lang.IllegalStateException: Provide value for 'maven.central.sign.key' Gradle property or 'MAVEN_CENTRAL_SIGN_KEY' environment variable
```
The actual test we can only do on CI, that artifacts are successfully
uploaded to the stage.
# Release Notes
N/A
We support only 11 minimal for Desktop. It fails with latest builds
(it also fails because of another reason, which I will fix separately)
## Release Notes
N/A