Lunatech Scala 2 To Scala3 Course Versions Save

Lunatech course - "Moving forward from Scala 2 to Scala 3"

3.0.0-RC2-v0

3 years ago

3.0.0-RC1-v0

3 years ago

3.0.0-M3-v0

3 years ago

This release bump the Scala version to 3.0.0-M3, which is the Scala 3.0.0 Developer Preview release. This is a major milestone as a prerelease marks a stabilisation of the language syntax. The M3 release will be followed by the first release candidate (RC1).

See the 3.0.0-M3 blog post for more details on the release.

The impact of the 3.0.0-M3 release on this course is found in the syntax change in given instances with the drop of the as keyword and the change to using with. See the relevant doc page for more details.

Regression: a workaround for Scala 3.0.0-M3 issue 10857 see issue #73

3.0.0-M2-v0

3 years ago

Changes in this release:

  • Move from Scala 3.0.0-M1 to scala-3.0.0-M2
  • The Eql typeclass has been renamed CanEqual #10449
  • Updated slide deck: changes in first chapter to reflect the current state of development of the Scala 3 compiler (scala-3.0.0-M2)

3.0.0-M1-v0

3 years ago

Changes in this release:

0.27.0-RC1-v0

3 years ago

Changes in this release:

  • Update Dotty version from 0.25.0-RC2 to 0.27.0-RC1
  • Most notable change as far as Dotty is concerned is the new (simplified) syntax for extension methods
    • note that in 0.27.0, the previous extension method syntax is still supported but is scheduled to be removed in 0.28.0
  • A switch to Significant Indentation Based Syntax on the course slides and all exercises except for exercises 0, 1, and 2

0.25.0-RC2-v0

3 years ago

Changes in this release:

  • Update Dotty version from 0.24.0 to 0.25.0-RC2
  • Change testing framework from ScalaTest to MUnit
    • Rename test classes to reflect switch to MUnit
  • Update exercise instructions for the Dotty new control syntax and indentation based syntax
  • Adapt exercise instructions to account for utilisation of git
  • The studentified repository is now generated as a git repository This makes it easier for students to inspect changes in code that are the result of dotc code re-writes

NOTE: the slide deck is unchanged from the previous release

IDE support:

  • VCS with Metals v0.9.1 has support for 0.25.0-RC2
  • IntelliJ with Scala Plugin nightly build

0.24.0-v2

3 years ago

The default branch of this repository was renamed to main. If you have a local clone or fork of the repository, please execute the following commands in this clone/fork to apply this name change:

$ git checkout exercises-master
$ git branch -m exercises-master main
$ git fetch upstream
$ git branch --unset-upstream
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

Changes in this release:

  • The slide deck hasn’t changed with respect to the previous release
  • Bump dotty and Akka versions

0.24.0-RC1-v1

3 years ago

Changes in this release:

  • Code reformatting across the board starting with applying scalafmt in exercise 0 and then carrying it forward using linearize/delinearize and interactive rebasing.
  • Eliminated unnecessary pattern matching in exercise 9 (escaped our attention while committing...).
  • scalafmt hasn't been added to the project for an obvious reason: as most exercises use new Dotty syntax, scalafmt is not going to be very helpful as it doesn't (yet) support Dotty's syntax. I include the scalafmt config at the end of the release notes.
  • The slide deck hasn't changed with respect to the previous release
  • Bump versions of the Dotty sbt plugin and sbt itself.

scalafmt configuration used to reformat exercise 0 (note that some manual reformatting was applied afterwards (specifically in messages sent to actors using the tell (!) method.

$ cat .scalafmt.conf
version = "2.5.3"

align.preset                        = none
align.openParenCallSite             = true
align.openParenDefnSite             = true
//align.multiline                     = true
rewrite.rules                       = [AvoidInfix,
                                       RedundantBraces,
                                       RedundantParens,
                                       SortImports,
                                       PreferCurlyFors,
                                       SortModifiers]
rewrite.sortModifiers.order         = ["private", "protected", "implicit",
                                       "final", "sealed", "abstract",
                                       "override", "lazy"]
danglingParentheses                 = true
docstrings                          = ScalaDoc
maxColumn                           = 100
spaces.inImportCurlyBraces          = true
continuationIndent.callSite         = 2
continuationIndent.defnSite         = 2
newlines.alwaysBeforeElseAfterCurlyIf = true
rewrite.neverInfix.excludeFilters   = [
  and
  min
  max
  until
  to
  by
  eq
  ne
  "should.*"
  "contain.*"
  "must.*"
  in
  ignore
  be
  taggedAs
  thrownBy
  synchronized
  have
  when
  size
  only
  noneOf
  oneElementOf
  noElementsOf
  atLeastOneElementOf
  atMostOneElementOf
  allElementsOf
  inOrderElementsOf
  theSameElementsAs
]

0.24.0-RC1-v0

3 years ago