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 scratch and (hopefully) it should be significantly better. In particular, I’ve done quite a lot more testing (e.g. I now have around 15,000 individual unit tests for the Type
class).
The other main difference is the way in which import
statements are handled. Whilst this is definitely a step in the right direction, it’s not without some outstanding issues — which I discussed in more detail here.
ChangeLog
- Changed the way imports are interpreted. Previously,
import whiley.lang.String
would have imported all symbols from moduleString
. Now, it only imports the module name. So, for example, to access the methodindexOf
, you need to writeString.indexOf(s,i)
. However, you can still replicate the old approach by directly importing the names from a module. For example,import * from whiley.lang.String
imports all names from theString
module - The entry point
main()
no longer hasSystem
as its receiver. Instead,System
is a parameter andmain
is a headless method. This is necessary as, otherwise, theSystem
process is blocked until main completes! - Split out the type system into a separate library called wyautl. As part of this, I’ve essentially reimplemented the type system from scratch in an effort to really harden it up. I’ve done a significant amount of testing, and it’s definitely a lot better. The type system now directly supports negation and intersection types, which makes for some interesting possibilities.
- Support for dictionaries is somewhat improved. In particular, you can now create an empty dictionary! An empty dictionary is denoted
{->}
(contrasting with{}
for sets and[]
for lists). - Support for try-catch blocks has been added (finally). This means you can now catch exceptions in Whiley. At the moment, however, the system does not check that you properly declare your exceptions … but that will come shortly.
- Improved the JavaDoc documentation for the compiler. I plan to make this documentation visible soon, in conjunction with detailed discussion of how the compiler actually works.
- Various bug fixes.