- 04 May, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1099](https://youtrack.jetbrains.com/issue/SKIKO-1099) Update skia to m148
-
- 27 Apr, 2026 1 commit
-
-
Hubert Błaszczyk authored
[SKIKO-1130](https://youtrack.jetbrains.com/issue/SKIKO-1130) Update skia to m147 and its consumption
-
- 24 Apr, 2026 1 commit
-
-
Bogdan Mitrović authored
PathSegment.hashCode() threw RuntimeException("Unreachable") for PathVerb.CLOSE segments when used in hash-based collections such as intersect(). Added CLOSE case consistent with what equals() checks for CLOSE segments. Also removed the else branch since all PathVerb values are now handled. Added a test which fails unless CLOSE is handled in hashCode(). ## Testing Ran test on awt locally — the new test `closedPathIntersectTest` fails before the fix and passes after. ## Release Notes Fix crash when using closed paths in hash-based collections such as `intersect()` Fixes: [SKIKO-1038](https://youtrack.jetbrains.com/issue/SKIKO-1038)
-
- 23 Apr, 2026 2 commits
-
-
Sebastiano Poggi authored
This PR fixes Metal Swing offscreen rendering behavior when the active `GraphicsConfiguration` is not compatible with JBR shared textures, and adds focused regression tests for the fallback path. `AcceleratedSwingPainter` now explicitly falls back to software painting for incompatible graphics configurations (for example, offscreen/`BufferedImage` paint flows). ## Changes - Introduced `SharedTexturesAdapter` as a small abstraction over JBR shared textures so production code keeps using JBR while tests can inject a fake adapter. - Updated `MetalSwingRedrawer` to create and pass the shared texture adapter into `AcceleratedSwingPainter`. - Updated `AcceleratedSwingPainter` to support test injection and preserve fallback behaviour for incompatible graphics configurations. - Added minimal test hooks in `AcceleratedSwingPainter` with `org.jetbrains.annotations.VisibleForTesting` so tests can validate cache-reset behaviour. - Added `org.jetbrains:annotations` as an `awtMain` dependency to use `VisibleForTesting`. I can undo this and remove the annotation, but I think it's worth keeping... - Added `AcceleratedSwingPainterTest` covering: - fallback is used for incompatible `GraphicsConfiguration` - accelerated cache state is cleared on fallback - `dispose()` delegates to fallback painter --- Fixes https://youtrack.jetbrains.com/issue/SKIKO-1082 --------- Co-authored-by:
Igor Demin <igordmn@users.noreply.github.com>
-
Andrei Salavei authored
Add the step to patch all C/C++ symbols for iOS and tvOS targets to prevent symbol clashes when the user's app uses another skia library, or one of its dependencies. Fixes: https://youtrack.jetbrains.com/issue/CMP-6845/How-to-use-compose-multiplatform-on-iOS-in-app-with-lib-skia-dependency --------- Co-authored-by:
Copilot <175728472+Copilot@users.noreply.github.com>
-
- 22 Apr, 2026 1 commit
-
-
Konstantin authored
-
- 17 Apr, 2026 1 commit
-
-
Ivan Matkov authored
-
- 09 Apr, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1098](https://youtrack.jetbrains.com/issue/SKIKO-1098) Update skia to m146
-
- 07 Apr, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1067](https://youtrack.jetbrains.com/issue/SKIKO-1067) Build Skiko with Kotlin 2.3.0
-
- 24 Mar, 2026 1 commit
-
-
Ivan Matkov authored
[SKIKO-1095](https://youtrack.jetbrains.com/issue/SKIKO-1095) Move build scripts from `skia-pack` to `skia` fork https://github.com/JetBrains/skia/pull/15
-
- 23 Mar, 2026 1 commit
-
-
Shagen Ogandzhanian authored
This is backport of https://github.com/JetBrains/skiko/pull/1173 to Kotlin 2.2.20 --------- Co-authored-by:
Ivan Matkov <ivan.matkov@jetbrains.com>
-
- 13 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 06 Mar, 2026 1 commit
-
-
ApoloApps authored
Improve performance of critical paths by preventing allocating intermediate objects like lists, arrays,.... (chunked, map, to*Collection) --------- Co-authored-by:
Ivan Matkov <matkov.ivan@gmail.com> Co-authored-by:
Alexander Maryanovsky <msasha@gmail.com>
-
- 05 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 03 Mar, 2026 1 commit
-
-
Alexander Maryanovsky authored
-
- 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
-