Message Boards Message Boards


CloudExpression major update in future Cloud release

Posted 10 months ago
6 Replies
12 Total Likes

CloudExpression major update

CloudExpression project is being completely reworked. The Wolfram Language functionality mostly remains the same, but the server side implementation is totally changed. The old system will keep on working for some Cloud releases, but as a deprecated service, and, ultimately, it will be discontinued.

The new implementation will be deployed fairly soon, it's scheduled for the 1.60 Wolfram Public Cloud release. It involves an update of both the cloud servers and the CloudExpression paclet.

This post intends to explain what will happen during the update, lists the possible caveats and the tools we will provide to make the transition as smooth as possible.

The CloudExpression Paclet

The legacy paclet v0.1.0

The legacy paclet v0.1.0 shipped with Mathematica 12.3, will keep on working with old cloud expressions, even after the cloud update. It will not work with the cloud expressions created with the new version of the paclet.

The new paclet v1.0.0

The new paclet v1.0.0 will be available on our public paclet server right after the cloud release containing the cloud expression rework. It may auto-update or one can manually trigger the update using: PacletUpdate["CloudExpression"].

This version only works with new cloud expressions, but provides tools to migration old cloud expressions.


The new paclet provides some utility functions to help transition from the old system to the new one. These are available in the CloudExpression context. To access them, one needs to call: Needs["CloudExpression`"];


This is the main function, it takes a legacy cloud expression and migrates its value. The operation is transparent, it's an in-place update. This function should be applied once per legacy cloud expression as in:


Note: anonymous cloud expressions are not migrated in place, instead a new anonymous cloud expression is created. The function returns a success object specifying the new UUID.


Returns a list of all the legacy cloud expressions. It's the counterpart of CloudExpressions[] for legacy objects.

Conveniently migrate all named cloud expressions: Map[ MigrateLegacyCloudExpression, LegacyCloudExpressions[] ]


Returns the entire expression stored in a legacy cloud expression. This utility function can be used to retrieve the value of an old cloud expression, after the paclet has been updated, and without the need to downgrade to version 0.1.0.

Note that when using the new paclet, operations on old cloud expressions are restricted to only a sub-set of functionalities. Those required to migrate cloud expressions. The full feature set is only available in the old version 0.1.0.


Returns the PartProtection status of a given legacy cloud expression.

Servers update

As soon as the servers are updated, the new version of the CloudExpression paclet will run on cloud kernels. It means that deployed code will cease to work until a migration is performed.

Users running the old paclet (i.e. version 0.1.0 shipped in Mathematica 12.3) will still be able to work on old cloud expressions as before.

We'll use this post to centralize updates about the project. Specifically, we'll post a message when the cloud runs the new version, and one when the new paclet is available which is expected to be right after the cloud update is complete.

Best regards, Dorian Birraux.

POSTED BY: Dorian Birraux
6 Replies
Posted 10 months ago

Thank you for the heads up.

Heads up like this are very helpful.

POSTED BY: Mike Besso


POSTED BY: Dorian Birraux
Posted 10 months ago

Dorian, the details of your post is not that clear to me. For example:


Returns the entire value of a legacy cloud expression. Note that the new paclet only provides the set functionality required to migrate cloud expressions. Full feature set is only available in version 0.1.0.

What does this really mean? When/where/how to use this function?

POSTED BY: Hans Milton

I have rephrase this section which wasn't exactly crystal clear.

Basically this is a convenient way to access to expression stored in an old cloud expression, while having the new version of the paclet. It's also required to migrate data.

Most user should just migrate and use the new paclet. The migration function is doing a backup of the expression in a file during the process, but one may want to do an additional backup using LegacyGetCloudExpression. Also, one may just check the value of the cloud expression see if it's worth migrating it, or delete it.

POSTED BY: Dorian Birraux

enter image description here -- you have earned Featured Contributor Badge enter image description here Your exceptional post has been selected for our editorial column Staff Picks and Your Profile is now distinguished by a Featured Contributor Badge and is displayed on the Featured Contributor Board. Thank you!

POSTED BY: Moderation Team

Looks like the 1.60 is now on the public cloud. I got the failure "Cloud expression operation failed: {Invalid CloudExpression. Target is a legacy CloudExpression. Please consider migrating it using the Wolfram Language function: CloudExpression`MigrateLegacyCloudExpression.}" today and was able to use MigrateLegacyCloudExpression successfully on a couple of cloud expressions.

POSTED BY: Daniel Bigham
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract