Repository logo

Infoscience

  • English
  • French
Log In
Logo EPFL, École polytechnique fédérale de Lausanne

Infoscience

  • English
  • French
Log In
  1. Home
  2. Academic and Research Output
  3. Conferences, Workshops, Symposiums, and Seminars
  4. Cross-Platform Language Design in Scala.js (Keynote)
 
conference paper

Cross-Platform Language Design in Scala.js (Keynote)

Doeraene, Sebastien  
January 1, 2018
Proceedings Of The 9Th Acm Sigplan International Symposium On Scala (Scala '18)
9th ACM SIGPLAN International Symposium on Scala (Scala) as part of the ACM SIGPLAN International Conference on Functional Programming (ICFP)

Have you ever wondered what is the secret sauce of Scala.js? What defines Scala.js, above all else, is the overarching will to make it cross-platform. A cross-platform language is both portable-most source code cross-compiles and behaves the same way on multiple platforms-and interoperable-code written in that language can interoperate with other languages on the target platforms. Most multi-platform languages are designed with one of those two properties in mind, and only address the other one as an afterthought. This results in poor integration, difficulty to write portable code, or even the impossibility to use some platform-specific libraries.

This talk shows how Scala.js was designed as a cross-platform language. We show how portability and interoperability drive every design decision, from which language feature to include to performance considerations. We state a criteria of completeness for interoperability, and show how Scala.js satisfies it (with the exception of one JavaScript language feature, still work-in-progress). We give insights about what features are critical for portability, and which ones can be relaxed in the name of performance. In particular, we stress the importance of the ecosystem of libraries: existing assumptions in the ecosystem can force the language designer into reproducing behaviors of Scala/JVM, even when they are accidental.

As a practical exercise, we study the main language changes that made it into Scala.js 1.x wrt. 0.6.x-as well as possible future developments-and how they fit into the cross-platform language design methodology.

  • Details
  • Metrics
Type
conference paper
DOI
10.1145/3241653.3266230
Web of Science ID

WOS:000511315000001

Author(s)
Doeraene, Sebastien  
Date Issued

2018-01-01

Publisher

ASSOC COMPUTING MACHINERY

Publisher place

New York

Published in
Proceedings Of The 9Th Acm Sigplan International Symposium On Scala (Scala '18)
ISBN of the book

978-1-4503-5836-1

Start page

1

End page

1

Subjects

scala

•

language design

Editorial or Peer reviewed

REVIEWED

Written at

EPFL

EPFL units
LAMP1  
Event nameEvent placeEvent date
9th ACM SIGPLAN International Symposium on Scala (Scala) as part of the ACM SIGPLAN International Conference on Functional Programming (ICFP)

St Louis, MO

Sep 28, 2018

Available on Infoscience
February 20, 2020
Use this identifier to reference this record
https://infoscience.epfl.ch/handle/20.500.14299/166383
Logo EPFL, École polytechnique fédérale de Lausanne
  • Contact
  • infoscience@epfl.ch

  • Follow us on Facebook
  • Follow us on Instagram
  • Follow us on LinkedIn
  • Follow us on X
  • Follow us on Youtube
AccessibilityLegal noticePrivacy policyCookie settingsEnd User AgreementGet helpFeedback

Infoscience is a service managed and provided by the Library and IT Services of EPFL. © EPFL, tous droits réservés