[Looking for Charlie's main web site?]

The many new and improved features in CF2021

You may have heard that the newest version of CF has been released, ColdFusion 2021. If you've not yet taken a look at what's new, you may be very surprised to find how much there is: from substantial support for several cloud services, to significant changes in CF installation/configuration/deployment, to dozens of new language features, as well as single sign on/SAML support, new kinds of databases supported, several enhancements to the PMT, cf admin-related changes, and more.

As with each CF release, there are features great and small--ones that may "sell" it, and ones that may simply make your life easier.

This is a follow-up to my post from last month, Getting started with "Project Stratus" public beta, aka CF2021. In that I highlighted some key info one would need to get started USING the prerelease, which came out in August, but I only briefly mentioned then some of the key new features. (I also explained why I had referred even then to it being CF2021, given info I'd found in the prerelease.)

In this post, I want to highlight more clearly what those new features are, nearly 60 of them in several categories!--just with a brief mention of the feature and perhaps its sub-features--and most important with a pointer to where to find them discussed in far more detail.

CF2021 has been released

Update:

Just hours after I posted this, I woke to find that CF2021 had been released. What a surprising coincidence! I have edited this post regarding where to find info on the features.

Originally, I had pointed to the pre-release's 500-page release notes, which was available then (and still is to anyone who joined or joins the open beta, whose link is in the first post. The prerelease site and doc will be removed in time).

Now with it released, all that info is in the online docs instead, and I have started to change my references from pages in the beta release notes to links to the online docs. That will take some time.

But otherwise everything I said below still stands. I may also tweak the content if there's new information since the final release. More likely, I will create also a new post in the weeks to follow, sharing new info that has been discovered now that the release is final.

Update:

And here is a prime example of that. Two weeks on, I helped a client uncovere a fairly nasty problem that may affect others, if you use any date formatting functions. Fo more, see my post here.

Finding the info for yourself in the beta, if you dig in

Even though anyone could/can see that huge public beta release notes doc (once they've signed in), there was still a real challenge given the order and organization of the table of contents, which was several pages and without clear sectioning: it showed only a couple of levels of hierarchical order with no change in font size to distinguish levels. So one could be forgiven in not quite discerning the many different sections and what all was new. So I did the digging for you, to create this.

(Of course, I have to dig into these things, to do my "hidden gems" talk on the new CF release, which has been a staple since my first one, "hidden gems in 4.0.1" in Feb 2000, and which I'll be giving on cf2021 next week at the online ColdFusion Summit. And as always, I'll go even beyond just gems within those stated features--which features many could still miss/never hear about--to still more discovered in working with r beta and the first week of the release.

So I've done the dirty work for you, gathering up and organizing the many, many features. And rather than present them in the same order they appear in the release notes, I present them in an order and grouping which I think is a bit more logical to most folks. (I sense that the release notes doc had sections appended to the end rather than folded into their appropriate place within the document.)

The features

So with all that as preface, here finally are the features themselves.

Note that part of what made the release notes so sizable Was that nearly every new feature had a working example offered, to help you easily get started taking advantage of that feature. Fortunately, those have been carried into the final online docs.

But another reason for the size was also the breadth of functionality in some of the new features, such as 70 pages each on AWS S3 and on mongoDB, and half or a quarter as much content on each of several other new features.

So, lots to dig into. Enjoy!

1) CF installation and configuration features

One of the main goals of this next release is that it be smaller "out of the box", and better able to be configured in an automated way. There are a few ways this is being achieved. The current CF installer (or WAR file or Docker image) tends to be several hundred megs in size. With CF2021, the aim is to make it orders of magnitude smaller.

And one of the primary ways that's being done is by breaking the CF feature set into separately installable modules (or "packages"), which can controlled by an available package manage, cfpm. That also includes an optional code scanner (to identify what "packages" are needed for a given set of CFML code), a downloadrepo feature (for those needing to provide for offline access), an available interactive or non-interactive cli (for working with the cfpm tool), and a related CF Admin page for viewing/managing packages implemented in a given CF instance.

Also, while the traditional GUI-based installer remains (still about a gig in size, sadly), a new much smaller zip-based installer has been offered (less than 150m in size), with a cfinstall script for configuring it. Finally, a new feature has been added to permit json-based capture or import of CF Admin settings, again to facilitate automated deployment (similar in many ways to the cfconfig module of Commandbox, but different).

These features are discussed in the following sections of the pre-release release notes document:

  • Installation zip and cfinstall script (7 pages in its online docs, was pp 22-24 in the beta docs)
    • again, the page numbers referred to here are the pages in the release notes document of the Project Stratus public beta, which is linked to in my other post above. I am leaving the page numbers here in case some may still want to refer to them, and since I'd already done the work. I will continue to edit this document until I have added links to the online docs if available for each feature
  • cfpm package mgr (13 pages in its online docs, was pp 26-31 in beta docs)
  • cfsetup (24 pages in its online docs, was pp 465-481 in beta docs)

2) CF deployment options

Related to the above, another goal of CF2021 is to provide for more flexible deployment options, whether in the cloud or in containers. First up is serverless deployment of CFML via an AWS Lambda capability. Known also as "functions as a service", with serverless there is still a server "somewhere"--but you don't need to know about it or manage it. And to now, you may only have heard of folks deploying Lambda's using python, node.js, go, and other popular languages. Now you can do it with CFML!

Similarly, have you been wanting to consider deployment of your CFML app via Docker or Kubernetes, whether on-premise or in the cloud? Some know that Adobe has provided CF Docker images for CF2018 and 2016, since 2018 (see my post about getting started). CF2021 continues that effort, with a new, smaller image that starts faster.

Finally, some people are interested to deploy CF and their CFML apps as a JEE Web ARchive (WAR) format, and while CF has offered the ability to create that from within the CF installer or admin since CF6, now a WAR file for CF (again, smaller and supporting all the other features here) is available for direct download instead (at the bottom of https://www.adobe.com/products/coldfusion/download-trial/get-started.html)

  • AWS Serverless ColdFusion (7 pages in its online docs), or pp 443-450 in the beta docs)
  • Docker (8 pages in the online docs for those, though it's not specific to the CF2021 images, as had been discussed on p 508 in the beta docs). The new images are half the size and twice as fast to startup as the previous releases.
  • WAR file deployment (p 24 in beta docs)

3) Cloud services integration features

With CF2021, Adobe is moving full speed ahead with support of cloud-based services. While CF has long had support for Amazon S3, for instance, that support is vastly improved. Perhaps more important to many, Adobe has added support for MANY different AWS as WELL as Azure services. Indeed, most of the page count in the release notes document is devoted to these topics. Rather than list them here in words, I will just list them below:

  • Overview (pp 31-36 in beta docs)

  • AWS S3 (storage) enhancements (77 pages its online docs, was pp 38-94 in the beta docs)
  • Azure Blob storage (48 pages in its online docs, was pp 101-129 in beta docs)

  • AWS SQS (message queuing) (44 pages in its online docs, was pp 129-146 in beta docs)
  • Azure Service Bus (msgqueuing) (24 pages in its online docs, was pp 163-178 in beta docs)

  • AWS DynamoDB (36 pages in its online docs, was pp 178-271 in beta docs)
  • Azure Cosmos DB (3 pages in its online docs, or pp 361-64 in beta docs)

  • AWS SNS (notification) (44 pages in its online docs, was pp 147-162 in beta docs)
  • AWS SES (email) (pp 506-7 in beta docs)

Again, each of these has a dozen (or even dozens of) subtopics, so see the docs and the release notes TOC for details. After the final release, again I will update these notes to point to the final location of online resources about all the features in this post.

4) Other new and improved features

If Adobe did nothing more in this release than the things above, it would be lauded by many as a very ambitious and far-reaching new release. But what if your'e not yet moving to the cloud? or don't have a concern about CF's install size or configurability, or deployment alternatives? You're not left out. There are still other new or changed features in CF2021.

First up is for SAML (single sign-on and federated identity) support, configuring either an IdP (Identity Provider) and SP (Service Provider). Many people have waited years for this, relying on 3rd party libraries and services.

Next is new (and deep) support in CFML for noSQL databases, first the open source MongoDB (but consider also that AWS DynamoDB and Azure CosmosDB mentioned above are also noSQL DBs).

5) Language enhancements

