diff --git a/docs/topics/FAQ.md b/docs/topics/FAQ.md
index 4b91796b..26bae03a 100644
--- a/docs/topics/FAQ.md
+++ b/docs/topics/FAQ.md
@@ -195,4 +195,4 @@ workaround, parse the file manually and construct the complex array in code.
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/IO-operations.md b/docs/topics/apiDocs/IO-operations.md
index ce109ab6..c7ffec56 100644
--- a/docs/topics/apiDocs/IO-operations.md
+++ b/docs/topics/apiDocs/IO-operations.md
@@ -174,4 +174,4 @@ The inner array type matches the element dtype.
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/array-creation.md b/docs/topics/apiDocs/array-creation.md
index 764aabf1..8cb4293e 100644
--- a/docs/topics/apiDocs/array-creation.md
+++ b/docs/topics/apiDocs/array-creation.md
@@ -64,4 +64,4 @@ They are grouped by usage pattern:
| Function | Description |
|-----------------|-----------------------------------------------------|
-| [](meshgrid.md) | Coordinate matrices from two 1D coordinate vectors. |
\ No newline at end of file
+| [](meshgrid.md) | Coordinate matrices from two 1D coordinate vectors. |
diff --git a/docs/topics/apiDocs/array-objects.md b/docs/topics/apiDocs/array-objects.md
index b0b0030a..a39e14f4 100644
--- a/docs/topics/apiDocs/array-objects.md
+++ b/docs/topics/apiDocs/array-objects.md
@@ -23,4 +23,4 @@ This section documents the core array object model in Multik.
* **[](dimension.md)** — compile-time dimension markers `D1`–`D4` and `DN`.
* **[](indexing-routines.md)** — `Slice`, `RInt`, `ReadableView`, and the `slice`/`view` helpers.
* **[](iterating.md)** — `NDArrayIterator`, `MultiIndexProgression`, and collection-style operations.
-* **[](IO-operations.md)** — file I/O (CSV, NPY, NPZ) on the JVM and in-memory conversions on all platforms.
\ No newline at end of file
+* **[](IO-operations.md)** — file I/O (CSV, NPY, NPZ) on the JVM and in-memory conversions on all platforms.
diff --git a/docs/topics/apiDocs/array-operations.md b/docs/topics/apiDocs/array-operations.md
index 36e420a1..6d063c0e 100644
--- a/docs/topics/apiDocs/array-operations.md
+++ b/docs/topics/apiDocs/array-operations.md
@@ -61,4 +61,4 @@ See [](universal-operations.md) for the full list.
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/constants.md b/docs/topics/apiDocs/constants.md
index a467aa4b..f8884641 100644
--- a/docs/topics/apiDocs/constants.md
+++ b/docs/topics/apiDocs/constants.md
@@ -51,4 +51,4 @@ val exponential = mk.d1array(5) { E.pow(it.toDouble()) }
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/correlation-analysis.md b/docs/topics/apiDocs/correlation-analysis.md
index 14ac0ef7..dd359a53 100644
--- a/docs/topics/apiDocs/correlation-analysis.md
+++ b/docs/topics/apiDocs/correlation-analysis.md
@@ -23,4 +23,4 @@ NDArrays, including Pearson and Spearman correlation.
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/descriptive-statistics.md b/docs/topics/apiDocs/descriptive-statistics.md
index 9c31d069..63b49802 100644
--- a/docs/topics/apiDocs/descriptive-statistics.md
+++ b/docs/topics/apiDocs/descriptive-statistics.md
@@ -172,4 +172,4 @@ mk.stat.average(values, weights) // 3.25
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/eigenvalues-and-eigenvectors.md b/docs/topics/apiDocs/eigenvalues-and-eigenvectors.md
index 53d51de5..9860399e 100644
--- a/docs/topics/apiDocs/eigenvalues-and-eigenvectors.md
+++ b/docs/topics/apiDocs/eigenvalues-and-eigenvectors.md
@@ -113,4 +113,4 @@ val eigenvalues = mk.linalg.eigVals(a)
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/hypothesis-testing.md b/docs/topics/apiDocs/hypothesis-testing.md
index ad79e331..f864ba4f 100644
--- a/docs/topics/apiDocs/hypothesis-testing.md
+++ b/docs/topics/apiDocs/hypothesis-testing.md
@@ -23,4 +23,4 @@ for NDArrays.
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/linear-algebra.md b/docs/topics/apiDocs/linear-algebra.md
index 12733500..1d0a8a20 100644
--- a/docs/topics/apiDocs/linear-algebra.md
+++ b/docs/topics/apiDocs/linear-algebra.md
@@ -72,4 +72,4 @@ val x = mk.linalg.solve(a, mk.ndarray(mk[1.0, 2.0]))
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/mathematical.md b/docs/topics/apiDocs/mathematical.md
index c58341e7..e9fa7e5f 100644
--- a/docs/topics/apiDocs/mathematical.md
+++ b/docs/topics/apiDocs/mathematical.md
@@ -196,4 +196,4 @@ abs(a) // [3, 1, 0, 2, 5]
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/matrix-norms.md b/docs/topics/apiDocs/matrix-norms.md
index 03452bc0..3f437bd0 100644
--- a/docs/topics/apiDocs/matrix-norms.md
+++ b/docs/topics/apiDocs/matrix-norms.md
@@ -80,4 +80,4 @@ mk.linalg.norm(v) // Frobenius: sqrt(9+16) = 5.0
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/matrix-operations.md b/docs/topics/apiDocs/matrix-operations.md
index bbc5faec..b75a0f7d 100644
--- a/docs/topics/apiDocs/matrix-operations.md
+++ b/docs/topics/apiDocs/matrix-operations.md
@@ -231,4 +231,4 @@ fun main() {
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/ndarray-class.md b/docs/topics/apiDocs/ndarray-class.md
index 02b7a6dc..993f2213 100644
--- a/docs/topics/apiDocs/ndarray-class.md
+++ b/docs/topics/apiDocs/ndarray-class.md
@@ -205,4 +205,4 @@ All operands must have the same shape on every axis except the concatenation axi
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/probability-distributions.md b/docs/topics/apiDocs/probability-distributions.md
index 3bee6c65..e6d9388f 100644
--- a/docs/topics/apiDocs/probability-distributions.md
+++ b/docs/topics/apiDocs/probability-distributions.md
@@ -24,4 +24,4 @@ of common probability distributions (normal, uniform, binomial, etc.).
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/solving-systems-of-equations.md b/docs/topics/apiDocs/solving-systems-of-equations.md
index e72fd7cd..bc06c5ca 100644
--- a/docs/topics/apiDocs/solving-systems-of-equations.md
+++ b/docs/topics/apiDocs/solving-systems-of-equations.md
@@ -96,4 +96,4 @@ val x = mk.linalg.solve(a, b)
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/statistics.md b/docs/topics/apiDocs/statistics.md
index 55957d90..798cf4b2 100644
--- a/docs/topics/apiDocs/statistics.md
+++ b/docs/topics/apiDocs/statistics.md
@@ -44,4 +44,4 @@ mk.stat.average(a) // 3.0 (uniform weights)
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/sum.md b/docs/topics/apiDocs/sum.md
index caf2fccd..b06e5e22 100644
--- a/docs/topics/apiDocs/sum.md
+++ b/docs/topics/apiDocs/sum.md
@@ -61,4 +61,4 @@ b.sum() // 7.0
-
\ No newline at end of file
+
diff --git a/docs/topics/apiDocs/universal-operations.md b/docs/topics/apiDocs/universal-operations.md
index 634c71d7..a47a6fb8 100644
--- a/docs/topics/apiDocs/universal-operations.md
+++ b/docs/topics/apiDocs/universal-operations.md
@@ -116,4 +116,4 @@ conventions. They provide familiar APIs for transforming, filtering, aggregating
-
\ No newline at end of file
+
diff --git a/docs/topics/gettingStarted/installation.md b/docs/topics/gettingStarted/installation.md
index 948dab4c..4e74e9db 100644
--- a/docs/topics/gettingStarted/installation.md
+++ b/docs/topics/gettingStarted/installation.md
@@ -134,4 +134,4 @@ To delve deeper into Kotlin Notebooks, we recommend you read the dedicated post
Datalore
-
\ No newline at end of file
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 20a60111..03de2950 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,7 +1,7 @@
[versions]
kotlin = "2.3.20"
dokka = "2.2.0"
-korro = "0.1.6"
+korro = "0.2.0"
bcv = "0.18.1"
maven-publish = "0.36.0"
commons-csv = "1.14.1"
diff --git a/multik-core/build.gradle.kts b/multik-core/build.gradle.kts
index 27c2c8f7..ddcef3c9 100644
--- a/multik-core/build.gradle.kts
+++ b/multik-core/build.gradle.kts
@@ -21,18 +21,23 @@ kotlin {
}
korro {
- docs = fileTree(rootProject.rootDir) {
- include("README.md")
- include("docs/topics/*.md")
- include("docs/topics/gettingStarted/*md")
- include("docs/topics/userGuide/*md")
- include("docs/topics/apiDocs/*md")
+ docs {
+ from(fileTree(rootProject.rootDir) {
+ include("README.md")
+ include("docs/topics/*.md")
+ include("docs/topics/gettingStarted/*md")
+ include("docs/topics/userGuide/*md")
+ include("docs/topics/apiDocs/*md")
+ })
+ baseDir = rootProject.rootDir
}
- samples = fileTree(project.projectDir) {
- include("src/commonTest/kotlin/samples/*.kt")
- include("src/commonTest/kotlin/samples/docs/*.kt")
- include("src/commonTest/kotlin/samples/docs/userGuide/*.kt")
- include("src/commonTest/kotlin/samples/docs/apiDocs/*.kt")
+ samples {
+ from(fileTree(project.projectDir) {
+ include("src/commonTest/kotlin/samples/*.kt")
+ include("src/commonTest/kotlin/samples/docs/*.kt")
+ include("src/commonTest/kotlin/samples/docs/userGuide/*.kt")
+ include("src/commonTest/kotlin/samples/docs/apiDocs/*.kt")
+ })
}
}
diff --git a/multik-core/src/commonTest/kotlin/samples/docs/userGuide/performanceAndOptimization.kt b/multik-core/src/commonTest/kotlin/samples/docs/userGuide/performanceAndOptimization.kt
index aaff0056..997dab71 100644
--- a/multik-core/src/commonTest/kotlin/samples/docs/userGuide/performanceAndOptimization.kt
+++ b/multik-core/src/commonTest/kotlin/samples/docs/userGuide/performanceAndOptimization.kt
@@ -17,11 +17,13 @@ class PerformanceAndOptimization {
val a = mk.ndarray(mk[mk[1, 2], mk[3, 4]])
val v = a[0] // view
- assertFalse(v.consistent)
+ println("v.consistent is ${v.consistent}") // false
val c = v.deepCopy()
- assertTrue(c.consistent)
+ println("c.consistent is ${c.consistent}") // true
// SampleEnd
+ assertFalse(v.consistent)
+ assertTrue(c.consistent)
}
@Test