state of the scala 2 union
play

State of the Scala 2 Union Adriaan Moors Scala Team Lead Scala - PowerPoint PPT Presentation

State of the Scala 2 Union Adriaan Moors Scala Team Lead Scala 2.13 Developer survey! scala-lang.org/news/survey-2018.html Apache v2.0! scala-lang.org/news/license-change.html (deadline for any concerns: Aug 10) Library release


  1. State of the Scala 2 Union Adriaan Moors Scala Team Lead

  2. Scala 2.13

  3. Developer survey! scala-lang.org/news/survey-2018.html

  4. Apache v2.0! � scala-lang.org/news/license-change.html (deadline for any concerns: Aug 10)

  5. Library release scala/scala-dev#324 M4 out now M5 early August Final: October

  6. Headlines Simpler collections Smaller core lib Faster compiler Java 9 support (minimal) User-friendliness

  7. Simpler Collections Fix common gotchas Simplify implementation & usage Improved type inference of overloaded HO method Available now (M4)

  8. 2.13.0-M4 upgrade scala/community-builds#710 Thank you, @xuwei-k ! � × 18

  9. Smaller core lib Parallel collections: ✅ compact1 profile: ✅ #6164 Make way for new modules #5677 Looking at you, scala.io, scala.sys

  10. Faster Compiler Optimization Automated Benchmarking & Charting 20% improvement (last 12 months, hot compiler)

  11. User-friendliness Improve tooling Scala Center Better docs Great way to start contributing

  12. Scalafix use for upgrade to 2.14 procedure syntax add sigs for implicits (& non-private members?) collections also, style checking / linting (built on scala.meta's semantic api)

  13. LSP: modern IDE support Dotty presentation compiler TASTY and SemanticDB

  14. BSP / Build tools Bloop (not a build tool) Mill (bazel-ish) Fury (source dependencies) <insert your build tool here>

  15. Typelevel & friends! literal singleton types implicit search type constructor inference

  16. #help-wanted Configurable error reporting Suppress warnings Nicer REPL

  17. Revamp REPL syntax highlighting nicer editing cleaner wrapping improve embeddability (e.g. Spark) parity with Ammonite

  18. Intermezzo

  19. Scala?

  20. Fusion!

  21. Fusion ⇒ Flexibility Powerful Also, challenging!

  22. OO & FP objects = modules functions = small objects

  23. Safe & Concise Static types: safety + understanding Type inference: elide details Together: refactoring �

  24. Impure ↔ Pure Strict ↔ Lazy Orthogonal concerns

  25. Scala Spectrum Challenge: pick right point (At least you have the choice.)

  26. GTD ↔ Correctness Type checker = lightweight verifier Cost of Failure ↔ Verification?

  27. Cost of Abstraction See: Why the free monad is not free

  28. Empathy-Driven Development Math is good to recognize patterns But we need to communicate intent

  29. Math ↔ Practice math / fun: inspires structure, not names modules: names, mutual recursion

  30. Future correctness checks? Effect system? Ownership?

  31. Scala Spectrum More opinionated in 3.0 Keep essential flexibility

  32. Scala 2.14

  33. Close the Scala 3 Gap stdlib identical (2.13 & 3.0) TASTY interop shared compiler (post-typer) tooling

  34. T-AST-y? Source code, fully type checked Full semantic information

  35. Binary Compatibility? TASTY: Source compat == bin compat Not about: API evolution

  36. Simplify github.com/scala/scala-dev/milestone/18

  37. Drop: early initializers trait parameters procedure syntax

  38. Deprecate: forSome: only wildcards value classes: opaque types whitebox macros: typelevel fun / codegen package object inheritance? vast implicit scope? (ignore packages in prefix)

  39. Add trait parameters opaque types type lambda

  40. Implicits must have explicit return type lazy implicit (see: shapeless) multiple implicit parameter lists (see: Aux in shapeless)

  41. (Maybe) New JVM shiny varhandles minimal value types? …

  42. Scala 3

  43. Kinda like 2.15 Just more exciting :-)

  44. Excitement Implicit function types Union types transparent + principled meta-programming New macros enum @static

  45. Fin

  46. Grateful Contributors Community Scala Center Dotty Team

  47. Thank you Any Questions!?!

Recommend


More recommend