Scala Profis

Der Podcast aus Berlin, rund um die Programmiersprache Scala. Mit Neuigkeiten, Know-How und allem was uns sonst noch so einfällt. Für alle Scala-Enthusiasten und solche die es werden wollen. Für Dich am Mikrofon: Benjamin Hagemeister und Sven Wiegand.

https://scalaprofis.de

subscribe
share






episode 13: SP10/17: Wir leben noch


Scala 2.12.3 released

Interessanteste Änderung ist eine — laut eigenen Aussagen — drastisch verbesserte Performance:

  • Insbesondere der inkrementelle Compiler Zinc (wird von SBT und diversen anderen Build-Tools verwendet) wurde verbessert um möglichst wenig Code neu zu compilieren.
  • Aber auch am Compiler selbst wurden diverse kleine Performance-Optimierungen vorgenommen, die sich erheblich aufaddieren können. Bei verschiedenen Projekten sank die Dauer für einen Full-Build auf 66% bis 85% gegenüber 2.11.11. Besonders profitieren kleinere Projekte.
  • Der Blog-Post Towards a faster Scala compiler beschreibt alle Details.
  • Um sicherzustellen, dass sich die Performance nicht verschlechtert werden nach jeder Änderung am Compiler automatische Performance-Tests ausgeführt.
Links
  • Scala 2.12.3 released
  • Towards a faster Scala compiler
SBT 1.0.0 is da

Version 1.0.0 und inzwischen sogar 1.0.1 bzw. 1.0.2 ist verfügbar.

Highlights:

  • basiert auf Scala 2.12, es ist also kein 2.10 Support mehr bei Scala Plugins notwendig
  • Zinc 1 mit verbesserter Performance bei der inkrementellen Compilierung
  • paralleler Download von Artefakten
  • Library Management API (erleichtert einen Wechsel von Ivy auf ein anderes System in der Zukunft)
  • ab SBT 1.0.0 wird Semantic Versioning verwendet
  • SBT 1.0.0 ist weder Source- noch Binär-Kompatibel mit 0.13., es gibt eine Anleitung für die Migration
Links
  • Ankündigung
  • Release-Notes
  • Migration von 0.13.x
  • Migration Status
Java 9 wurde released

Nach mehrfacher Verschiebung wurde im September Java 9 released.

Änderungen, die potential für uns als Scala-Entwickler interessant sind:

  • Modul-System (neues Tool jlink)
  • Neues Versions-Schema major.minor.security.patch. Wobei minor für bug fixes gilt und major für funktionale Updates.
  • Multi-Release JARs
  • G1 als Standard-Garbage-Collector. Kann angeblich besser mit großen Heaps (> 4GB) umgehen.
  • Update der Process API ermöglicht Zugriff auf die System-ID von Prozessen und diversen weiteren System-Eigenschaften. Ermöglicht die Überwachung und das Beenden von Prozessen.
  • Stackwalk-API zum Zugriff auf Informationen zum aktuellen Stack.
  • Unterstützung diverser ECMAScript 6 Features in Nashorn. z.B. let, const, Iteratoren und for ... of, Map, Set und einiges mehr.
  • HiDPI-Unterstützung für Windows und Linux
  • UTF‑8 Properties-Dateien
Links
  • Java 9 Release now available
  • Java Platform, Standard Edition What’s New in Oracle JDK 9 (vollständige Liste der Neuerungen)
  • Countdown to Java 9 Release Date (Diverse News rund um Java 9)
scalameta/scalamacros

Der Fokus von Scalameta hat sich verändert. Das Projekt wurde ursprünglich gestartet um Macros zu vereinfachen. Inzwischen wurden die Macros in ein eigenes Projekt ausgelagert.

Scalameta ist inzwischen allgemeiner angelegt, also Basis für Entwickler-Tools verschiedener Art, wie z.B.

  • Scalafmt
  • Scalafix
  • AST Explorer
Scalamacros

