A modern Typescript transpiler to llvm
npm i -g native-ts
to get help on how to compile your typescript code, just run the following command:
native-ts --help
This program converts typescript code into native binary code or into llvm code.
typescript code:
class Hello {
constructor() {}
sayHi() {
console.log("Hi!");
}
}
var hello = new Hello();
hello.sayHi();
llvm IR:
; ModuleID = 'main'
source_filename = "main"
%Hello = type {}
%string = type { i8*, i32 }
@0 = private unnamed_addr constant [4 x i8] c"Hi!\00", align 1
declare i32 @main()
define i32 @main.1() {
entry:
%0 = call %Hello* @Hello__constructor()
%hello = alloca %Hello*
store %Hello* %0, %Hello** %hello
%hello.load = load %Hello*, %Hello** %hello
call void @Hello__sayHi(%Hello* %hello.load)
ret i32 0
}
define %Hello* @Hello__constructor() {
entry:
%0 = call i8* @gc__allocate(i32 0)
%1 = bitcast i8* %0 to %Hello*
ret %Hello* %1
}
declare i8* @gc__allocate(i32)
define void @Hello__sayHi(%Hello* %this) {
entry:
call void @console__log(%string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i32 0, i32 0), i32 3 })
ret void
}
declare void @console__log(%string)
This are the sources to make this project exis.