Skip to content

Commit 7bbb747

Browse files
committed
chore: misc updated to ffm and otel
1 parent 42f3bb9 commit 7bbb747

File tree

3 files changed

+32
-23
lines changed

3 files changed

+32
-23
lines changed

compose/cmp/src/commonMain/kotlin/ui/Modifier.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ui
22

3+
import androidx.compose.runtime.Composable
34
import androidx.compose.ui.Modifier
45
import androidx.compose.ui.composed
56
import androidx.compose.ui.draw.DrawModifier
@@ -41,7 +42,15 @@ fun Modifier.dashedBorder(strokeWidth: Dp, color: Color, cornerRadius: Dp): Modi
4142
)
4243
}
4344

44-
inline fun Modifier.ifTrue(value: Boolean, builder: Modifier.() -> Modifier) =
45+
@Composable
46+
fun buildModifier(builder: @Composable MutableList<Modifier>.() -> Unit): Modifier {
47+
val modifiers = mutableListOf<Modifier>()
48+
modifiers.builder()
49+
// The first Modifier is the empty, starter Modifier object
50+
return modifiers.fold(Modifier as Modifier) { acc, modifier -> acc then modifier }
51+
}
52+
53+
fun Modifier.ifTrue(value: Boolean, builder: Modifier.() -> Modifier) =
4554
then(if (value) builder() else Modifier)
4655

4756
fun Modifier.flipped() = then(FlippedModifier())