Zu Scalamacros findet man auf Github Beispiele für Macro-Annotations und def Macros, allerdings bisher wenig Dokumentation.

Roadmap

Inzwischen beteiligt das Scala Center sich bei der Implementierung (siehe SCP-014) und es gibt eine Planung für die nächsten Schritte:

  • Scala 2.12: Weitere Schritte über Compiler-Plugin
  • Dotty: Integration in den Compiler
  • Support für IntelliJ IDEA
  • Scala 2.13: Immer noch über Compiler-Plugin und Feature-Flags
  • Scala 2.14: Macros sollen nicht mehr experimentell sein und scala.reflect wird deprecated
Links
  • Release Notes
  • Scalamacros
  • scalameta/paradise
  • SCP-014
  • Roadmap towards non-experimental Macros
Scala AST im Browser untersuchen
  • AST explorer ist eine Web-Site mit der sich die Abstract Syntax Trees für beliebigen Code verschiedener Programmiersprachen analysieren lassen.
  • Gabriele Petronella hat unter Einsatz von Scalameta und Scala.js Scala-Unterstützung für den AST explorer implementiert, so dass Scala jetzt in der Liste der unterstützten Sprachen auftaucht.
Fazit

Wer mit Scala Macros experimentiert, dem kann der AST explorer die Arbeit deutlich vereinfachen.

Links
  • Exploring Scala AST in your browser – buildo blog
  • AST explorer
Catch bugs with Scalafix v0.5 | The Scala Programming Language

Scalafix kann nicht nur Code verändern sondern auch als Linter verwendet werden. Ein Blog Beitrag von Ólafur Páll Geirsson zeigt wie einfach es ist eigene Regeln für den Linter zu schreiben — zumindest wenn man sich ein bisschen mit Quasiquotes und Scalameta auskennt.

Links
  • Catch bugs with Scalafix v0.5 | The Scala Programming Language
  • Scalafix Dokumentation
Scala.js vs TypeScript

Sven hat Scala.js angepriesen. In letzter Zeit hat er sich mit TypeScript beschäftigt. Hier sein Vergleich:

Vorzüge von Scala.js
  • Scala halt
  • Kompakte Syntax (einzeilige case-Klassen)
  • Typ-Klassen
  • Declaration-Side Variance
  • Implicits
  • Shared Client-Server-Projekte (auf Scala-Basis)
Neutral
  • Mit Facebook’s immutable.js existiert eine gute Implementierung von immutable Collections.
  • Out-of-the-box automatische Tests mit Coverage-Analyse
  • Mächtiges Typ-System mit mächtiger Typ-Interference.
Vorzüge von TypeScript
  • Durchgängiges structural typing passt besser zum dynamischen Character von JavaScript. Außerdem ermöglicht es die schlanke Instanziierung von Interfaces mittels JavaScripts Object-Syntax.
    Typ-Konstrukte, die so bei Scala nicht möglich sind:
    • Union Types (A | B, string | number) passen gut JavaScript.
    • Intersection-Types (A & B) ermöglichen interessante Typisierungs-Lösungen, die mit Scala so nicht möglich sind.
    • Mit [mapped types] lassen sich leicht neue Typen auf Basis existierender erstellen (Partial, Readonly)
  • Zero Script-Size Overhead
  • Zero Runtime-Overhead
  • Unterstützung von TSX
  • Mächtiger Standard-Linter
  • Declaration-Files für die meisten, selbst wenig populäre JavaScript-Libraries
  • Tooling (IDE-Support, Debugging, Integration mit webpack und Co)
  • Turn-around-Zeiten
  • Popularität
Vorläufiges Fazit

