One of a number of "middleweight" solutions in the RIA (rich Internet application) spectrum, Curl is a language, an IDE, and a runtime engine that goes beyond the capabilities of lighter-weight AJAX without incurring the heavier overhead of the Java or .Net runtime. A number of Curl characteristics make it especially suitable for enterprise use: excellent performance, the ability to handle intermittent connectivity, support for large data sets, and graceful presentation of complex interfaces.
Since my review of Curl 5.0 last August, Curl won InfoWorld's Technology of the Year award in the RIA category, Curl 6.0 was released, and Curl released three open source projects: WSDK (Web Services Development Kit), CDK (Curl Data Kit), and CDU (Curl Development Utilities). Curl can do some impressive things with graphics for a RIA, as shown by this figure.
I applaud Curl's open source initiatives, but I'll concentrate here on reviewing the new features of Curl 6.0, which amount to a Macintosh port of the runtime, AJAX interoperability features, controls additions and improvements including easier customization, and graphics rendering improvements such as better antialiasing and smoother curves. The Curl language itself boasts some new features, as does the IDE. The latter include conditional breakpoints and the ability to show variable values as tooltips in the editor.
The Macintosh port of the Curl runtime engine is still in beta as I write this, but should be released in April. The key feature of the port is that it displays a native Mac look and feel. That took some work, which was facilitated by the improved rendering and the skinnable controls. The Curl IDE has not been ported to the Mac, however, and Mac fonts are different enough from Windows and Linux fonts that you may encounter some layout issues in Curl applets that you intend to be portable.
Curl competes in the RIA category with Adobe Flash and Flex, Microsoft Silverlight, OpenLaszlo, and various AJAX technologies. Like some of these, it can be used for desktop applications as well as Web applications. It can also coexist with most if not all of these, thanks to its new interoperability features.
Version 6 boasts several improvements to the Curl controls; the biggest is a new library of skinnable controls and a style designer for them. Between the style designer, the controls themselves, and the Curl Visual Layout Editor, you can create sophisticated user interfaces with customizable looks quite easily.
The graphics improvements in Curl 6 provide easier access to high-quality rendering, including antialiasing, better handling of curves, the ability to render rotated images, and partial transparency (Alpha blending). On the Windows platform, this was accomplished by the use of GDI+ (Graphics Device Interface). High-quality rendering mode also works on the Mac, but not on Linux.
The new language and IDE features of Curl 6 are welcome, but I classify most of them as expected features that previously were missing: bookmarks in the documentation, conditional breakpoints, debug value display with a mouse hover, the addition of rounded rectangles to the 2-D drawing API, and so on.
All in all, Curl 6.0 continues to be an excellent RIA technology, but is only incrementally improved over the previous release. As I said last August, "Curl may well be the most interesting computer language that you don't already know. Given that you can use the personal tools free forever and deploy the results on the Internet for free, the only barrier to evaluating it would be finding the time."