Loci v1.4 Released

The latest version of the Loci compiler is now available. See the release notes for detailed information about what’s included.

The main feature in this release is a brand new compiler diagnostics system with a rewritten lexer and parser. Here’s an example of errors from the old compiler:

Parser Error: Failed to parse file 'MultipleElse.loci' with 2 errors:
Parser Error (at SourceLocation(filename = MultipleElse.loci, range = (line 11, column 4) to (line 11, column 8))): syntax error, unexpected ELSE
Parser Error (at SourceLocation(filename = MultipleElse.loci, range = (line 11, column 4) to (line 11, column 8))): Invalid statement.

And here’s how it looks with the new diagnostics system:

MultipleElse.loci:11:4: error: 'else' without a previous 'if'
  } else {
    ^~~~
1 error generated.

This release is therefore an enormous improvement in the usability of the compiler and the cause of errors/warnings should be very clear to the user.