Rage against
the Virtual Machine

Compile your JavaScript to Native code

Writing code for multiple platforms shouldn't require learning
more syntax

Running JavaScript everywhere shouldn't require a virtual machine or framework

The compilation process should be democratised, easy to configure and extensible

The syntax brain tax

When you get rusty with the syntax of a language, you spend precious time and energy fighting the compiler over missing braces and semicolons.

Or you're putting var everywhere instead of const or let, because you spent the weekend with C# and now you're back
to web development.

But if a particular syntax is already second nature to you,
why can't you just use that for all the code you write?

Current approaches

Let's take JavaScript. We could let frameworks like React Native or Electron handle the fact it doesn't run natively.

But whilst that blackbox is convenient, it unfortunately has a cost to your app in terms of performance, memory, battery life, and debuggability.

The fundamental problem is developers being made to believe all platforms behave the same, when they don't.

How Sempiler works

Concepts like types, classes, functions, and variables remain constant across platforms. They are the building blocks of all programming.

A function in JavaScript is the same concept as a function in Swift - a block of reusable code that accepts some parameters.

What is different are the semantics (the rules you apply to validate that code), the APIs you use, and the capabilities of a particular platform.

With that in mind, you can write code in a syntax that is second nature to you (for example JavaScript syntax).

Then choose the rules of a particular context to validate that code against (for example iOS Swift semantics).

And once the code is valid with respect to the chosen semantics, it can be transpiled to purely native code with no tricks.

TypeScript code
Swift code

Not to mention…

  • Configuring tools is boring
    Zero configuration recipes will be free to download
  • Let libraries hide the differences
    Libraries will abstract away differences like API names behind facades, allowing you to share your code across platforms
  • Direct debugging
    Simple stacktraces, and diagnostics automapped back to your source code
  • Lean & clean
    Complete control over where & what code gets emitted
  • Plugins
    Super simple interfaces for plugging in custom functionality
  • Learn by example
    The samples repository will contain helpful starter resources