gradle/libs.versions.toml

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ kotlinx-atomicfu = "0.27.0"
2929
kotlinx-coroutines = "1.10.1"
3030
kotlinx-datetime = "0.6.2"
3131
kotlinx-datetime-zoneinfo = "2025a-spi.0.6.2"
32-
kotlinx-serialization = "1.8.0"
33-
kotlinx-rpc = "0.5.1"
32+
kotlinx-serialization = "1.8.1"
33+
kotlinx-rpc = "0.6.0"
3434
kotlinx-collections-immutable = "0.3.8"
3535
kotlinx-lincheck = "2.38"
3636
kotlinx-html = "0.12.0"
@@ -39,7 +39,7 @@ kotlinx-benchmark = "0.4.13"
3939
kotlinx-fuzz = "0.2.2"
4040
kotlinx-metadata = "0.9.0"
4141
kotlinx-reflect-lite = "1.1.0"
42-
kotlin-wrappers = "2025.3.26"
42+
kotlin-wrappers = "2025.4.3"
4343
kotlin-redacted = "1.13.0"
4444
kotlin-serviceloader = "0.0.15"
4545
kotlinx-multik = "0.2.3"
@@ -54,14 +54,15 @@ akkurate = "0.11.0"
5454
kaml = "0.74.0"
5555
snakeyaml-engine-kmp = "3.1.1"
5656
konsist = "0.17.3"
57+
decoroutinator = "2.4.8"
5758
spring-boot = "3.4.4"
5859
spring-depmgmt = "1.1.7"
5960
ktor = "3.1.2"
6061
ktor-cohort = "2.6.2"
6162
otel = "1.48.0"
6263
otel-instr = "2.14.0"
6364
otel-instr-alpha = "2.14.0-alpha"
64-
otel-semconv = "1.30.0"
65+
otel-semconv = "1.32.0"
6566
otel-samplers = "1.45.0-alpha"
6667
elastic-otel = "0.4.0"
6768
okio = "3.10.2"
@@ -72,6 +73,7 @@ zip-prefixer = "0.3.1"
7273
ajalt-mordant = "3.0.2"
7374
ajalt-clikt = "5.0.3"
7475
ajalt-colormath = "3.6.1"
76+
jline = "3.29.0"
7577
classgraph = "4.8.179"
7678
cache4k = "0.14.0"
7779
intellij-coverage = "1.0.766"
@@ -141,7 +143,7 @@ micrometer = "1.14.5"
141143
swagger-ui = "5.17.14"
142144
hoplite = "2.9.0"
143145
config4k = "0.7.0"
144-
shedlock = "6.3.0"
146+
shedlock = "6.3.1"
145147
sherlock = "1.0.3"
146148
sqids = "0.1.0"
147149
tsid = "2.1.4"
@@ -159,7 +161,7 @@ async-profiler = "3.0"
159161
ap-loader-all = "3.0-9"
160162
openjdk-jmc = "9.1.0"
161163
airlift-aircompressor = "2.0.2"
162-
airlift-security = "326"
164+
airlift-security = "327"
163165
directory-keystore = "1.1.1"
164166
maven-mima = "3.0.0-alpha-3"
165167
maven-archeologist = "0.0.10"
@@ -180,7 +182,7 @@ mcp-kotlin = "0.4.0"
180182
mcp4k = "0.3.6"
181183
dflib = "2.0.0-M2"
182184
ldaptive = "2.4.1"
183-
chicory = "1.2.0"
185+
chicory = "1.2.1"
184186
weh-bindings = "0.4"
185187
wasm2class = "0.2"
186188
log4k = "0.40.0"
@@ -192,10 +194,10 @@ jetbrains-compose = "1.8.0-beta01"
192194
jetbrains-compose-viewmodel = "2.9.0-alpha05"
193195
jetbrains-compose-nav = "2.9.0-alpha15"
194196
jetbrains-compose-adaptive = "1.1.0-beta01"
195-
kobweb = "0.20.4"
197+
kobweb = "0.21.0"
196198
detekt = "1.23.8"
197199
detekt-compose-rules = "0.4.22"
198-
compose-hotreload = "1.0.0-alpha03"
200+
compose-hotreload = "1.0.0-alpha04"
199201
compose-icons = "1.1.1"
200202
compose-routing = "0.4.0"
201203
kottie = "2.0.1"
@@ -218,7 +220,7 @@ nmcp = "0.0.9"
218220
nexus-publish = "2.0.0"
219221
vanniktech-publish = "0.31.0"
220222
gradle-publish = "1.3.1"
221-
shadow = "9.0.0-beta11"
223+
shadow = "9.0.0-beta12"
222224
spotless = "7.0.2"
223225
semver-plugin = "0.8.0"
224226
vercraft = "0.5.0"
@@ -233,7 +235,7 @@ github-depgraph = "0.1.0"
233235
github-changelog = "2.2.0"
234236
wire-plugin = "5.3.1"
235237
buildkonfig = "0.17.0"
236-
gmazzo-buildconfig = "5.5.4"
238+
gmazzo-buildconfig = "5.6.1"
237239
cyclonedx-plugin = "1.10.0"
238240
modulegraph = "0.12.0"
239241
npm-publish-plugin = "3.5.3"
@@ -245,10 +247,11 @@ tomlj = "1.1.1"
245247
animalsniffer = "2.0.0"
246248
badass-runtime = "1.13.1-patch-1"
247249
badass-jlink = "3.1.0"
250+
jlink-jib = "0.4.1"
248251
maven-plugin-api = "3.9.9"
249252
maven-plugin-annotations = "3.15.1"
250253
gradlex-maven-plugin = "1.0.3"
251-
typesafe-conventions = "0.6.0-RC1"
254+
typesafe-conventions = "0.6.0"
252255

