Documentation

Articles

Contribute

Whiley v0.3.13 Released!

Well, it’s been almost two months in the making, but here’s the next release of Whiley.  Quite of lot of changes, although there remain significant issues to resolve — particularly with the front-end.

ChangeLog Fixed outstanding problem with list and set types related to type tests.  More specifically, on the negative branch of a . . . → Read More: Whiley v0.3.13 Released!

Efficient Value Semantics for Whiley

The latest release of the Whiley compiler (v0.3.12) includes an optimisation for passing compound structures (e.g. lists, sets and records) by value.  This is really important because all compound structures in Whiley have value semantics, meaning they are always passed by value.  In fact, Whiley does not support references or pointers as found in . . . → Read More: Efficient Value Semantics for Whiley

Whiley v0.3.12 Released!

Well, crikey, what a long time since the last release.  Things haven’t changed a whole lot, apart from various bug fixes.  Probably the most interesting update is the inclusion of reference counting of compound structures to enable in-place updates and prevent unnecessary cloning.  This leads to some nice performance improvements.  Quite a bit of . . . → Read More: Whiley v0.3.12 Released!

Not all Tests are Passing … is that so Bad?

For the Whiley compiler, I currently have over 500 end-end tests and in excess of 15,000 unit tests (most of which were auto-generated and target the type system).  Each end-end test is a short Whiley program that is  categorised as either valid or invalid.  Valid tests also include sample output and are expected to . . . → Read More: Not all Tests are Passing … is that so Bad?

Whiley v0.3.11 Released!

As usual, it’s been a surprising amount of effort … but the next release of Whiley is available!  It’s been quite a long time since the last update, but then quite a lot has improved.  Unfortunately, I did find a fairly serious problem with my type system, which means I’ve got to go back . . . → Read More: Whiley v0.3.11 Released!

Fall-Through by Default for Switch Statements?

The switch statement has a long history, and most languages support it or something similar.  In my experience, I found it to be very useful — both for conciseness, and also improving performance.  With the recent release of Java 7, you can finally switch over strings.

In Whiley, the syntax for switch statements currently . . . → Read More: Fall-Through by Default for Switch Statements?

Whiley v0.3.10 Released!

Well, it’s been a tough slog.  But, finally, we have a new release of Whiley!!  The main thing that’s improved over the past few weeks is the underlying type implementation.  This was causing problems before, as programs which should type-check were failing and vice-versa.  To resolve this, the type system has been reimplemented from . . . → Read More: Whiley v0.3.10 Released!

The Whiley Automata Library (WYAUTL)

As part of the upcoming v0.3.10 release of Whiley, I’ve invested considerable effort reimplementing the type system.  This was necessary because, whilst my old implementation generally worked, writing larger programs exposed a lot of issues.  The most interesting aspect of this process is the development of a general-purpose library for representing and manipulating tree . . . → Read More: The Whiley Automata Library (WYAUTL)

Namespaces in Whiley

With the upcoming v0.3.10 release of Whiley, the way import statements are interpreted has changed in a fairly significant manner.  The primary purpose of this is to give better support for namespaces. The following illustrates what’s changed:

import whiley.lang.Math bool check(int x, int y): return max(x,y) == x

Previously, the above code would compile . . . → Read More: Namespaces in Whiley

Simplification vs Minimisation of Types in Whiley

Recently, I’ve been trying to harden up the implementation of Whiley’s type system. The reason for this is fairly straightforward: bugs in the code often prevent me from compiling correct programs!

In thinking about how to restructure the algorithms I’m using, I realised its important to distinguish simplification from minimisation.  I’ve talked about minimisation . . . → Read More: Simplification vs Minimisation of Types in Whiley