For some people, all that matters is how the CFML language evolves. Maybe they have no need to leverage new features, but they do need to continue to develop and maintain CFML code. Maybe they see new styles of coding supported in other languages (or Lucee). Maybe they hit a brick wall with some capability that was simply missing in some existing script, tag, or function.

As with most releases, CF2021 has added a bevy of language enhancements. Indeed, there are so many that I have broken the list into some logical groups (again, of may own making, and not in the order the topics are presented in the release notes).

Update: with the final release, there is now a single page listing most of the language enhancements. It doesn't quite match mine, but it does offer online links to most of the features. Until I get to updating the links below, that page is online here.

First up are some core language features, which expand how CFML can be written:

  • Support for parallel programming (pp 364-369 in the beta docs), including in arrays, structs, and queries
  • Immediately invoked function expressions (IIFE) (8 pages in its online docs, pp 380-388 in beta docs)
  • Iterable objects, via Spread and Rest operators (5 pages in their online docs, pp 388-395 in beta docs)
  • Iterator support for CFCs (4 pages in its online docs, pp 401-403 in beta docs)
  • Support for static fields and methods for CFCs (3 pages in its online docs, pp 403-405 in beta docs)
  • Identity operator, "==", testing if items are of the same type (one page in half a page in its online docs,p 372 in beta notes)
  • Case-sensitive and ordered structs (3 pages in its online docs, pp 431-443 in beta docs)
  • Property shorthand (2 pages in its online docs, pp 438-442 in beta docs)
  • Merging structs (2 pages in its online docs, p 417 in beta docs (where it was not listed in TOC as own feature)
  • "Destructuring assignment" feature for structs, arrays (2 pages in its online docs, pp 418-425 in beta docs)
  • Dynamic switch case (5 pages in its online docs, pp 426-431 in beta docs)

Next are some language changes related to how specific existing CFML functions/features work:

  • New bcrypt and scrypt functions, for creating password hashes (where scrypt adds more features) (were not in beta docs)
  • Return type for cfquery and queryExecute (json/array, array, query) (pp 374-5 in beta docs)
  • New array methods/member functions: ArrayPush, ArrayPop, ArrayShift, ArrayUnshift (pp 405-409 in beta docs)
  • Strings as collections: StringSort, StringFilter, StringReduce, StringMap, StringEach, StringEvery, StringSome (pp 409-414 in beta docs)
  • New "start" arg for replace/replaceNoCase functions (pp 375-7 in beta docs)
  • Support for enhanced/nested savecontents in cfscript (2 pages in its online docs, see top and bottom of online docs page, p 369 in beta docs)
  • Label support for loops with break and continue (3 pages in its online docs, p 373 in beta docs)
  • Support for Base64Url encoding in binaryEncode/binaryDecode functions (pp 414-415 in beta docs)

Next are some new ways that Java can be integrated with CFML (adding to the long-standing integration that CF has had, starting with CF 4.01, with more in CF6, and still more in CF10):

  • Create and execute Java within CFML (2 pages in its online docs, pp 370-372 in beta docs)
  • Support for implementing/extending Java Interfaces (3 pages in its online docs, pp 395-401 in beta docs)

Finally are some other rather random additions:

  • Set time zone at app level (p 363 in beta docs)
  • New Application.cfc values for many of the new features added in CF2021 (pp 377-379 in beta docs)

Phew, that's a LOT of language enhancements, like I said!

6) Administration enhancements

