47 Degrees joins forces with Xebia read more

Functional Roundup for August 5, 2016

Functional Roundup for August 5, 2016

Akka 2.4.9-RC-1

Akka 2.4.9-RC1 release

On August 2nd, Akka 2.4.9-RC1 was made readily available for use and evaluation by the public.

The latest release focuses on HTTP performance improvements as well as the entity streaming feature. According to Konrad Malawski and the official release notes, highlights include:

  • A 30-40% improvement of overall Akka HTTP throughput and transfer rate.
  • Performance matches Spray in both raw throughput as well as latency distribution and has a 14% improvement rate overall.
  • EntityStreamingSupport makes marshalling of Akka Streams into/from HTTP requests and responses simple. Read more on Source Streaming.

  • #20992 - Optimize ByteString operations in Akka HTTP hot-path.
  • #21017 - Pre-fuse http server layer.
  • #21062 - HTTP: Optimize response rendering and response parsing.

This specific patch release closed 43 tickets with the help of 24 committers.

So what’s next? Spray would rather you not know. Future plans are sounding pretty grim for the tool. With the experimental flag soon to be lifted from Akka HTTP, the Akka team has announced that the end of Spray’s life is just around the corner. RIP in advance, Spray.

A stable version of 2.4.9 will release after the team acquires some community feedback. You can view the full list of changes here: Akka 2.4.9-RC1.


SIP-23 Implementation of literal types #5310

Miles Sabin has announced that SIP-23 is ready for review. The SIP is a continuation of work by Adrianne Moors and George Leontiev.

According to the PR, the SIP includes the following:

  • Literals can now appear in type position, designating the corresponding singleton type.
  • Support for scala.Symbol literal types has been added.
  • A ScalaValueOf[T] type class and corresponding scala.Predef.valueOf[T] operator has been yielding the unique value of types with a single inhabitant.
  • isInstanceOf / asInstanceOf tests/conversions are implemented via equality/identity tests for singleton types.
  • Support for scalaSymbol literal types has been added.

Related bugs that are fixed by this SIP include:

  • SI-1273 - Singleton type has wrong bounds.
  • SI-5103 - Singleton types not inferred in all places they should be.
  • SI-8323 - Duplicate method name and signature with singleton type parameters over constant types.
  • SI-8564 - Methods with ConstantType results get the inhabitant of ConstantType as their body.

The next SIP meeting will be later in August. You can view the ongoing conversation and the rest of SIP-23’s details here: SIP-23 Implementation of literal types #5310

ScalaTest 3.0.0

ScalaTest and Scalatic 3.0.0

Bill Venners and the Artima team had a double hitter this week releasing both ScalaTest and Scalatic 3.0.0.

The main feature for both versions is the addition of full support of Scala.js and new async testing stypes.

Enhancements for ScalaTest 3.0.0 include:

  • Added type org.scalatest.compatible.Assertion to serve as the actual type required by test bodies in the new async styles.
  • Changed the result type of assertions and matcher expressions from Unit to Assertion.
  • Enhanced ScalaTest Matchers with oneElementOf, noElementsOf, atLeastOneElementOf, atMostOneElementOF, allElementsOf syntax, all of which must follow contain.
  • Added implicit parameters of type Prettifier to Assertions, Matchers, and other classes that produce error messages.

Enhancements for Scalatic 3.0.0 include:

  • Made Chain an AnyVal that wraps List instead of an AnyRef. Dropped its inheritence
  • Added Position that supports capturing of caller’s source code position through macro.
  • Positive numeric types, such as PostInt, PosZInt, PosFloat, etc., have been added in package org.scalactic.anyvals along with CompileTimeAssertions, which can help you create your own restricted value AnyVal types.
  • Renamed Constraint to CanEqual and made a deprecated type alias for any user code currently referring to Constraint.

You can view the full list of changes here: ScalaTest and Scalactic 3.0.0

ScalaFiddle Beta

ScalaFiddle Beta Released

ScalaFiddle, the playground for Scala, is now accepting applicants for closed beta!

ScalaFiddle allows you to create and share examples, embed interactive code blocks in documentation, and to visualize algorithms, according to ScalaFiddle.io.

Sign up to join the beta and gain early access to features here: ScalaFiddle beta sign-up

Suggested information to digest this weekend:

The functional programming community has no shortage of excellent conferences, talks, and articles. Here are just a few that were recently released that we recommend checking out if you missed them the first time:

Can Scala have a highly parallel typechecker?:

  • Grzegorz Kossakowski
  • Medium.com

After interviewing with the Facebook Hack team a few months back, Grzegorz Kossakowski ended up with a sizeable crush on their typechecker. He ponders on a bit of theft and suggests that Scala might benefit from stealing a few ideas in order to create it’s own highly parallel and distributed typechecker.

The article is worth a read! Check it out here: Can Scala have a highly parallel typechecker?


Jason Zaugg:

  • Modernizing Scala
  • JVM Language Summit 2016

Jason Zaugg talks about the Scala 2.12 bytecode, trait encoding, Lambda encoding, and invokeddynamic.

Watch the talk here:


Upcoming Events:

Scala Up North

  • August 5th - 6th
  • Concordia University - Montreal, Quebec

PDXScala Monthly Meeting

  • August 16th
  • Dexcom - Portland, OR

Scala World

  • September 10-14th
  • The Rheged Centre - Cumbria, UK

Typelevel Unconference & Lambda World

  • September 30th - October 1st
  • Palacio de Congresos - Cádiz, Spain

Have a news tip for us? Tweet to us @47deg or send to us via email here.

Ensure the success of your project

47 Degrees can work with you to help manage the risks of technology evolution, develop a team of top-tier engaged developers, improve productivity, lower maintenance cost, increase hardware utilization, and improve product quality; all while using the best technologies.