Skip to content

Commit ef3d00a

Browse files
committed
Memory release fix, Kotlin upgrade
1 parent a5a532b commit ef3d00a

File tree

13 files changed

+45
-275
lines changed

13 files changed

+45
-275
lines changed

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ kotlin.code.style=official
33
GROUP=co.touchlab
44

55
VERSION_NAME=1.2.3
6-
KOTLIN_VERSION=1.8.10
6+
KOTLIN_VERSION=1.9.20-RC2
77

88
kotlin.native.ignoreDisabledTargets=true
99

@@ -26,3 +26,6 @@ POM_DEVELOPER_URL=https://touchlab.co/
2626

2727
kotlin.mpp.enableCInteropCommonization=true
2828
kotlin.mpp.commonizerLogLevel=info
29+
kotlin.mpp.applyDefaultHierarchyTemplate=false
30+
kotlin.native.cacheKind.macosArm64=none
31+
kotlin.native.cacheKind.iosSimulatorArm64=none

gradle/gradle-mvn-mpp-push.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ publishing {
9797
}
9898

9999
tasks.register('publishWindows') {
100-
dependsOn 'publishMingwX86PublicationToMavenRepository'
101100
dependsOn 'publishMingwX64PublicationToMavenRepository'
102101
}
103102

sqliter-driver/build.gradle.kts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,22 @@ fun configInterop(target: org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTar
2626
HostManager.hostIsMingw -> listOf("-linker-options", "-lsqlite3 -Lc:\\msys64\\mingw64\\lib")
2727
else -> listOf("-linker-options", "-lsqlite3")
2828
}
29+
kotlinNativeCompilation.kotlinOptions.freeCompilerArgs += listOf(
30+
"-opt-in=kotlin.experimental.ExperimentalNativeApi",
31+
"-opt-in=kotlinx.cinterop.ExperimentalForeignApi",
32+
"-opt-in=kotlinx.cinterop.BetaInteropApi",
33+
"-Xexpect-actual-classes",
34+
)
2935
}
3036
}
3137

3238
kotlin {
3339
val knTargets = listOf(
34-
macosX64(),
35-
iosX64(),
36-
iosArm64(),
37-
iosArm32(),
40+
macosX64(),
41+
iosX64(),
42+
iosArm64(),
3843
watchosArm32(),
3944
watchosArm64(),
40-
watchosX86(),
4145
watchosX64(),
4246
tvosArm64(),
4347
tvosX64(),
@@ -47,8 +51,7 @@ kotlin {
4751
tvosSimulatorArm64(),
4852
watchosDeviceArm64(),
4953
mingwX64(),
50-
mingwX86(),
51-
linuxX64()
54+
linuxX64(),
5255
)
5356

5457
knTargets
@@ -87,10 +90,6 @@ kotlin {
8790
dependsOn(mingwMain)
8891
}
8992

90-
val mingwX86Main = sourceSets.maybeCreate("mingwX86Main").apply {
91-
dependsOn(mingwMain)
92-
}
93-
9493
knTargets.forEach { target ->
9594
when {
9695
target.name.startsWith("mingw") -> {

sqliter-driver/buildold.gradle

Lines changed: 0 additions & 197 deletions
This file was deleted.
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package co.touchlab.sqliter.interop
22

3-
import kotlinx.cinterop.*
3+
import kotlinx.cinterop.ByteVar
4+
import kotlinx.cinterop.CPointer
5+
import kotlinx.cinterop.autoreleasepool
46
import platform.Foundation.NSString
57
import platform.Foundation.create
68

7-
actual inline fun bytesToString(bv:CPointer<ByteVar>):String = NSString.create(uTF8String = bv).toString()
9+
actual inline fun bytesToString(bv: CPointer<ByteVar>): String = autoreleasepool {
10+
NSString.create(uTF8String = bv).toString()
11+
}

sqliter-driver/src/mingwX86Main/kotlin/co/touchlab/sqliter/concurrency/Lock.kt

Lines changed: 0 additions & 54 deletions
This file was deleted.

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/interop/ActualSqliteStatement.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import platform.posix.usleep
66

77
expect inline fun bytesToString(bv:CPointer<ByteVar>):String
88

9+
private const val EMPTY_STRING = ""
10+
911
internal class ActualSqliteStatement(private val db: SqliteDatabase, private val stmtPointer: SqliteStatementPointer) :
1012
SqliteStatement {
1113

@@ -21,7 +23,7 @@ internal class ActualSqliteStatement(private val db: SqliteDatabase, private val
2123

2224
override fun columnGetString(columnIndex: Int): String =
2325
sqlite3_column_text(stmtPointer, columnIndex)?.reinterpret<ByteVar>()?.let { bytesToString(it) }
24-
?: ""
26+
?: EMPTY_STRING
2527

2628
override fun columnGetBlob(columnIndex: Int): ByteArray {
2729
val blobSize = sqlite3_column_bytes(stmtPointer, columnIndex)

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/interop/Types.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ package co.touchlab.sqliter.interop
33
import cnames.structs.sqlite3_stmt
44
import kotlinx.cinterop.CPointer
55

6-
typealias SqliteDatabasePointer = CPointer<co.touchlab.sqliter.sqlite3.sqlite3>
6+
typealias SqliteDatabasePointer = CPointer<cnames.structs.sqlite3>
77
typealias SqliteStatementPointer = CPointer<sqlite3_stmt>

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/native/NativeDatabaseConnection.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import co.touchlab.sqliter.concurrency.withLock
2222
import co.touchlab.sqliter.interop.SqliteDatabase
2323
import co.touchlab.sqliter.interop.SqliteDatabasePointer
2424
import co.touchlab.sqliter.util.maybeFreeze
25-
import kotlin.native.concurrent.AtomicInt
26-
import kotlin.native.concurrent.AtomicReference
25+
import kotlin.concurrent.AtomicInt
26+
import kotlin.concurrent.AtomicReference
2727

2828
class NativeDatabaseConnection internal constructor(
2929
val dbManager: NativeDatabaseManager,

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/native/NativeDatabaseManager.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import co.touchlab.sqliter.concurrency.withLock
2424
import co.touchlab.sqliter.interop.OpenFlags
2525
import co.touchlab.sqliter.interop.dbOpen
2626
import co.touchlab.sqliter.util.maybeFreeze
27-
import kotlin.native.concurrent.AtomicInt
27+
import kotlin.concurrent.AtomicInt
2828

2929
class NativeDatabaseManager(private val path:String,
3030
override val configuration: DatabaseConfiguration
@@ -108,3 +108,7 @@ class NativeDatabaseManager(private val path:String,
108108
configuration.lifecycleConfig.onCloseConnection(connection)
109109
}
110110
}
111+
112+
fun AtomicInt.increment() {
113+
incrementAndGet()
114+
}

0 commit comments

Comments
 (0)