New in 13: Data & Function Repositories
Two years ago we released Version 12.0 of the Wolfram Language. Here are the updates to the Data and Function Repositories since then, including the latest features in 13.0. The contents of this post are compiled from Stephen Wolfram’s Release Announcements for 12.1, 12.2, 12.3 and 13.0.
Making the Data Repository Easy (March 2020)
We launched the Wolfram Function Repository in June 2019, and there are already 1146 functions published in it. One of the innovations in the Function Repository is a very streamlined process for submitting new functions, applicable both for the public Function Repository, and for individual deployment on a single machine, or in the cloud.
In Version 12.1 we’re introducing a new, streamlined submission mechanism for the Data Repository. File > New > Repository Item > Data Repository Item gives you:
Then if you’ve got, say, a Dataset, you just insert it in the notebook, then add examples (using the Insert ResourceObject button to insert references to the object you’re creating). When you’re done, press Deploy, and you can deploy locally, or privately or publicly to the cloud. Lots of checking just happens automatically (and if there’s something wrong you’ll usually get a suggestion about how to fix it).
My goal was to make it so that a simple Data Repository entry could be created in just a few minutes, and I think we’ve streamlined and automated things to the point where that’s now possible.
The Advance of the Function Repository (December 2021)
When we launched the Wolfram Function Repository in 2019 we didn’t know how rapidly it would grow. But I’m happy to say that it’s been a great success—with perhaps 3 new functions per day being published, giving a total to date of 2259 functions. These are functions which are not part of the core Wolfram Language, but can immediately be accessed from any Wolfram Language system.
They are functions contributed by members of the community, and reviewed and curated by us. And given all of the capabilities of the core Wolfram Language it’s remarkable what can be achieved in a single contributed function. The functions mostly don’t have the full breadth and robustness that would be needed for integration into the core Wolfram Language (though functions like Adjugate in Version 13.0 were developed from “prototypes” in the Function Repository). But what they have is a greatly accelerated delivery process which allows convenient new functionality in new areas to be made available extremely quickly.
Some of the functions in the Function Repository extend algorithmic capabilities. An example is FractionalOrderD for computing fractional derivatives:
✕
|
There’s a lot in FractionalOrderD. But it’s in a way quite specific—in the sense that it’s based on one particular kind of fractional differentiation. In the future we may build into the system full-scale fractional differentiation, but this requires a host of new algorithms. What FractionalOrderD in the Function Repository does is to deliver one form of fractional differentiation now.
Here’s another example of a function in the Function Repository, this time one that’s based on capabilities in Wolfram|Alpha:
✕
|
Another similar example is:
✕
|
Some functions provide extended visualization capabilities. Here’s VennDiagram:
✕
|
There are many ways to imagine handling more complicated cases; this function makes a particular choice:
✕
|
As another example of a visualization function, here’s TruthTable—built to give a visual display of the results of the core language BooleanTable function:
✕
|
Some functions give convenient—though perhaps not entirely general—extensions to particular features of the language. Here’s IntegerChop that reduces real numbers “sufficiently close to integers” to exact integers:
✕
|
Here’s an example of a function that perhaps one day will be in the core language. But for now the most common cases of it are provided by a Function Repository function:
✕
|
There are lots of functions in the Function Repository that give specific extensions to areas of functionality in the core language. BootstrappedEstimate, for example, gives a useful, specific extension to statistics functionality:
✕
|
Here’s a function that “remaps” the Mandelbrot set—using FunctionCompile to go further than MandelbrotSetPlot:
✕
|
There are some functions that definitely seem “niche”—but are extremely useful if you need them:
✕
|
Then there are functions that make “current issues” convenient. An example is MintNFT:
There are also “functions for fun” (that can definitely also be useful):
✕
|
And there are functions that might be considered “insider” humor:
✕
|
By the way, it’s not just the Function Repository that’s been growing with all sorts of great contributions: there’s also the Data Repository and Neural Net Repository, which have also been energetically advancing.