|
Speaker |
Title |
|
Aleksandar Prokopec |
Parallel Concurrent Hash Tries |
|
Alexander Podkhalyuzin |
IntelliJ IDEA Scala Plugin: strengths and weaknesses |
|
Andrew Phillips |
Scala Puzzlers |
|
Anne Veling |
Scala in production: benefits and drawbacks |
|
Arvind Sujeeth |
High Performance Embedded DSLs with Delite |
|
Ben Parker |
Anti XML in anger |
|
Bill Venners and Dick Wall |
Pragmatic Testing Nirvana with ScalaTest, ScalaMock and SubCut |
|
Brendan W. McAdams |
Async & Non-Blocking Scala for Fun And Profit |
|
Catherine Jung |
How we are using Scala, Redis and Twitter Storm to build a new sports betting platform |
|
Chris Agmen-Smith |
Pettswood - Executable Documentation for Scala Acceptance Testing |
|
Dick Wall |
An Engineer's Guide to the Scala Community |
|
Eugene Burmako, Christopher Vogt |
Project Kepler: Compile-Time Metaprogramming for Scala |
|
Grzegorz Kossakowski |
Compiling Scala to JavaScript using Scala+GWT |
|
Hanns Holger Rutz |
ScalaCollider = Scala + Sound Art |
|
Hans-Henry Sandbaek |
EasyFX - an innovative Scala-library for UI-development, based upon JavaFX. |
|
Indrajit Raychaudhuri |
Overview of Lift -- what's new in 2.4 and the road ahead |
|
Iulian Dragos |
Scala IDE 2.1 and beyond |
|
Jan Christopher Vogt, Stefan Zeiger |
Scala Language Integrated Connection Kit - Milestone 1 |
|
Jason Liszka, Jorge Ortiz |
Rogue Reloaded: Easier, Safer, Faster |
|
Jesse Eichar |
Introduction to Scala-IO |
|
Jonas Bonér |
Akka 2: Distributed by Design |
|
Jordan West |
Practical Scalaz: Using One of Scala's Most Controversial Libraries |
|
Josh Suereth |
Binary Resilience |
|
Kevin Hoffman |
Building a MUD with Scala and Akka 2.0 Actors |
|
Kota Mizushima |
Scala and Ruby - Differences and Similarities |
|
Marius A. Eriksen |
Concurrent Programming With Futures, Offers, and Brokers |
|
Mark Harrah |
Building Interactive Command-Line Applications with Tab Completion Parser Combinators |
|
Matei Zaharia |
Spark in Action |
|
Mathias Doenitz |
spray: REST on Akka |
|
Matthew Farwell |
Coding with style: The Scalastyle style checker |
|
Miguel Garcia |
What the optimizer does to your code |
|
Miles Sabin |
How to map and fold over an HList in shapeless |
|
Nada Amin (joint work with Grzegorz Kossakowski) |
JavaScript as an Embedded DSL in Scala |
|
Nathan Hamblen |
Remixing the Abstraction Compromise |
|
Noel Welsh |
BlueEyes for High-Performance REST Services |
|
Paul Butcher |
Generating code within a compiler plugin - how ScalaMock does it |
|
Paul Phillips |
Inside the Sausage Factory: Scalac Internals |
|
Peter Gabryanczyk |
Migrating akka-camel module to akka 2.x |
|
Peter Hausel |
Hacking with Play 2.0 for fun and for profit |
|
Phil Bagwell |
Fast Concatenation for Immutable Vectors |
|
Ramnivas Laddad and Jennifer Hickey |
Scala Workloads in the Cloud |
|
Roland Kuhn |
Testing Actors and FSMs in Akka |
|
Scott Clasen |
An Inside look at Heroku through the lens of Scala |
|
Sean Parsons, Mark Baker |
Scala in production at MindCandy, from the small to the large |
|
Shadaj Laddad |
Making games and solving puzzles in Scala |
|
Shams Imam |
CnC-Scala: a Declarative Approach to Multicore Parallelism |
|
Stephen Chin, Luc Duponcheel |
JavaFX and Scala - Like Milk and Cookies |
|
Tiark Rompf |
High-level High-Performance Programming with Scala-Virtualized, LMS and Delite |
|
Timothy Perrett |
A Scalable Language for a Scalable Web |
|
Viktor Klang |
The Future I was Promised |
This is the list of full papers accepted to the Third Scala Workshop, part of Scala Days 2012:
- SubScript: Extending Scala with the Algebra of Communicating Processes (link)
André Van Delft
Most programming languages offer relatively little or no support for parallelism and non-determinism. Support would in particular be very useful for specifying event handling and background processing in applications with graphical user interfaces, and for specifying grammars of input data. To improve the situation, programming languages may be extended with constructs adopted from the theory named Algebra of Communicating Processes. This has been done in SubScript, which is a extension to Scala. Examples show how SubScript is useful for programming GUI controllers in the MVC paradigm.
ACP-like constructs and some syntactic sugar suddenly enable process descriptions with an expressive power like in parser generators, logic and Unix pipes. This applied math allows for modeling the behavior of GUI controllers very clearly and concisely. We claim that this will lead to higher reliability against less cost, but foremost: more fun.
Currently SubScript is implemented as a DSL, in about 2000 lines of Scala code. This maintains a call graph, that grows and shrinks as a SubScript program runs. The semantics of the language is mainly determined in terms of the rules for this graph manipulation. SubScript implementations have some freedom in these rules, so that they can specialize, e.g. for real time constraints, probabilities, timed simulations and parallel processing.
- Lightweight Polytypic Staging: a new approach to Nested Data Parallelism in Scala (link)
Alexander Slesarenko
This paper describes polytypic staging – an approach to staging of a domain-specific language (DSL) that is designed and implemented by means of polytypic (datatype generic) programming techniques. We base our implementation on Lightweight Modular Staging (LMS) framework by extending and making it polytypic. We show how to apply it to a particular domain. The domain is nested data parallelism where data parallel programs are expressed in the DSL embedded in Scala. The paper is organized around a specific DSL, but our implementation strategy should be applicable to any polytypic DSL in general.
- Habanero-Scala: Async-Finish Programming in Scala (link)
Shams Imam and Vivek Sarkar
With the advent of the multicore era, it is clear that improvements in application performance will require parallelism. Programming models that utilize multiple cores offer promising directions for the future where core counts are expected to increase. There is, hence, a renewed interest in programming models that simplify the reasoning and writing of efficient parallel programs. In this paper, we present Habanero-Scala (HS) which implements a generic task parallel programming model that can be used to parallelize both regular and irregular applications. HS is a library extension of Scala and supports a hybrid programming model combining the previously developed Async/Finish Model (AFM) and Actor Model (AM). HS extends Scala's actor-based concurrency model with creation of lightweight tasks embodied in async, future, and foreach constructs; termination detection using the finish construct; locality in the form of places; weak isolation using isolated blocks; and task coordination patterns using phasers, data-driven futures. HS offers a simpler parallel programming model compared to writing programs using threads and adds to the tools available for the programmer to aid in productivity and performance while developing parallel software.
- ActorDroid - A distributed computing framework for mobile devices based on Scala actors (link)
Pierre-André Mudry and Romain Cherix
With the processing power available on modern mobile devices, it becomes increasingly interesting to harvest this power for distributed computations. In this context, we developed a programming framework based on Scala actors that runs on the Android operating system. This framework enables the distribution of an application consisting of communicating actors among multiple devices such as mobile phones or tablet PCs. Through two different experiments, we demonstrate that the flexibility of Scala actors is a major advantage in terms of development of the framework but also in its usage thanks to various Scala constructs such as functional programming and pattern matching.
- Research Hospital Data ETL with DataExpress (link)
Aaron Masino, Michael Italia, and Lemar Davidson
Data ETL operations are a common requirement for many of the research projects conducted at the Children’s Hospital of Philadelphia. As described in this paper, these ETL pro- cedures are complicated by a variety of issues that make the development of a new ETL tool necessary. We have devel- oped, as described here, a Scala domain specific language called DataExpress that supports ETL operations between a variety of data store types including multiple database imple- mentations, Excel files, and value delimited text files. ETL procedures can be developed and executed as simple script files in a manner similar to Perl scripts. DataExpress will be made available for free as an open source project.
- Asymmetric Lenses in Scala (link)
Tony Morris
Lenses are bidirectional transformations between pairs of connected structures. Asymmetric lenses — where one of those two connected structures is taken to be primary — have been extensively studied. We begin by exploring the existing utilities available for bidirectional transformations in the Scala programming language. We discuss the associated problems with these utilities using examples and propose a solution using asymmetric lenses. We present the canonical representation of an asymmetric lens and an alternative representation which is particularly suited to the specific properties of the Scala programming language and which has desirable properties for users. We explore a small set of interesting user libraries that arise as a consequence of integrating asymmetric lenses into Scala, chosen for the purpose of demonstrating utility. Finally, we briefly examine existing requirements, solutions and proposals for integrating lenses into the Scala programming language.
- Stackless Scala With Free Monads (link)
Rúnar Bjarnason
Tail call elimination (TCE) in the Scala compiler is limited to self-recursive methods, but tail calls are otherwise not eliminated. This makes functions composed of many smaller functions prone to stack overflows. Having a general TCE mechanism would be a great benefit in Scala, particularly for functional programming. Trampolining is a popular technique, which can be used for TCE in languages that don't support it natively. This paper gives an introduction to trampolines in Scala and expands on this solution to gain elimination of any method call whatsoever, even calls that are not in tail position at all. This obviates altogether the use of the call stack in Scala programs.
- Generic Numeric Programming Through Specialized Type Classes (link)
Erik Osheim
We describe an ongoing effort to build a system of type classes that support fast, accurate, flexible and generic numeric programming in Scala. This work combines Scala's support for user-directed type specialization with previous work on numeric type classes. In principle these allow one to create generic numeric algorithms without sacrificing the speed of a direct implementation. In practice, these performance gains make very specific demands of both the language and the user.
This paper is a case study: we will explain the problems faced, discuss our strategies, and provide benchmarking results. We will also discuss ways in which Scala could be improved to more easily accommodate this kind of work. Finally, we will present a simple compiler plugin that can be used to increase performance in many cases.