Showing posts with label transpiler. Show all posts
Showing posts with label transpiler. Show all posts

2020-08-10

Intermediate Languages to Executable Binary

There's already bunch of alternative of programming languages implementation that compiles to intermediate language/bytecode, such as Java (using javac) and C# (using csc or old mcs) which can be run with interpreter or virtual machine (eg. JVM, CLR, Ruby, Python, PHP, DartVM, Julia, etc). Unlike other compiled language (Go, C++, Crystal, Rust, Haskell, V, Zig, D, Swift, etc) which only need to sync single binary on deployment (unless you're using docker or packager like jar, but at least you'll also need to install the VM on the deployment machine). There's some alternative that could compile those programming language implementation into single binary that match targeted machine architecture (either for ease of deployment, or closed source/copyright issue that probably you'll need also an obfuscator):

  • il2cpp, developed by Unity, could compile any CLR-based language (especially C#) into C++ then compile it into static binary makes it harder decompile
  • Nuitka, compile Python into executable binary
  • GraalVM Native Image, any JVM-based language (Java, Kotlin, Scala, Clojure, Groovy, Jython, JRuby, Javascript, etc) into native image executable
  • ORCA, compile Ruby to windows executable
  • Haxe, any language that targets to haxe (Javascript, Flash Actionscript, Neko, PHP, C++, Java, C#, Python, Lua)
  • NectarJS, compiles NodeJS into executable binary
  • KotlinNative, compiles Kotlin to executable binary 
  • wasm2c, convert wasm to C
  • Julia PackageCompiler, compiles Julia script into system image

See also list of languages that transpiles/targetting javascript also all languages LLVM supported, also list of new programming languages.


2016-12-09

Javascript ES6 to ES5 Transpiler

When you are so eager to use ES6 features but you know that most browsers not yet implement all ES6 features completely (that's why there are also HTML5 pollyfills). Here's the list of transpiler to convert Javascript ES6 to ES5:
Almost 2 years ago comparison between Babel and Termi. Oh and yes, you can use Babel with WebStorm.
Note that every transpilers (CoffeeScript, TypeScript, Elm, Haxe, etc) suffer the same problem: compile duration (hey, one more thing to do [=minify] before testing/deploying) and hard debugging (easier if you use source maps, only for JS transpilers, I don't know if these things exists for transpiler for other language). Still I wish for wAsm to come faster. Btw I learned ES6 just for react-native-web, otherwise I would always still stick with ES5.