Facebook today open-sourced its general purpose programming language Skip — aka “Reflex” — on Github, under an MIT source license. Skip is an experimental research language project that Facebook developed over the last three years: “Skip tracks side effects to provide caching with reactive invalidation, ergonomic and safe parallelism, and efficient garbage collection. Skip is statically typed and ahead-of-time compiled using LLVM to produce highly optimized executables.”

SKIP Features Overview

Caching with Reactive Invalidation: One of Skip’s main language features is its ability to precisely track mutability values as well as distinguishing between non-deterministic data sources and those that can provide reactive invalidations (telling Skip when data has changed). When Skip has confirmed the absence of side effects at a given function boundary, developers can safely proceed with memoizing that particular computation.

Safe Parallelism: Skip enables two complementary forms of concurrent programming to safely execute in parallel. First, Skip supports ergonomic asynchronous computation with async/await syntax (built-in non-referable mutable state and independent async continuations safe mode). Second, Skip has APIs for direct parallel computation (built-in mutable state shared access safe mode).

Efficient Garbage Collection: Skip leverages Linear (bump) allocation schemes with a novel approach to deal with memory management. With Skip’s tracking side-effect feature, the system’s Garbage Collector need only scan memory reachable from the root of a computation to confirm there are no issues. This means developers can process code while receiving advance notice of any possible Garbage Collection activities.

According to the Skip Github page, Facebook is no longer actively developing Skip. The language was designed by an experienced team including senior contributors to ActionScript, C#, Flow, Hack, HHVM, Prettier, React Native, and Relay.

Skip Q&A

A Facebook Front-end Engineer (Twitter-handle @Vjeux) answered Skip questions from Twitter users:

What places can engineers use the language?

I was really excited to be using it in all the places where we use JS (JavaScript) today. We had a really good interop with HHVM but that could have worked with JS. But since Facebook is no longer investing in it, we want to share the ideas. Lots of great work on immutability

Was this project created at the same time as ReasonML (Facebook’s new programming language )? Why two competitive projects within the same company?

It’s unrelated. The goal of this project was to be able to bring reactivity to the Hack codebase which requires strong guarantees regarding mutability, dependency tracking and parallelism that Ocaml doesn’t offer.

As Facebook abandoned the funding of the project, what is the alternative you folks found after this experiment?

Facebook is no longer investing on Skip but Julien Verlaguet (the main designer of the language) will keep it going on his own time.

Social Media Discussion

Discussion about Skip spread to Zhihu (China’s Quora) where users expressed concern about the sustainable development and maintenance of the language.

@HarryZhu posted “Facebook’s open source project always creates an impression of lack of stability, sustainability and consistence. I have invested a lot of time on Cassandra (a open source distributed structured storage system abandoned by Facebook in late 2010) and HHVM (HipHop Virtual Machine). But Facebook almost gave up on Cassandra, and HHVM recently announced they no longer support php, which is very much disappointing.”

Learn more about Skip:

http://skiplang.com/

The language pack is available for download with full installation instructions:

http://skiplang.com/docs/getting_started.html

Gamefromscratch created a Youtube tutorial to go through the Skip language:

https://www.youtube.com/watch?v=Bu66jR98lrM&feature=youtu.be