Consider making Scala CLI backwards compatible with current scala commands
A list of incompatible options that makes a lot of sense:
-
-classpathdoes not work even if prefixed with-O(how to pass agrs in such case?) -
-dconflicts with Scala CLI dependencies - do we really need to emit classes from REPL? -
-color- we have it on by default if I am not mistaken -
-encoding -
-explain,-explain-types(-explaintypesfrom Scala 2) -
-feature -
-help- conflicts with our help -
-language(-language:<features>from Scala 2) -
-nowarn -
-print-lines -
-release(-targetfrom Scala 2) -
-source -
-sourcepathand-sourceroot(-rootdirfrom Scala 2) but I have mixed feeling about those -
-unchecked -
@<file>- provide a file with arguments and options
A list of options that I can see some usage but proabaly are not critical (so we can just fallback to require -O prefix)
-
-old-syntax -
-new-syntax -
-no-indent -
-from-tasty -
-javabootclasspath,-bootclasspath(-nobootcpand-toolcpfrom Scala 2)- not sure if we can support both -
-scalajs,-scalajs-genStaticForwardersForNonTopLevelObjects,-scalajs-mapSourceURI- I was under impression that REPL does not support Scala JS but even if so I think--jsand related flags has superior UX -
-uniqid,-verbose- debugging REPL is instead for powerusers and I think we can expect them to prefix these options with-O -
-dependencyfile- not supported in Scala 3 -
-no-specialization- not supported in Scala 3 -
-opt:<optimizations>,-opt-inline-from:<patterns>,-opt-warnings:<warnings>- not supported in Scala 3 -
-print- not supported in Scala 3 -
-usemanifestcp- not supported in Scala 3
A list of options that I do not see a use case in REPL:
-
-indent- do not print indent based version of the provided code also when running -
-print-tasty- do not print TASTY from provided code -
-project-url -
-rewrite- no effect also when running code from file -
-semanticdb-target- does not seem to have any effect
A list of options I have no idea what they do:
-
-extdirs -
-javaextdirs
relevant: https://github.com/VirtusLab/scala-cli/pull/1313
Thank you for going over the list :) There is one thing that I am not sure to understand: you assessed the relevance of every option in the context of the REPL, but I think these options in the old scala command were also active when running a program, not just in the REPL mode?
I tried to assest them also in the contested of running the program and in many cases I was surprised that given option has no effect (e.g. -print-tasty).
Also, I changed the issue a bit to consider what should be added and not to just add 100% of the options listed (even from the main category).
This has mostly been addressed already, so I'm closing the ticket.
Most popular scalac options which make sense in the context of scala-cli are already available without -O.
Aliases have been added where clashes with native scala-cli options happened.
Documentation has been added in #1503
Other relevant PRs: #1501, #1413, #1369, #1340, #1313