All about the programming language called Skip
In 2018, Facebook open-sourced its general-purpose programming language Skip on Github under an MIT source licence. The programming language provides efficient memoization-based caching and cache invalidation.
Former software engineer at FAIR, Julien Verlauget, developed Skip along with an experienced team comprising senior contributors to ActionScript, C#, Flow, Hack, HHVM, Prettier, React Native, and Relay. He left Facebook in 2019 to build products around Skip. He is now the CEO of SkipLabs.
Skip, also known as Reflex, keeps track of side effects to offer reactive invalidation, ergonomic and safe parallelism, and fast garbage collection. Skip is statically typed and compiled in advance using LLVM to generate highly optimised executables.
Is Skip still relevant?
Yann Lecun, Chief AI Scientist at Meta, put the spotlight back on Skip. He tweeted: Could it be the basis of a new breed of deep learning frameworks?
“For lower-level programming (and the high level for the purists), some numerically-oriented, GPU-supporting version of Skip may make sense, no?, ” he asked. Skip has been a base for projects like SQLive.
The major features of Skip include:
Reactive invalidation and caching
The major feature of Skip is its accurate monitoring of side effects, including mutability of values and distinguishing between nondeterministic and reactive invalidation data sources. Developers can opt-in to safely memoizing that computation when Skip’s type system can guarantee the absence of side effects at a given function boundary, with the runtime ensuring that previously cached values are erased when the underlying data changes.
Parallelism in a safe environment
Skip supports two different types of concurrent programming, both of which avoid thread-safety difficulties, thanks to Skip’s side effect tracking. Skip uses the async/await syntax to facilitate ergonomic asynchronous processing. Asynchronous computations cannot relate to mutable state and are thus safe to run in parallel. Skip provides APIs for direct parallel computing to avoid issues like shared access to mutable state.
Efficient and predictable GC
Skip employs a new memory management strategy that combines features of traditional garbage collectors with simpler linear (bump) allocation algorithms. The garbage collector only has to examine memory available from the root of a computation thanks to Skip’s side effect tracking. In practice, this means that programmers will be able to write code that has predictable GC overhead.
Functional/object-oriented hybrid language
Skip is an opinionated combination of functional and object-oriented notions deliberately merged to make a unified language. The expression-oriented language supports abstract data types, pattern matching, easy lambdas, higher-order functions, and (optionally) enforcing pure/referentially-transparent API boundaries, similar to functional languages. Skip uses ideas from “systems” languages to offer low-overhead abstractions, compact object memory layout via value classes, and patterns that ensure code specialisation through static method dispatch.
Outstanding developer experience
Skip was built from the ground up with a faster iteration pace typically associated with dynamic languages. The compiler supports incremental type-checking (with alpha versions of IDE plugins providing near-instantaneous errors as you type), provides syntax hints to help rookies learn the language, recognises small typos in method/class names, and even recognises common alternatives to Skip’s standard library method names. Skip also has a code-formatter and a tool for executing codemods to assure consistency in code style.