253256
# Repositories
254257
repo-mvn-central = "https://repo.maven.apache.org/maven2/"
@@ -465,6 +468,7 @@ ajalt-colormath = { module = "com.github.ajalt.colormath:co
465468
ajalt-clikt-core = { module = "com.github.ajalt.clikt:clikt-core" , version.ref = "ajalt-clikt"}
466469
ajalt-clikt = { module = "com.github.ajalt.clikt:clikt" , version.ref = "ajalt-clikt"}
467470
ajalt-clikt-markdown = { module = "com.github.ajalt.clikt:clikt-markdown" , version.ref = "ajalt-clikt"}
471+
jline-terminal-ffm = { module = "org.jline:jline-terminal-ffm" , version.ref = "jline"}
468472
mosaic-runtime = { module = "com.jakewharton.mosaic:mosaic-runtime" , version.ref = "mosaic"}
469473
jgit = { module = "org.eclipse.jgit:org.eclipse.jgit" , version.ref = "jgit" }
470474
jte = { module = "gg.jte:jte" , version.ref = "jte" }
@@ -564,6 +568,7 @@ otel-bom = { module = "io.opentelemetry:opentelemetr
564568
otel-api = { module = "io.opentelemetry:opentelemetry-api" , version.ref = "otel"}
565569
otel-autoconfigure = { module = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure" , version.ref = "otel"}
566570
otel-autoconfigure-spi = { module = "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi" , version.ref = "otel"}
571+
otel-exporter-otlp = { module = "io.opentelemetry:opentelemetry-exporter-otlp" , version.ref = "otel"}
567572
otel-semconv = { module = "io.opentelemetry.semconv:opentelemetry-semconv" , version.ref = "otel-semconv"}
568573
otel-samplers = { module = "io.opentelemetry.contrib:opentelemetry-samplers" , version.ref = "otel-samplers"}
569574

@@ -688,6 +693,7 @@ jetbrains-compose-hotreload = { id = "org.jetbrains.compose.hot-reload"
688693
jetbrains-ktor = { id = "io.ktor.plugin" , version.ref = "ktor" }
689694
jetbrains-exposed = { id = "com.jetbrains.exposed.gradle.plugin" , version.ref = "exposed-plugin" }
690695
jetbrains-dokka = { id = "org.jetbrains.dokka" , version.ref = "kotlin-dokka"}
696+
decoroutinator = { id = "dev.reformator.stacktracedecoroutinator" , version.ref = "decoroutinator"}
691697
graalvm-nativeimage = { id = "org.graalvm.buildtools.native" , version.ref = "graalvm-nativeimage"}
692698
serviceloader-compiler = { id = "app.softwork.serviceloader-compiler" , version.ref = "kotlin-serviceloader" }
693699
kopy = { id = "com.javiersc.kotlin.kopy" , version.ref = "kopy"}
@@ -721,6 +727,7 @@ build-vercraft = { id = "com.akuleshov7.vercraft.plugin-gr
721727
kmbed-plugin = { id = "io.karma.kmbed.kmbed-gradle-plugin" , version.ref = "kmbed" }
722728
badass-jlink = { id = "com.dua3.gradle.jlink" , version.ref = "badass-jlink" }
723729
badass-runtime = { id = "com.dua3.gradle.runtime" , version.ref = "badass-runtime" }
730+
jlink-jib = { id = "com.ryandens.jlink-jib" , version.ref = "jlink-jib" }
724731
gradlex-maven-plugin = { id = "org.gradlex.maven-plugin-development" , version.ref = "gradlex-maven-plugin" }
725732
typesafe-conventions = { id = "dev.panuszewski.typesafe-conventions" , version.ref = "typesafe-conventions" }
726733
wasm2class = { id = "at.released.wasm2class.plugin" , version.ref = "wasm2class" }

shared/src/jvmMain/kotlin/dev/suresh/FFM.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@ package dev.suresh
22

33
import java.lang.foreign.FunctionDescriptor
44
import java.lang.foreign.Linker
5-
import java.lang.foreign.MemorySegment
65
import java.lang.foreign.SymbolLookup
76
import java.lang.invoke.MethodHandle
8-
import kotlin.jvm.optionals.getOrNull
97

108
val LINKER: Linker = Linker.nativeLinker()
119

12-
val SYMBOL_LOOKUP: SymbolLookup by lazy {
13-
val stdlib = LINKER.defaultLookup()
14-
val loaderLookup = SymbolLookup.loaderLookup()
15-
SymbolLookup { name -> loaderLookup.find(name).or { stdlib.find(name) } }
16-
}
10+
/** Symbols loaded via caller's class loader (System.loadLibrary) if found, else from libc */
11+
val SYMBOL_LOOKUP: SymbolLookup by lazy { SymbolLookup.loaderLookup().or(LINKER.defaultLookup()) }
1712

1813
val UNSAFE by lazy {
1914
sun.misc.Unsafe::class.java.getDeclaredField("theUnsafe").run {
@@ -22,11 +17,9 @@ val UNSAFE by lazy {
2217
}
2318
}
2419

25-
fun SymbolLookup.findOrNull(name: String): MemorySegment? = find(name).getOrNull()
26-
2720
fun downcallHandle(
2821
symbol: String,
2922
fdesc: FunctionDescriptor,
3023
vararg options: Linker.Option
3124
): MethodHandle? =
32-
SYMBOL_LOOKUP.findOrNull(symbol).let { LINKER.downcallHandle(it, fdesc, *options) }
25+
SYMBOL_LOOKUP.findOrThrow(symbol).let { LINKER.downcallHandle(it, fdesc, *options) }

0 commit comments

Comments
 (0)