Skip to content

Release v0.8.0

Compare
Choose a tag to compare
@dosisod dosisod released this 29 Apr 02:44
· 29 commits to master since this release

It has been a while since the last release! A lot of refactoring and cleanup has happened to the LLVM backend, semantic analyzer, and AST generator, but some new features and niceties have been squeezed in as well:

Name Mangling

To allow for modules in the future, name mangling has been added for exported variables. This means that functions and variables using the export keyword will not be able to communicate with C libraries (for the time being). I am looking into ways to allow for explicitly exporting with C naming conventions, but for now, the name mangling will remain the way it is.

Reference Types

You can now create C-like pointers using the new reference type:

num := 1234

ref := &i
ref2: &Int = &i

num2 := *ref

You can also have nested/double references, like so:

a := 1
b: &Int := &a
c: &&Int := &b

Skull Shared Library

Running make install-dev will install the libskull.so library, giving users more access to the Skull compiler and it's internals. Support for a CTypes Python API is also in the works, but is not high priority at the moment.

Docker Images

Docker images for Alpine, Archlinux, and Ubuntu have been added! Go to the packages page for more info.

Other Changes

  • Add --color flag
  • Add redundant reassignment check back in
  • Use LLVM API to emit object files instead of using external llc command (~40ms speedup)