ColdFusion MX has been out for over a year now, and has been becoming more and more reliable and stable with each updater. Updaters 1, 2, and 3 each addressed bugs and problems with CFMX. The latest update, the ColdFusion MX 6.1 updater (code named Red Sky) was released today and offers much more than simple bug fixes. The release can be considered a true upgrade. The best part of the upgrade is that it's free.

Enhancements

The first thing you'll notice when installing is the re-designed installer. The installation process is much simpler now and not nearly as prone to failing as past versions of the installer. Installation is now supported on Windows 2003, Red Hat 7.3, 8, and 9, and SuSE 8.

The biggest noticable enhancement for developers is in initial compiler time. In CFMX, if you changed the code in a page and then attempted to browse the page to test it, the compiler would take a long time to recompile the page before allowing you to browse it. This would make debugging and testing a long process as you waited for pages. The compile time now is now not much different when viewing pages the first time vs. viewing pages on subsequent visits. According to Macromedia, this enhancement is by an "order of magnitude".

You will also notice general speed improvements in all areas, partly due to an updated JVM (Java Virtual Machine) to Sun 1.4.2, but mostly due to enhancements to CFMX. You should find huge performance gains in all of your applications.

CFMAIL

The greatest speed enhancements are undoubtedly the enhancements to CFMAIL, which was a dog in past versions of ColdFusion, with the self-imposed 24,000 max per hour limit. Most servers reported limits of 5000-10000 per hour. The new CFMAIL will supposedly deliver over a million messages in an hour. The bottleneck with email is not in CF any more. In most cases, it will probably outperform your mail server and require that you "turn down" the outbound mail threads from the ColdFusion server. Yes, CFMAIL now allows you to specify a thread count for outbound emails. The best advice for this setting is to start with a small number (maybe 10-20) and increase it if your mail server is able to handle it.

Another enhancement to CFMAIL is the ability to specify alternate "backup" mail servers. The CF Administrator (Enterprise version only) allows you to add a comma-separated list of backup mail servers that will "kick in" if the primary mail server is unavailable.

The <cfmailpart> tag allows you to specify text and html parts of a multipart email. This was one of the top requests by many people, as ColdFusion had no built-in way to accomplish this, and CFMX made it very hard to use an old hack that allowed multipart messages. The <cfmailpart> tag has syntax like this:

<cfmail to='someone@somewhere.com'
from='"SomeoneElse" <someoneElse@somewhereElse.com>'
subject="This is a test of CFMAIL">
<cfmailpart type="text/plain">
This is a text message
</cfmailpart>
<cfmailpart type="text/html">
<html>
<body>
This is an <strong>HTML</strong> message.
</body>
</html>
</cfmailpart>

I always use include files when building emails, and this is fully supported by <cfmailpart> as well:

<cfmail to='someone@somewhere.com'
from='"SomeoneElse" <someoneElse@somewhereElse.com>'
subject="This is a test of CFMAIL">
<cfmailpart type="text/plain">
<cfinclude template="textMessage.cfm" />
</cfmailpart>
<cfmailpart type="text/html">
<cfinclude template="htmlMessage.cfm" />
</cfmailpart>

Another new attribute that I've been clamoring for and is finally here is the ability to specify a return-path. This is done with the new failto attribute. All messages that bounce back after sending them out will now go to the failto address rather than the from address. This allows you to set up a mailbox to capture bounced messages rather than have them pile into your email account -- or your client's email account. Other new attributes include username, password, wrapText, and replyto. See the CFMX documentation at http://livedocs.macromedia.com for a full description of the new CFMAIL functionality.

CFHTTP

Enhancements have also been made to the <cfhttp> tag. It includes full support for HTTP 1.1 operations (get, post, head, put, delete, trace, options). CFMX only supported get and post. Also, multipart, getAsBinary, proxyUser, and proxyPassword attributes were added to the tag, and a cfhttp.errorDetail return variable.

One of the major enhancements to CFHTTP is the ability to post multipart data. The <cfhttpparam> tag would be used with a type="file" attribute. The file content would then be sent to the page in the body as a multipart/form-data request.

CFHTTP functionality is significantly enhanced with many more features too numerous to mention here, such as proxy tunneling using SSL and the ability to use <cfhttpparam> tags in all operations. For a full list of the new functionality, check out the newly revised documents at http://livedocs.macromedia.com.

CFAPPLICATION and CFLOGIN

One of the new features of CFMX was the <cflogin> tag, which allowed the easy creation of a user login framework. The one problem with <cflogin> was the inability to tie the login to a session. That has been fixed in CFMX 6.1 with the loginStorage attribute of <cfapplication>. When this is set to session, the user logged in with a <cfloginuser> tag will stay logged in until the session expires or the user is logged out with <cflogin>.

CFPOP

The 6.1 upgrade also includes an enhancement to <cfpop>. You can now retrieve text or html parts of an email message with the queryname.textBody and queryname.htmlBody attributes of the resulting CFPOP query. Formerly you could only specify queryname.body.

More enhancements

Other enhancements include enhancements to Web services, CFCs (super keyword), COM object invocation (and the ReleaseCOMObject function), JDBC driver updates (including UNICODE support for MS Access), character set fixes, and over 400 general bug fixes. For the full set of release notes, including the list of bug fixes, see the support documentation at http://www.macromedia.com/go/coldfusion.

Conclusion and Opinion

I've been working with ColdFusion on and off since version 2, and I have to say that this is the most welcome upgrade ever. The upgrade from CF 5 to CFMX was a huge change, but was not as smooth as it could have been. CFMX had some issues with CF5 compatibility, and also some reliability and stability issues. Because of that, many people were simply not upgrading their production servers. Stability seems to be much better in this upgrade. I've been running the beta on my own production server without problems.

Also, this new upgrade improves performance so much that I think it must outperform just about anything else out there. CF 5 was fast, and CFMX was at least as fast as CF 5, but this upgrade simply flies. It is really a pleasure to work with. If you do any operations with CFMAIL or third party replacements, you should reevaluate your code and look at the new functionality. If you're interested in CFCs but haven't wanted to deal with some of the other issues in CFMX, give it a try. In short, If you've resisted upgrading to CFMX, now is the time to do it.