diff --git a/project.scala b/project.scala index 8edf035..ee9d2f7 100644 --- a/project.scala +++ b/project.scala @@ -13,6 +13,8 @@ //> using dep org.slf4j:slf4j-simple:2.0.17 //> using test.dep org.scalatest::scalatest::3.2.19 //> using dep org.typelevel::cats-effect-testing-scalatest::1.6.0 +//> using dep "co.fs2::fs2-core:3.11.0" +//> using dep co.fs2::fs2-io:3.11.0 // sensible defaults for warnings and compiler checks //> using options -deprecation -unchecked -feature diff --git a/src/main/wacc/Main.scala b/src/main/wacc/Main.scala index c29de9d..a778a07 100644 --- a/src/main/wacc/Main.scala +++ b/src/main/wacc/Main.scala @@ -15,6 +15,8 @@ import com.monovore.decline.effect._ import org.typelevel.log4cats.slf4j.Slf4jLogger import org.typelevel.log4cats.Logger +import fs2.Stream + import assemblyIR as asm import cats.data.ValidatedNel import java.io.File @@ -147,8 +149,13 @@ def compileCommandParallel( log: Boolean, outDir: Option[Path] ): IO[ExitCode] = - files - .parTraverse { file => compile(file.toAbsolutePath, outDir, log) } + Stream + .emits(files.toList) + .parEvalMapUnordered(Runtime.getRuntime.availableProcessors()) { file => + compile(file.toAbsolutePath, outDir, log) + } + .compile + .toList .map { exitCodes => exitCodes.filter(_ != 0) match { case Nil => ExitCode.Success diff --git a/wacc-compiler b/wacc-compiler new file mode 100755 index 0000000..9d5ddae Binary files /dev/null and b/wacc-compiler differ diff --git a/wacc-syntax/wacc-compiler b/wacc-syntax/wacc-compiler deleted file mode 100755 index b82298b..0000000 Binary files a/wacc-syntax/wacc-compiler and /dev/null differ