Articles

Whiley v0.3.29 Released!

The next release of Whiley is now ready to be downloaded.  This includes a number of bug fixes, along with a change in the WyIL bytecode format.  The latter is ahead of further planned changes to improve the bytecode format and verification.  The list of changes is:

#423 — Bug fix related to parsing . . . → Read More: Whiley v0.3.29 Released!

Whiley v0.3.28 Released!

The next release of Whiley is already upon us, after only a week or so since the last.  This release consists of a slew of minor bug fixes, many of which have been discovered through students using the system in practice.  The main items are:

Problem Generating JVM Bytecode (#415).  This related to compiling . . . → Read More: Whiley v0.3.28 Released!

Whiley v0.3.27 Released!

The next release of Whiley is upon us.  This includes a large number of bug fixes, and a significant rewrite of the verifier.  Unfortunately, the verifier is not yet verifying many more examples, but it’s now placed to do so.  Specifically, the main highlights are:

Better Support for Contractive Types.  Contractive types are those . . . → Read More: Whiley v0.3.27 Released!

Whiley v0.3.26 Released!

It’s about time for another release of Whiley.  This represents some interesting developments, though I continue to struggle with debugging and improving verification.  The main highlights for this release are:

Improved wyal file parser.  This is responsible for parsing wyal files and feeding them into the code generator.  Previously, the parser was very simplistic, . . . → Read More: Whiley v0.3.26 Released!

Whiley v0.3.25 Released!

Time for another release of the Whiley compiler. This is relatively low key, though includes the first steps towards an improved bytecode API (see #190). There are also a range of bug fixes for various minor issues:

Refactoring wyil.lang.Code and wyil.lang.CodeBlock.  In order to support proper nested bytecode blocks, I am refactoring the WyIL . . . → Read More: Whiley v0.3.25 Released!

Loop Invariants and Do/While Statements

Recently, I encountered what I thought was a bug in the Whiley Compiler. The issue related to the current treatment of do/while loops and loop invariants. Having now spent a fair bit of time researching the issue, the answer is not so clear.

The problem manifested itself when I tried to verify the following . . . → Read More: Loop Invariants and Do/While Statements

Whiley v0.3.24 Released!

Well, it’s time for yet another release of the Whiley compiler.  This one is fairly low key, focusing primarily on bug fixes.  Specifically, these issues have been resolved:

#346 — Temporary Fix for Unsuported Bytecodes in the Verifier. #341 — Temporary Fix for Verifying Method Types. #338 — Fix for handling record constants in . . . → Read More: Whiley v0.3.24 Released!

Whiley v0.3.23 Released!

Another update to the Whiley compiler has just been released.  This is a fairly small update, consisting primarily of bug fixes.  The only significant change was:

Type checker now respects a variable’s declared type.  Previously, the declared type was ignored as discussed here.

As usual, you can get the latest files below.  Furthermore, you . . . → Read More: Whiley v0.3.23 Released!

Whiley v0.3.22 Released!

The next release of Whiley is now available. This implements some significant changes to the language syntax, as discussed in this post and this post. Although the migration towards this new syntax is not fully complete, it is largely working well. Specifically, the main changes in this release are:

Draft Language Specification.  Perhaps one . . . → Read More: Whiley v0.3.22 Released!

Thoughts on Parsing Whiley (and Indentation Syntax)

Recently, I have been reworking the Whiley compiler’s parser to make it more robust.  Doing this has opened up some interesting issues, which I thought were worth discussing.  Whiley uses indentation syntax without explicit end-of-statement terminators (e.g. semi-colons) and these things cause some interesting challenges.

Here’s a simple Whiley function to illustrate:

// Return . . . → Read More: Thoughts on Parsing Whiley (and Indentation Syntax)