But maybe you're not a developer. Maybe you're responsible for managing CF, and the Admin in particular. There are a few changes you should know about. Some are related to the other new features mentioned above, but not all. Indeed, even developers may be interested to learn of that first point below:

  • Addition of AWS Elasticache and Azure Redis cache, as CF distributed caching options (pp 504-505 in the beta docs)
  • Addition of Azure Redis cache as CF session storage option (p 504 in beta docs)
  • Support for datasource definition for multi-cloud RDS databases (1 page in its online docs, or pp 502-503 in beta docs)
  • New admin and admin API features related to most of the new features above (see docs above)

7) PMT enhancements

Finally, as you may know, CF2018 had added a new CF monitor, replacing the CF Server Monitor that existed in CF8 to 2016. While that monitor was for CF Enterprise only, the new PMT (Performance Monitoring Toolset) is available for CF Standard or Enterprise (as well as Developer, of course). CF2021 has added many improvements to the PMT. While a few are related to new features added in CF2021, most are simply enhancements to how the PMT works, addressing challenges that users may have encountered. Again, let's look at these in groups.

Update: With the final release of CF2021, there is a section of the "what's new" document on what's new in the PMT, listing some of the same features below. Until I get to adding specific links for each sub-feature, see that page for the current online links.

First, let's look at the changes made in managing the PMT:

  • New PMT Update installation feature (pp 496-497 in the beta docs)
  • Support for SSL access to PMT Datastore/elasticsearch (p 481 in beta docs)
  • Support for authenticated access to PMT datastore (p 482 in beta docs)
  • Improvements for deleting data from the PMT datastore, manually or on a schedule (p 482 in beta docs)
  • Ability to clear alerts (p 485 in beta docs)

