/* Start to type your program */
// Add your comments!
// Press enter to add a new line.
class Main {
function main(): unit = println("Hello World!")
}

Program Standard Out:

Hello World!

Pretty Printed Program:

/* Start to type your program */
// Add your comments!
// Press enter to add a new line.
class Main { function main(): unit = println("Hello World!") }

Compiled JS:

const _builtin_stringConcat = (a, b) => a + b;
const _builtin_println = (line) => console.log(line);
const _builtin_stringToInt = (v) => BigInt(v);
const _builtin_intToString = (v) => String(v);
const _builtin_throw = (v) => { throw Error(v); };
const GLOBAL_STRING_0 = "Hello World!";
const _compiled_program_main = () => {
_builtin_println(GLOBAL_STRING_0);
return 0;
};
_compiled_program_main();

Optimized LLVM Code:

declare i64* @_builtin_malloc(i64) nounwind
declare i64 @_builtin_println(i64*) nounwind
declare i64 @_builtin_throw(i64*) nounwind
declare i64* @_builtin_intToString(i64) nounwind
declare i64 @_builtin_stringToInt(i64*) nounwind
declare i64* @_builtin_stringConcat(i64*, i64*) nounwind
; @GLOBAL_STRING_0 = 'Hello World!'
@GLOBAL_STRING_0 = private unnamed_addr constant [13 x i64] [i64 12, i64 72, i64 101, i64 108, i64 108, i64 111, i64 32, i64 87, i64 111, i64 114, i64 108, i64 100, i64 33], align 8
define i64 @_compiled_program_main() local_unnamed_addr nounwind {
l0_start:
%_temp_0_string_name_cast = bitcast [13 x i64]* @GLOBAL_STRING_0 to i64*
call i64 @_builtin_println(i64* %_temp_0_string_name_cast) nounwind
ret i64 0
}