diff --git a/build.mill b/build.mill index 29da45a8..8ef5d489 100644 --- a/build.mill +++ b/build.mill @@ -1,4 +1,4 @@ -//| mill-version: 1.1.9 +//| mill-version: 1.3.0-M1 //| mill-jvm-version: 25 //| mill-jvm-opts: [ "--add-modules", "jdk.incubator.vector", -XX:TrimNativeHeapInterval=60000] //| mvnDeps: @@ -37,7 +37,7 @@ object V: val spire: Dep = mvn"org.typelevel::spire::0.18.0" val laminar: Dep = mvn"com.raquo::laminar::17.2.1" val scalaTags: Dep = mvn"com.lihaoyi::scalatags::0.13.1" - val scalaVersion = "3.8.4" + val scalaVersion = "3.9.0" val munitVersion = "1.3.6" val blas: Dep = mvn"dev.ludovic.netlib:blas:3.2.0" val lapack: Dep = mvn"dev.ludovic.netlib:lapack:3.2.0" diff --git a/vecxt/src-js-native/floatmatrix.scala b/vecxt/src-js-native/floatmatrix.scala index c7f32f5e..b9767d65 100644 --- a/vecxt/src-js-native/floatmatrix.scala +++ b/vecxt/src-js-native/floatmatrix.scala @@ -1,9 +1,10 @@ package vecxt +import scala.annotation.targetName + import vecxt.all.* import vecxt.dimensionExtender.DimensionExtender.* import vecxt.matrix.Matrix -import scala.annotation.targetName object JvmFloatMatrix: extension (m: Matrix[Float]) diff --git a/vecxt/src-js-native/intmatrix.scala b/vecxt/src-js-native/intmatrix.scala index ceb3fc77..f1b178f5 100644 --- a/vecxt/src-js-native/intmatrix.scala +++ b/vecxt/src-js-native/intmatrix.scala @@ -1,8 +1,9 @@ package vecxt +import scala.annotation.targetName + import vecxt.dimensionExtender.DimensionExtender.* import vecxt.matrix.Matrix -import scala.annotation.targetName object JvmIntMatrix: extension (m: Matrix[Int]) diff --git a/vecxt/src-js/doublearrays.scala b/vecxt/src-js/doublearrays.scala index f5855ee2..3d919fa8 100644 --- a/vecxt/src-js/doublearrays.scala +++ b/vecxt/src-js/doublearrays.scala @@ -4,7 +4,6 @@ import scala.scalajs.js import scala.scalajs.js.typedarray.Float64Array import vecxt.BooleanArrays.* - import vecxt.matrix.Matrix object arrayUtil: diff --git a/vecxt/src-js/floatarrays.scala b/vecxt/src-js/floatarrays.scala index 1146f3a4..bb1bb177 100644 --- a/vecxt/src-js/floatarrays.scala +++ b/vecxt/src-js/floatarrays.scala @@ -5,7 +5,6 @@ import scala.scalajs.js import scala.scalajs.js.typedarray.Float32Array import vecxt.BooleanArrays.trues - import vecxt.matrix.Matrix object floatarrays: diff --git a/vecxt/src-js/floatmatrix.scala b/vecxt/src-js/floatmatrix.scala index 9d4010f2..9f5253c9 100644 --- a/vecxt/src-js/floatmatrix.scala +++ b/vecxt/src-js/floatmatrix.scala @@ -1,11 +1,10 @@ package vecxt +import scala.annotation.targetName import scala.scalajs.js.JSConverters.* import scala.scalajs.js.typedarray.Float32Array -import vecxt.MatrixInstance.* import vecxt.matrix.* -import scala.annotation.targetName object JsFloatMatrix: diff --git a/vecxt/src-jvm/doublearrays.scala b/vecxt/src-jvm/doublearrays.scala index 0ba1368e..9c602824 100644 --- a/vecxt/src-jvm/doublearrays.scala +++ b/vecxt/src-jvm/doublearrays.scala @@ -5,7 +5,6 @@ import scala.reflect.ClassTag import vecxt.annotations.AllocFree import vecxt.annotations.HotPath import vecxt.annotations.Thin - import vecxt.matrix.Matrix import dev.ludovic.netlib.blas.JavaBLAS.getInstance as blas diff --git a/vecxt/src-jvm/floatarrays.scala b/vecxt/src-jvm/floatarrays.scala index 905e236c..1036236c 100644 --- a/vecxt/src-jvm/floatarrays.scala +++ b/vecxt/src-jvm/floatarrays.scala @@ -6,7 +6,6 @@ import scala.reflect.ClassTag import vecxt.annotations.AllocFree import vecxt.annotations.HotPath import vecxt.annotations.Thin - import vecxt.matrix.Matrix import dev.ludovic.netlib.blas.JavaBLAS.getInstance as blas diff --git a/vecxt/src-jvm/floatmatrix.scala b/vecxt/src-jvm/floatmatrix.scala index 6ade50ab..32b947b5 100644 --- a/vecxt/src-jvm/floatmatrix.scala +++ b/vecxt/src-jvm/floatmatrix.scala @@ -1,13 +1,14 @@ package vecxt +import scala.annotation.targetName import scala.reflect.ClassTag import vecxt.all.* import vecxt.annotations.AllocFree import vecxt.dimensionExtender.DimensionExtender.* + import dev.ludovic.netlib.blas.JavaBLAS.getInstance as blas import jdk.incubator.vector.* -import scala.annotation.targetName object JvmFloatMatrix: diff --git a/vecxt/src-jvm/intarrays.scala b/vecxt/src-jvm/intarrays.scala index 5398918d..b19c96f1 100644 --- a/vecxt/src-jvm/intarrays.scala +++ b/vecxt/src-jvm/intarrays.scala @@ -1,5 +1,7 @@ package vecxt +import scala.annotation.targetName + import vecxt.annotations.AllocFree import vecxt.annotations.HotPath import vecxt.annotations.Thin @@ -10,7 +12,6 @@ import jdk.incubator.vector.FloatVector import jdk.incubator.vector.IntVector import jdk.incubator.vector.VectorOperators import jdk.incubator.vector.VectorSpecies -import scala.annotation.targetName object intarrays: diff --git a/vecxt/src-jvm/intmatrix.scala b/vecxt/src-jvm/intmatrix.scala index 8d59a492..74418f4b 100644 --- a/vecxt/src-jvm/intmatrix.scala +++ b/vecxt/src-jvm/intmatrix.scala @@ -1,12 +1,14 @@ package vecxt +import scala.annotation.targetName + +import vecxt.MatrixInstance.* import vecxt.dimensionExtender.DimensionExtender.* import vecxt.intarrays.* import vecxt.matrix.* -import vecxt.MatrixInstance.* + import jdk.incubator.vector.IntVector import jdk.incubator.vector.VectorMask -import scala.annotation.targetName object JvmIntMatrix: extension (m: Matrix[Int]) diff --git a/vecxt/src-native/doublearrays.scala b/vecxt/src-native/doublearrays.scala index 86b154d2..5f6afc72 100644 --- a/vecxt/src-native/doublearrays.scala +++ b/vecxt/src-native/doublearrays.scala @@ -6,7 +6,6 @@ import scala.scalanative.unsafe.* import org.ekrich.blas.unsafe.* import vecxt.BooleanArrays.trues - import vecxt.matrix.Matrix object doublearrays: diff --git a/vecxt/src-native/floatarrays.scala b/vecxt/src-native/floatarrays.scala index 116631e4..132329f2 100644 --- a/vecxt/src-native/floatarrays.scala +++ b/vecxt/src-native/floatarrays.scala @@ -6,7 +6,6 @@ import scala.scalanative.unsafe.* import org.ekrich.blas.unsafe.* import vecxt.BooleanArrays.trues - import vecxt.matrix.Matrix object floatarrays: diff --git a/vecxt/src-native/floatmatrix.scala b/vecxt/src-native/floatmatrix.scala index bdc878b6..999c89df 100644 --- a/vecxt/src-native/floatmatrix.scala +++ b/vecxt/src-native/floatmatrix.scala @@ -1,12 +1,11 @@ package vecxt +import scala.annotation.targetName import scala.scalanative.unsafe.* import org.ekrich.blas.unsafe.blas import org.ekrich.blas.unsafe.blasEnums -import vecxt.MatrixInstance.* import vecxt.matrix.* -import scala.annotation.targetName object NativeFloatMatrix: diff --git a/vecxt/src/dimMatCheck.scala b/vecxt/src/dimMatCheck.scala index 108340ab..20cbe805 100644 --- a/vecxt/src/dimMatCheck.scala +++ b/vecxt/src/dimMatCheck.scala @@ -1,8 +1,9 @@ package vecxt +import scala.annotation.targetName + import vecxt.MatrixInstance.* import vecxt.matrix.* -import scala.annotation.targetName object dimMatCheck: inline def apply[A](a: Matrix[A], b: Matrix[A]) = diff --git a/vecxt/src/floatmatrix.scala b/vecxt/src/floatmatrix.scala index cbfb66f5..e77ca333 100644 --- a/vecxt/src/floatmatrix.scala +++ b/vecxt/src/floatmatrix.scala @@ -1,11 +1,11 @@ package vecxt +import scala.annotation.targetName + import vecxt.MatrixInstance.* import vecxt.matrix.* import vecxt.matrixUtil.* -import scala.annotation.targetName - /** Cross-platform, non-SIMD `Matrix[Float]` operations, the `Float` counterpart of `DoubleMatrix`. Platform-specific * SIMD/BLAS-backed operations (e.g. `matmul`, scalar `*`/`+`, comparisons) live in `JvmFloatMatrix` / `JsFloatMatrix` * / `NativeFloatMatrix` instead - this file only adds what none of those three currently define, to avoid ambiguous diff --git a/vecxt/src/ndarrayFloatOps.scala b/vecxt/src/ndarrayFloatOps.scala index 1849a0a9..b8b269ac 100644 --- a/vecxt/src/ndarrayFloatOps.scala +++ b/vecxt/src/ndarrayFloatOps.scala @@ -1,8 +1,8 @@ package vecxt -import vecxt.annotations.HotPath import scala.annotation.targetName +import vecxt.annotations.HotPath import vecxt.broadcast.* import vecxt.ndarray.* import vecxt.ndarrayOps.sameAndContiguousMemoryLayout diff --git a/vecxt/src/ndarrayIntOps.scala b/vecxt/src/ndarrayIntOps.scala index b8e7546c..15c6cec7 100644 --- a/vecxt/src/ndarrayIntOps.scala +++ b/vecxt/src/ndarrayIntOps.scala @@ -1,8 +1,8 @@ package vecxt -import vecxt.annotations.HotPath import scala.annotation.targetName +import vecxt.annotations.HotPath import vecxt.broadcast.* import vecxt.ndarray.* diff --git a/vecxt/src/ndarrayOps.scala b/vecxt/src/ndarrayOps.scala index 1789158c..9ddd9daa 100644 --- a/vecxt/src/ndarrayOps.scala +++ b/vecxt/src/ndarrayOps.scala @@ -2,9 +2,8 @@ package vecxt import scala.reflect.ClassTag -import vecxt.annotations.Thin - import vecxt.IntArraysX.* +import vecxt.annotations.Thin import vecxt.ndarray.* import vecxt.rangeExtender.MatrixRange.* diff --git a/vecxt/test/src-native/boundsCheck.scala b/vecxt/test/src-native/boundsCheck.scala index d02f4b59..0a0864d3 100644 --- a/vecxt/test/src-native/boundsCheck.scala +++ b/vecxt/test/src-native/boundsCheck.scala @@ -1,6 +1,5 @@ package vecxt -import scala.util.chaining.* import doublearrays.* class BoundsCheckSuite extends munit.FunSuite: diff --git a/vecxt/test/src/array.test.scala b/vecxt/test/src/array.test.scala index 759b156c..7efe3976 100644 --- a/vecxt/test/src/array.test.scala +++ b/vecxt/test/src/array.test.scala @@ -1,6 +1,5 @@ package vecxt -import scala.util.chaining.* import all.* class ArrayExtensionSuite extends munit.FunSuite: diff --git a/vecxt/test/src/update.test.scala b/vecxt/test/src/update.test.scala index 34f82a9c..89cf99d0 100644 --- a/vecxt/test/src/update.test.scala +++ b/vecxt/test/src/update.test.scala @@ -1,6 +1,5 @@ package vecxt -import scala.util.chaining.* import matrix.* import doublearrays.* import MatrixHelper.* diff --git a/vecxt/test/src/zeroWhere.test.scala b/vecxt/test/src/zeroWhere.test.scala index ed02df67..a7f225d3 100644 --- a/vecxt/test/src/zeroWhere.test.scala +++ b/vecxt/test/src/zeroWhere.test.scala @@ -1,6 +1,5 @@ package vecxt -import scala.util.chaining.* import all.* class ZeroWhereSuite extends munit.FunSuite: diff --git a/vecxt_io/src-jvm-native/MatrixIO.scala b/vecxt_io/src-jvm-native/MatrixIO.scala index 799d5488..45711941 100644 --- a/vecxt_io/src-jvm-native/MatrixIO.scala +++ b/vecxt_io/src-jvm-native/MatrixIO.scala @@ -1,10 +1,11 @@ package vecxt_io -import vecxt.all.* import scala.annotation.targetName import scala.math.Numeric import scala.reflect.ClassTag +import vecxt.all.* + /** Matrix CSV serialization: each line stores one matrix row. */ object MatrixIO: private inline def dropLeadingRows(lines: Seq[String], dropRows: Int): Seq[String] = diff --git a/vecxt_re/src-jvm/TrendAnalysis.scala b/vecxt_re/src-jvm/TrendAnalysis.scala index d7069188..6413955f 100644 --- a/vecxt_re/src-jvm/TrendAnalysis.scala +++ b/vecxt_re/src-jvm/TrendAnalysis.scala @@ -1,9 +1,8 @@ package vecxt_re import org.apache.commons.numbers.gamma.LogGamma - -import org.apache.commons.statistics.distribution.FDistribution import org.apache.commons.numbers.gamma.RegularizedBeta +import org.apache.commons.statistics.distribution.FDistribution import org.apache.commons.statistics.distribution.NormalDistribution /** Result of fitting a GLM trend model: log(μ) = β₀ + β₁·year diff --git a/vecxt_re/src/LossMatrix.scala b/vecxt_re/src/LossMatrix.scala index 99dc886d..4e3b41dd 100644 --- a/vecxt_re/src/LossMatrix.scala +++ b/vecxt_re/src/LossMatrix.scala @@ -1,12 +1,11 @@ package vecxt_re +import vecxt.all.> import vecxt.all.Matrix -import vecxt.dimensionExtender.DimensionExtender.Dimension -import vecxt.DoubleMatrix.reduceAlongDimension import vecxt.all.mean import vecxt.all.sum -import vecxt.all.> import vecxt.all.trues +import vecxt.dimensionExtender.DimensionExtender.Dimension /** The assumption here. * diff --git a/vecxt_re/src/NamedRecord.scala b/vecxt_re/src/NamedRecord.scala index 842e19e2..7b5b671c 100644 --- a/vecxt_re/src/NamedRecord.scala +++ b/vecxt_re/src/NamedRecord.scala @@ -1,7 +1,14 @@ package vecxt_re -import scala.NamedTuple.{AnyNamedTuple, DropNames, NamedTuple, Names} -import scala.compiletime.{constValue, constValueTuple, erasedValue, error, summonFrom} +import scala.NamedTuple.AnyNamedTuple +import scala.NamedTuple.DropNames +import scala.NamedTuple.NamedTuple +import scala.NamedTuple.Names +import scala.compiletime.constValue +import scala.compiletime.constValueTuple +import scala.compiletime.erasedValue +import scala.compiletime.error +import scala.compiletime.summonFrom /** Compile-time helpers for accepting a named tuple by field name rather than by field position. * diff --git a/vecxt_re/src/PortfolioCalc.scala b/vecxt_re/src/PortfolioCalc.scala index 90053ecf..38233f45 100644 --- a/vecxt_re/src/PortfolioCalc.scala +++ b/vecxt_re/src/PortfolioCalc.scala @@ -1,7 +1,9 @@ package vecxt_re -import scala.NamedTuple.NamedTuple import java.time.LocalDate + +import scala.NamedTuple.NamedTuple + import vecxt.all.* /** Portfolio level calculations over a collection of positions. diff --git a/vecxt_re/src/PositionCalculations.scala b/vecxt_re/src/PositionCalculations.scala index b9f4d095..450ddcf5 100644 --- a/vecxt_re/src/PositionCalculations.scala +++ b/vecxt_re/src/PositionCalculations.scala @@ -2,6 +2,7 @@ package vecxt_re import java.time.LocalDate import java.time.temporal.ChronoUnit + import vecxt.all.- object PositionCalculations: diff --git a/vecxtensions/src-js/matmul.scala b/vecxtensions/src-js/matmul.scala index 3e6ed72b..dac4e7a3 100644 --- a/vecxtensions/src-js/matmul.scala +++ b/vecxtensions/src-js/matmul.scala @@ -3,7 +3,6 @@ package vecxtensions import scala.reflect.ClassTag import vecxt.* - import vecxt.all.* import spire.algebra.Ring diff --git a/vecxtensions/src-jvm/matmul.scala b/vecxtensions/src-jvm/matmul.scala index 3e6ed72b..dac4e7a3 100644 --- a/vecxtensions/src-jvm/matmul.scala +++ b/vecxtensions/src-jvm/matmul.scala @@ -3,7 +3,6 @@ package vecxtensions import scala.reflect.ClassTag import vecxt.* - import vecxt.all.* import spire.algebra.Ring