2 min read

Facebook released Skip or Skiplang last week, a language it has been developing since 2015. It is a general-purpose programming language that provides caching with features like reactive invalidation, safe parallelism, and efficient garbage collection.

Skiplang features

Skiplang’s primary goal is to explore language and runtime support for correct, efficient memoization-based caching and cache invalidation. It achieves this via a static type system that carefully tracks mutability. The language is typed statically and compiled ahead-of-time using LLVM to produce executables that are highly optimized.

Caching with reactive invalidation

The main new language feature in Skiplang is its precise tracking of side effects. It includes both mutability of values and distinguishing between non-deterministic data sources. This distinguishing includes data sources that can provide reactive invalidations that tell Skiplang when data has changed.

Safe parallelism

Skiplang has support for two complementary forms of concurrent programming. Both forms avoid the usual thread safety issues due to the language’s tracking of side effects. This language also supports ergonomic asynchronous computation with async/await syntax.

Asynchronous computations cannot refer to mutable state and are therefore safe to execute in parallel allowing independent async continuations to continue in parallel. Skiplang also has APIs for direct parallel computation, again using its tracking of side effects it prevents thread safety issues like shared access to mutable state.

An efficient and predictable garbage collector

Skiplang’s approach to memory management combines aspects of typical garbage collectors with more straightforward linear allocation schemes. The garbage collector only has to scan the memory that is reachable from the root of a computation. This allows developers to write code with predictable garbage collector overhead.

A hybrid functional object-oriented language

Skiplang is a mix of ideas from functional and object-oriented styles. They are all carefully integrated to form a cohesive language. Like other functional languages, it is expression-oriented and supports features like abstract data types, pattern matching, easy lambdas, higher-order functions, and enforcing pure/referentially-transparent API boundaries (optional). Like OOP languages, it supports classes with inheritance, mutable objects, loops, and early returns.

In addition to these, Skiplang also incorporates ideas from “systems” languages supporting low-overhead abstractions, and compact memory layout of objects.

Know more about the language from the Skiplang website and their GitHub repository.

Read next

JDK 12 is all set for public release in March 2019

Python comes third in TIOBE popularity index for the first time

Michael Barr releases embedded C coding standards

Data science enthusiast. Cycling, music, food, movies. Likes FPS and strategy games.