- 02 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 26 Feb, 2026 3 commits
-
-
Ivan Matkov authored
Fixes from #1168 extracted as a followup patch for #1162
-
Luc Girardin authored
Added support for custom blend modes through RuntimeEffect.makeForBlender() and Paint.blender. There was a discussion on the topic at https://youtrack.jetbrains.com/issue/CMP-5046.
-
Ivan Matkov authored
Reverts #1168 in favor of merging #1162 instead
-
- 20 Feb, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1114](https://youtrack.jetbrains.com/issue/SKIKO-1114) Provide more smooth migration to skiko 0.144.*
-
- 19 Feb, 2026 4 commits
-
-
Igor Demin authored
Diff in https://github.com/JetBrains/compose-multiplatform: ``` git log --oneline buildHelpers_v0.1.18...buildHelpers_v0.1.28 -- ci/build-helpers ``` 98e1f7154d (tag: buildHelpers_v0.1.28, origin/master, origin/HEAD) Add retry for downloading artifacts from Space (https://github.com/JetBrains/compose-multiplatform/pull/5540) de33213773 Migrate dev maven (https://github.com/JetBrains/compose-multiplatform/pull/5524) 9fe7e9ae2e (tag: buildHelpers_v0.1.22) Increase Maven Upload socket timeout (https://github.com/JetBrains/compose-multiplatform/pull/5488) 37f161ff0b (tag: buildHelpers_v0.1.21) Increase Maven Upload socket timeout (https://github.com/JetBrains/compose-multiplatform/pull/5486) d949b7cc83 (tag: buildHelpers_v0.1.20) Bump versions (Kotlin, AGP, Gradle) (https://github.com/JetBrains/compose-multiplatform/pull/5399) b495789975 (tag: v1.9.0+dev2631, tag: buildHelpers_v0.1.19) Fix Maven Central API uploading (https://github.com/JetBrains/compose-multiplatform/pull/5353)
-
Ivan Matkov authored
[SKIKO-1113](https://youtrack.jetbrains.com/issue/SKIKO-1113) Calling detach() twice in a row on same PathBuilder Adding more tests to verify behavior from the report
-
Ivan Matkov authored
Required for [CMP-5046](https://youtrack.jetbrains.com/issue/CMP-5046) Supersedes #1162 with a cleaned-up and fixes --------- Co-authored-by:
Luc Girardin <luc.girardin@macrofocus.com>
-
Ivan Matkov authored
[SKIKO-1112](https://youtrack.jetbrains.com/issue/SKIKO-1112) Missed `PathBuilder.offset` and `PathBuilder.transform` in `0.144.0` Missed part from #1154 JNI/KN C++ bindings are already in place
-
- 18 Feb, 2026 1 commit
-
-
Ivan Matkov authored
Fixes [SKIKO-1094](https://youtrack.jetbrains.com/issue/SKIKO-1094) Update skia to m144
-
- 17 Feb, 2026 3 commits
-
-
Ivan Matkov authored
They are out of the scope of the skiko library. [SKIKO-1020](https://youtrack.jetbrains.com/issue/SKIKO-1020) Deprecate and remove URIManager [SKIKO-1021](https://youtrack.jetbrains.com/issue/SKIKO-1021) Deprecate and remove ClipboardManager [SKIKO-1022](https://youtrack.jetbrains.com/issue/SKIKO-1022) Deprecate and remove CursorManager
-
Ivan Matkov authored
-
Ivan Matkov authored
-
- 16 Feb, 2026 2 commits
-
-
Victor Kropp authored
All public links are updated to https://redirector.kotlinlang.org/maven/compose-dev Internal buildSrc links to maven directly to avoid unnecessary redirects Fixes SKIKO-1108
-
Ivan Matkov authored
Previously: - The bash script required specifying `SKIA_VERSION` separately from `gradle.properties`, leading to version mismatches - Script hardcoded `SKIA_TARGET` default to `iosSim`, requiring manual override on non-macOS systems This change: - Added `skiaVersionFromEnvOrProperties` property and `printSkiaVersion` task. The bash script now queries Gradle for the version instead of maintaining its own default. - Target platform now defaults to current OS (`hostOs.id`) instead of hardcoded `iosSim`. - Introduced `BuildLocalSkiaTask` that handles Python build script invocation, architecture detection, and validation. - Added `SkiaTarget` enum centralizing platform-specific Gradle flags and architecture mappings. - Simplified bash script: Now focuses solely on git operations (clone/checkout skia-pack), delegating all build logic to Gradle. ### Usage ```sh # Version from gradle.properties, target auto-detected from OS ./build-with-local-skia.sh # Override either via environment variables SKIA_VERSION=m138-80d088a-2 SKIA_TARGET=iosSim ./build-with-local-skia.sh # Or use Gradle tasks directly ./gradlew prepareLocalSkiaBuild -Pskia.target=linux ```
-
- 12 Feb, 2026 1 commit
-
-
Ivan Matkov authored
Fixes [SKIKO-1103](https://youtrack.jetbrains.com/issue/SKIKO-1103) Properly handle Dockerfile changes in CI ### 1. Handle Dockerfile Changes in CI When a PR modifies both the `Dockerfile` and C++ source, CI must build the library against the **new** container logic before merging to catch compatibility issues. Workflows now detect `Dockerfile` changes and automatically build images locally before running tests. When no `Dockerfile` changes are detected, published images from `ghcr.io` are used. ### 2. Avoid GLIBC Mismatches: Run GitHub Actions Outside Containers Running GitHub Actions native steps (like `actions/checkout`) inside custom containers causes GLIBC version mismatches since GitHub's Node.js-based actions require newer GLIBC than Amazon Linux 2 provides. This change introduced new composite action `docker-skiko-run` that runs GitHub actions outside the container on `ubuntu-24.04` runner, and only executes build/test commands inside the Docker container via `docker run`. ### 3. Environment Alignment: Use `linux-compat` for GitHub Actions Builds GitHub Actions used Ubuntu 20.04 images with GLIBC 2.31, while TeamCity publishing used Amazon Linux 2 with GLIBC 2.26. This mismatch could mask GLIBC compatibility issues during PR validation. Most GitHub Actions workflows now use `linux-compat` (Amazon Linux 2). - Web builds are out of the scope here because emsdk requires newer GLIBC. - Cross-compilation is out of the scope because there is no simply way to get arm shared libraries to x64 image on AL2 Note: TeamCity publishing should be updated to use `linux-compat` too ### 4. Introduce Orchestrator Workflows New orchestrator workflows compose existing test/build/docs workflows: - **`pull-request.yml`** - Runs on every PR: detects Docker changes, builds images if needed (dry-run), runs tests + publish dry run + docs validation - **`post-merge.yml`** - Runs on push to master/release: detects Docker changes, publishes images if changed, runs tests + publish dry run + docs publication So, we should have fewer "Run CI" temporary PRs now ### 5. Documentation as Pre-Merge Check Documentation builds now run inside the same `linux-compat` Docker environment used for library builds, and are validated as part of PR checks (previously only ran post-merge). ### 6. Docker Tags Use Branch Names Published Docker images are tagged with the branch name (e.g., `master`, `release/0.9.46`), so the release branches might publish its own version of the image. This way changes in `master` shouldn't prevent making a patch for a previous version if it's required
-
- 10 Feb, 2026 1 commit
-
-
ApoloApps authored
Fixes [SKIKO-1059](https://youtrack.jetbrains.com/issue/SKIKO-1059/Output-the-argument-size-in-ColorMatrix-in-case-of-error) Converts to value class for inlining and no class allocation and fixes the requirement message
-
- 06 Feb, 2026 2 commits
-
-
Alexander Maryanovsky authored
-
Oleksandr Karpovich authored
This function will copy the pixels bytes directly from JS ArrayBuffer to skiko linear memory. The allocated memory will be freed when SkBitmap is removed.
-
- 05 Feb, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 30 Jan, 2026 2 commits
-
-
Ivan Matkov authored
Fixes [SKIKO-1101](https://youtrack.jetbrains.com/issue/SKIKO-1101) Prevent possible version mismatch between skiko Kotlin and JNI parts
-
Victor Kropp authored
Fixes CMP-1460
-
- 29 Jan, 2026 1 commit
-
-
Thomas Vos authored
Requires skia-pack version update before merging: https://github.com/JetBrains/skia-pack/pull/68 Required for my linuxArm64 device which only support EGL. https://youtrack.jetbrains.com/issue/SKIKO-918
-
- 28 Jan, 2026 2 commits
-
-
ApoloApps authored
This is part 2 of [this pr](https://github.com/JetBrains/skiko/pull/1137) **What has changed?** 1. Added more extension functions that prevent intermediate object allocations from a lot of the Skiko api surface 2. Migrated EnumClass.values() to entries in a lot of classes (maybe some have been missed) **Next** Try (important keyword here :), cause if not wrong there are Skia and Compose diffs on how they're treated) doing less copies of Matrix ## Release Notes Added API that can accept primitive values instead of `Rect`, `RRect`, `Offset` to avoid additional object allocation
-
Ivan Matkov authored
Fixes [SKIKO-1081](https://youtrack.jetbrains.com/issue/SKIKO-1081) Make docker images for building skiko publicly available The Skiko project previously used a private Docker registry (`registry.jetbrains.team/p/ui/skiko-docker`) for build containers, which required secrets for authentication. This prevented CI verification from fork PRs even after manual approval. The change migrates to GitHub Container Registry (GHCR), making containers publicly accessible and enabling CI to run on fork PRs. Containers built: https://github.com/orgs/JetBrains/packages?repo_name=skiko Triggers: - Push to master: Automatically builds and publishes all Docker images - Pull requests: Builds images in dry-run mode (no publishing) for verification - Manual workflow dispatch: Option to publish or just build - File changes: Triggers on changes to `skiko/docker/**` or the workflow itself
-
- 27 Jan, 2026 1 commit
-
-
Desmond authored
This PR fixes https://youtrack.jetbrains.com/issue/SKIKO-996 The PixelRef bindings have two mistakes in them: 1. `rowBytes` is defined as a `NativePointer`, whereas it is actually an integer with the number of bytes per row. This is the same as `Bitmap::rowBytes`. 2. It is missing the `pixels` property that actually returns a pointer to the pixel data. See: https://api.skia.org/classSkPixelRef.html
-
- 19 Jan, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 16 Jan, 2026 1 commit
-
-
Ivan Matkov authored
On January 12th `18.4` was removed from GitHub Actions runners See https://github.com/actions/runner-images/issues/13392
-
- 08 Jan, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 07 Jan, 2026 3 commits
-
-
Alexander Maryanovsky authored
-
Elijah Semyonov authored
Fixes [SKIKO-950](https://youtrack.jetbrains.com/issue/SKIKO-950)
-
Alexander Maryanovsky authored
-
- 05 Jan, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 10 Dec, 2025 2 commits
-
-
Oleksandr Karpovich authored
Fixes https://youtrack.jetbrains.com/projects/SKIKO/issues/SKIKO-1040/Web-targets-not-optimal-use-of-FinalizationRegistry-API It improves some microbenhcmarks according to https://github.com/WebKit/JetStream/pull/84#discussion_r2254866128
-
ApoloApps authored
Added some functions to Skia canvas to be able to avoid creating intermediate objects (SkRect, SkRRect, etc) on some hot paths. See [this conversation](https://github.com/JetBrains/compose-multiplatform-core/pull/2543#discussion_r2483008621) for the context of the PR. This is the first step to allow for Compose Ui SkiaBackedCanvas to avoid unnecessary intermediate allocations: 1. https://github.com/JetBrains/compose-multiplatform-core/blob/47af63a3986292608982f421bb345eb0a2032a98/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt#L189 2. https://github.com/JetBrains/compose-multiplatform-core/blob/47af63a3986292608982f421bb345eb0a2032a98/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt#L141 3. https://github.com/JetBrains/compose-multiplatform-core/blob/47af63a3986292608982f421bb345eb0a2032a98/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt#L128 4. https://github.com/JetBrains/compose-multiplatform-core/blob/47af63a3986292608982f421bb345eb0a2032a98/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt#L189 5. https://github.com/JetBrains/compose-multiplatform-core/blob/47af63a3986292608982f421bb345eb0a2032a98/compose/ui/ui-graphics/src/skikoMain/kotlin/androidx/compose/ui/graphics/SkiaBackedCanvas.skiko.kt#L211 among others. **Next steps** -> open pr in Compose Ui to use these more optimized functions -> More optimizations on the Skiko side, Matrixes is a good example, CMP and Skiko are processing Matrixes 2 times, toSkiaMatrix, which basically is the same as a wrapper around FloatArray and then in the toInterop method which copies the array (unavoidable). A good optimization would be to just pass the Compose Matrix underlying `values` property which is a FloatArray that toInterop accepts and so a lot of intermediate objects and transformations could be avoided altogether
-
- 01 Dec, 2025 1 commit
-
-
Victor Kropp authored
-
- 28 Nov, 2025 1 commit
-
-
Victor Kropp authored
Part of [CMP-81](https://youtrack.jetbrains.com/issue/CMP-81) Check Compose repositories for following JetBrains rules and [CMP-82](https://youtrack.jetbrains.com/issue/CMP-82) Make a contribution guide for Compose repositories
-
- 27 Nov, 2025 1 commit
-
-
Igor Demin authored
Partially reverts JetBrains/skiko#1117 (except excluding "Intel(R) HD Graphics 4600") Fixes https://youtrack.jetbrains.com/issue/CMP-9352/Compose-doesnt-work-in-Parallels-Windows11-arm64
-
- 26 Nov, 2025 1 commit
-
-
Sebastian Sellmair authored
## Release notes ### Features - Desktop - Cleanup old unpacked binaries from `~/.skiko`. Use `skiko.data.cleanup.days` to configure the retention period in days
-
- 24 Nov, 2025 1 commit
-
-
Ivan Matkov authored
[SKIKO-1069](https://youtrack.jetbrains.com/issue/SKIKO-1069) [libstdc++.so.6+0xdf9b4] std::__codecvt_utf8_utf16_base::do_unshift It introduces symbol references to `GLIBCXX_3.4.22` (GCC 6.1.0 per [doc](https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html)), which should be fine Binary size of binary is reduced by ~3MB
-