Skip to content

Release v0.9.0

Latest
Compare
Choose a tag to compare
@dosisod dosisod released this 17 Jul 02:39
· 7 commits to master since this release

This is a smaller release, but still introduces a lot of nice new features:

Namespaces

Namespaces provide a way to explicitly group a bunch of variables and functions under a new name:

namespace Math {
  pi := 3.1415

  square(x: Float) Float {
    return x ^ 2.0
  }
}

areaOfCircle(radius: Float) Float {
  return Math.pi * Math.square(radius)
}

There are still some kinks to iron out, but all in all, namespaces are useable for the most part, and pave the way for module support in the future.

Update to LLVM 14

Other then some minor code/test changes, everything is pretty much the same. You might be able to get away with using LLVM 13 for some things, but it is recommended that you use version 14.

100ms Compilation Speedup via LLVM JIT

In an effort to reduce build times, and reduce the dependency on a C compiler during build time, Skull will now JIT compile the shim code used for the initial startup of the compiled program. Originally the shim was written in C, and passed to the C compiler for each build. Now, a single LLVM IR shim is JIT compiled into the LLVM module right before emitting the code, greatly speeding up build times.

Optimize Dockerfiles

There are now slimmed down, production ready Skull dockerfiles! The old development dockerfiles are now suffixed with -dev, and are only intended to be used by people actively doing development on the project.

Allow main function exports

Since the C shim has been replaced with a JIT compiled version (and other reasons), the name main can now safely be exported in Skull programs.