Next, let's look at features that increase the functionality and day-to-day use of the PMT:

  • Capture requests that exceed a certain threshold (p 486 in beta docs)
  • Tracking of bytes in/out per second (p 497 in beta docs)
  • Active monitoring of sessions, async threads (p 499, p501 in beta docs)
  • More easily add "top slow URLs" to code profiler (p 500 in beta docs)
  • Monitoring system memory (p 501 in beta docs)
  • Tracking cache usage over time (p 502 in beta docs)

Last but not least, here are the PMT enhancements made in support of the new features added in CF2021:

  • Monitoring S3 buckets (p 487 in beta docs)
  • Monitoring Azure Blob containers (p 488 in beta docs)
  • Monitoring Amazon SQS queues (p 490 in beta docs)
  • Monitoring Amazon SNS topics (p 491 in beta docs)
  • Monitoring Azure Service Bus queues (p 493 in beta docs)
  • Monitoring AWS DynamoDB operations (p 494 in beta docs)
  • Monitoring MongoDB operations (pp 339-344 in beta docs)

So wow, that's indeed a LOT that's new or improved in CF2021!

And there are still more things, including "hidden gems" and other facets that I have not indicated here, because this was focused on what was listed in the prerelease's 500-page release notes document. I will offer more in that upcoming "hidden gems in 2021" talk, and I also plan to offer a blog post with the other info in time. And I may well do additional blog posts on some of these and other new aspects of CF2021.

I hope you are encouraged to go explore things. You could be kept busy for days simply trying everything out, but most important the hope of course is that any or many of these things will help make your life easier as a CF developer, administrator, architect or organization.

Long live CF!

For more content like this from Charlie Arehart: Need more help with problems?
  • If you may prefer direct help, rather than digging around here/elsewhere or via comments, he can help via his online consulting services
  • See that page for more on how he can help a) over the web, safely and securely, b) usually very quickly, c) teaching you along the way, and d) with satisfaction guaranteed
Comments
As always Charlie, you rock! Thank you for this post and grouping the improved and new features with references on where to read more about them! This was definitely a nice surprise from Adobe today and great timing for your post!
# Posted By Giancarlo Gomez | 11/11/20 9:34 AM
Thanks, of course, GC. And as for the timing, well, I do wish I had gotten this out days or even weeks before, to help folks in assessing things during the beta. I had meant to, but as you can see it was a lot of work and just took time.

And I should note that Saurav from Adobe happened to post a discussion in the CF forums that presents a different take on summarizing the changes, and linking to the new online docs. It's at:

https://community.ad...

And I have already started updating my post here with those links to the online docs. For now I will keep the page numbers for the release notes, in case it helps anyone with that PDF, and while I get all the links to docs updated (where possible).

I must say that had I waited even 12 hours, I don't know if I'd have bothered posting my note, given his. :-) Still, there are indeed ways that our lists differ, so I'll certainly keep this here, for future reference and posterity if nothing else. :-)