Stand heute ist der Einsatz von Scala.js als JavaScript-Ersatz nur mit großen Kompromissen möglich:

  • Fassaden für JavaScript-Bibliotheken müssen manuell erstellt werden
  • Die generierten Bundles haben einen erheblichen Overhead
  • Das Debugging in Chrome ist aufgrund unpräziser Source-Maps und starker Optimierungen (fehlende Variablen) kaum brauchbar
  • Vor allem das Tooling kommt nicht annähernd and das von TypeScript heran. So müssen Templates häufig als Strings abgebildet werden wodurch viele Fehler erst zur Laufzeit auftreten.
Play 2.6.0 released

Ende Juni wurde Play 2.6.0 freigegeben. Über die Änderungen sprachen wir in Episode SP02/17 im Detail. Die wichtigsten Änderungen sind:

  • Unterstützung für Scala 2.12
  • Akka HTTP ersetzt Netty
  • Experimenteller Support für HTTP/2
Links
  • Play 2.6.0 released
Scastie hat das Beta-Stadium verlassen

Scastie ist eine vom Scala Center Team betriebene interaktive Web-Seite, die es Dir ermöglicht Scala-Code im Browser auszuprobieren, auf den Servern zu speichern und zu teilen (ähnlich wie bei JSFiddle & Co.).

Gegenüber der Beta-Version wurde folgendes geändert:

  • Die Oberfläche wurde komplett aufgeräumt.
  • Neben den Standard-Scala-Versionen, dem Dotty und dem Typelevel-Compiler steht nun auch Scala.js als Target bereit.

Weiterhin vorhandene Features:

  • Über eine interaktive Suche kannst Du sämtliche im scaladex geführte Bibliotheken mit einem Klick hinzufügen und ausprobieren.
  • Wenn das immer noch nicht reicht kannst Du direkt das SBT-Script beeinflussen und so zum Beispiel beliebige Dependencies hinzufügen
Links
  • Scastie
  • Scastie is out of beta and available to everybody! | The Scala Programming Language
Underscore Books

Frei verfügbare eBooks rund um Scala.

Derzeit verfügbar:

  • Essential Scala
  • Essential Play
  • Advanced Scala with Cats
  • Essential Slick
  • Creative Scala
  • The Type Astronout’s Guide to Shapeless
  • The Lift Cookbook
Links
  • Underscore Books
47deg/sbt-microsites

Von der Projektseite:

sbt-microsites is an SBT plugin that facilitates the creation of fancy microsites for your projects, with minimal tweaks.

What is a microsite?

A microsite is an instance of Jekyll, ready to publish a static web page for your new library. Some of the benefits of having these auto-generated web pages are:

  • You can write documentation easily in markdown format.
  • Templates, layouts, styles, and other resources will be able through the plugin at compile time.
  • You don’t have to deal with the styling.
Links
  • 47deg/sbt-microsites

Gib uns Dein Feedback als Kommentar auf unserer Web-Site, via Twitter oder Google+.

Kapitel
  1. Intro (00:00:00.000)
  2. Scala 2.12.3 (00:01:49.037)
  3. SBT 1.0.0 (00:04:19.678)
  4. Java 9 (00:09:47.661)
  5. scalameta/scalamacros (00:28:24.547)
  6. AST explorer (00:39:39.765)
  7. ScalaFix als Linter (00:44:08.035)
  8. Scala.js vs. TypeScript (00:47:45.592)
  9. Play 2.6 released (01:16:03.907)
  10. Scastie hat das Beta-Stadium verlassen (01:19:02.552)
  11. Underscore Books (01:21:21.037)
  12. sbt-microsites (01:22:25.880)
  13. Outro (01:23:46.787)
Lizenz


Scala Profis von Benjamin Hagemeister & Sven Wiegand ist lizenziert unter einer Creative Commons Namensnennung — Keine Bearbeitungen 4.0 International Lizenz.

Über diese Lizenz hinausgehende Erlaubnisse kannst Du unter http://scalaprofis.de erhalten.

Titelsong basierend auf Wish You Were Here von THE.MADPIX.PROJECT lizensiert unter Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0).


fyyd: Podcast Search Engine
share








 October 23, 2017  1h24m