logo

Roadmap

Current Status

Fan is currently in development of its initial 1.0 release. The core language and Java runtime are quite stable. The .Net runtime is almost there, but not quite. At this point, we are building out system APIs such as concurrency, database access, and web UIs.

Stability

The functionality in each build should be stable. We are very committed to fixing bugs and getting existing code solid before moving on to new features. However Fan is still new, and like all software platforms it still needs to be wrung out in lots of different applications.

We can't promise that we won't make breaking language or API changes. We need the freedom to change things as we learn what does and does not work. However in practice, we've made very few breaking changes over the past year. Be aware of APIs which are still evolving such as concurrency and resources - these are the most likely to change.

New Features

The list of features on our radar for the next year:

Resources

The resource APIs are a work in progress. These APIs and the design will evolve as we plug new implementations into this framework such as HTTP-REST and cloud computing.

XML

We need basic XML parsing/writing APIs which will likely will be based on uxparser. The API will provide both memory-tree and pull-parser support. We'll probably also include some higher level APIs such as XPath support. Don't hold your breath for us to be implementing dubious technologies like XML Schema or WSDL.

Email

Basic support for SMTP, POP3, and probably IMAP is required. This work will include standardized APIs for modeling multi-part email messages. Current plan is to write these protocols cleanly from scratch rather than wrap something like JavaMail.

FTP

Need basic FTP client support. This protocol will most likely be implemented from scratch and enable support for the "ftp" URI scheme.

Regex

The sys::Regex APIs are incomplete.

Crypto

We need standardized APIs for cryptographic operations and algorithms. This work will include support for the SSL protocol.

Closure Type Inference

It would be ideal to allow closures passed as arguments to a method to infer their argument types. The biggest issue with this feature is parsing the grammar unambiguously - which we should be able to do with our two-pass parser by looking for the closing "| {".

IDE Support

We aren't IDE users ourselves, so this isn't our highest priority. But we realize it is a requirement for a successful ecosystem, so we'll be keeping our eye on this one.

Switch

Today the Fan switch statement is a not much different than its C and Java ancestors. It seems to make sense to enhance the switch statement to embody more of what functional languages do with pattern matching. We'll need to do some brainstorming on this one.