Again, I was already doing a lot of the research and organizing in anticipation of my hidden gems talk next week anyway, so I don't regard it has having been a waste of time. Just wish I'd gotten it done much sooner for folks.
# Posted By Charlie Arehart | 11/11/20 11:48 AM
Any chance of a direct link to the 500 page release notes? I downloaded the 2021 release but was not in a position to install it just yet but would love to read the notes.
# Posted By John Varady | 11/11/20 12:05 PM
John, I have considered that, but I would not be authorized to do that without permission, I think.

But I HAVE been updating the post to link instead to the online docs for the final release. Are you seeing those? :-) If you need one you don't see, let me know.
# Posted By Charlie Arehart | 11/11/20 12:10 PM
Charlie,

Have you seen any updates on the licensing model for this release. It's pretty clear they are pushing to allow Docker/Cloud deployments, but they haven't published updated licensing terms yet. I can only find the licensing restrictions/notes from the previous release, which still has the unfriendly cloud restrictions (counting CPUs on the host, etc).

I'm also seeing that activation is now required to license CF. I'm wondering how that works with the Docker setup, since it seems that you need to login to the CF Administrator to activate that process every time you launch the instance (I might be mistaken in that, but the docs aren't really clear).
# Posted By Nick Kwiatkowski | 11/11/20 1:49 PM
Great job Charlie. I like how you organized the different areas as there is so much information that is included the new release. Again, great job.
# Posted By Drew Nathanson | 11/11/20 2:36 PM
Nick, good questions. Let's take them one by one.

As a TLDR, the EULA is indeed available (more in a moment), but I'm afraid nothing suggests they improved things, especially as was asserted (by some at Adobe) that things would get better at least with respect to Docker licensing. And I agree that there are important questions about the (surprising) new activation feature especially with respect to container. I have thoughts on all these.

1) First, as for finding the EULA, I have a post covering that, including finding it online or on your local machine if you have CF installed or unzipped (per the new Express/Zip installer). I have updated the post today to discuss that. It's at https://coldfusion.a...

2) As for docker licensing, that's not mentioned in the EULA specifically, but I had also done a post in the past on the CF Docker licensing, and I'm sad to report (as I also updated in that post today) that things have not changed:
https://coldfusion.a...

I don't know if it's that the assertions (which so many of us had high hopes about) were dashed by others in the company, or just that someone forgot about it.

2a) Folks concerned about these matters should make noise. Don't just "vote with your feet" and leave. If everyone with such concerns does that, nothing will improve. (And I don't think there would be enough doing it that Adobe would notice some great drop in revenue.)

But press the point. They need to hear from more than me. And they don't likely see my posts.

3) Finally, as for the new activation, yep that was a surprise when I saw it today. There was no mention of it during the beta (perhaps understandably). And I agree that it's not quite clear, on a few points.

First, note that the "usage" tab there clearly is about Docker container usage, and that being PRODUCTION use (development use of CF and CF Docker images remains completely free). But the UI says that the usage info is only populated if you have a license key installed in that CF instance. (I don't yet have a CF2021 license key to try things out.)

A first question I'd have is whether it's that whatever license key one puts into the CF instance showing that Admin, is it monitoring for containers using that same license?

A second--and it's yours also--is how will the activation work AT ALL with Docker containers. I can't imagine that they will have to be "activated", the way a server/express install of CF would be (the docs for that even acknowledge how challenging that is for those who may be very secure or firewalled environments, and they offer a manual approach which could take 72 hours to take effect).

That clearly won't work for Docker containers.

Again, I don't have a license to try things, and they have not elaborated on it beyond what's in the docs on activation. My sincere HOPE is that the Docker containers will NOT have to "activate". That would be painful--indeed a veritable nail in the coffin for their use.

3a) And then I wondered "maybe it would just broadcast to the activation service that the license is 'in use', and then someone using that same license key in another deployment could see it in their CF Admin."

There are at least 2 problems with this: it lacks security (beyond the randomness of licenses) to ensure the usage is visible only to an "authorized" person holding the key.

And of course, if the Docker container can't access the internet (or is configured so as NOT to), what would happen then? Judging by the docs about activation in general, it's indicating that the instance would revert to the Developer edition. That might be disastrous in some deployment scenarios--though some other would accept it as "better than not working at all".

3c) Here again, we who are interested in these topics need to make noise about it. And again I'd recommend that my blog here won't be the right place to get Adobe's attention. One could reach out to the cfinstal@adobe.com email address, as that's about free installation support--and this fits into that, as it's about initial setup of a Docker container.

I really hope we get clarity on this, because otherwise it will be a big black eye for CF and those who wanted to promote its use in containerized deployment. The EULA issue for containers in CF2016 and 2018 was bad enough, but this may push some over the edge (even just the news of it, and even if later there is clarification, correction, or improvement).

And certainly, if anyone learned of anything new about this, please DO share it here, as I will try to remember to do. Thanks.
# Posted By Charlie Arehart | 11/11/20 4:40 PM
Thanks for the kind regards, Drew. I could quip that "I do it for the kids", or that "I'm a glutton for punishment". :-) But really it's just that it's how I'm wired.

Like most in IT, I suspect, we just like to organize things--and see them presented in a reasonable order. When I saw that TOC in the huge release notes doc, it just kept turning me off and kept me from wanting to dig in. But then I HAD to, and so I set about tracking this info and organizing it, then finally presenting it.

Hope it benefits many.
# Posted By Charlie Arehart | 11/11/20 4:51 PM
Thanks Charlie.

It looks like they just updated the EULA after I posted and I was able to find the one dated for 2020. And as you noted, nothing really changed. That is disappointing, since it really steers people away from the product if they are paying attention.

I had a brief conversation with my reseller about the licensing -- more out of curiosity. His guidance was that was given to him was that if you are deploying on Docker or the Cloud (or really anything other than a bare metal server), you need to enter a custom agreement with Adobe. Enterprise or Standard won't do. With most servers shipping with 8-20 cores these days, I'd argue /most/ people would still run afoul the letter of the agreement unless they specifically buy a smaller server.

The conversation about custom contracts gets interesting. One of the first questions they need to ask is about your revenue model. He said that he would offer a contract of 15% of our revenue as an initial offer. As a GovRamp customer, that model is not a thing, and I didn't really bring up alternatives if I wanted to go down that route.

I don't know what we have to do to have Adobe hear us on this licensing issue. The community has been screaming about it for at least 10 years -- and I know I've brought it up before that. I had some home when I heard they were going to figure it out for this release (which, at least means they heard us), but the fact nothing has really changed really stings. They are really putting people who want to remain legal into a corner (or more likely, they don't want to have a set license cost they can publish and just want to sell it custom each time, depending on the use case).
# Posted By Nick Kwiatkowski | 11/12/20 8:26 AM
The problem is still in the license agreement the "service bureau" statement and so unfortunately nothing has changed in the new version of Cold Fusion.

But the wait is at least now over and I can go on.
# Posted By Kenneth | 11/12/20 12:03 PM
Thank you very much for posting this Charlie
# Posted By Randy | 11/13/20 6:30 AM
Hi Charlie,

Thank you for the info, it's most useful.

Just a question - have you heard anything about access to the CF2018 packages being discontinued? We are trying to download a copy of CF2018 for a legacy system, but the links to CF2018 at Adobe all now redirect to CF2021.
https://www.adobe.co...

I am hoping this is just a mistake on the website?
# Posted By SB | 12/1/20 9:28 PM
SB, that is not "new" info, nor is it a mistake. It's what happens with each CF release in recent years.

Once the new version comes out, the old is removed and no longer accessible on the Adobe site (except at licensing.adobe.com, if you bought a license). They also no longer sell it, but instead from that point forward one can only buy CF2021.

It's an odd choice, though it happens with some other Adobe products and also with some other companies.

As for what one can do, if they really want CF2018, note that you can find it and other older versions of CF (almost to the start of CF) at cfmlrepo.com.

As for this info, I need to do a new blog post, to follow-up on this first one, to share things like this that we couldn't know FOR SURE before the final release.
# Posted By Charlie Arehart | 12/1/20 9:38 PM
Thanks Charlie, that's exactly the info we needed to move forward. Much appreciated.
# Posted By SB | 12/1/20 10:03 PM
Copyright ©2020 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting