Translation of Stephen Wolfram's post (Stephen Wolfram) " The R & D Pipeline Continues: Launching Version 11.1 ".
I express my deep gratitude to Polina Sologub for assistance in translating and preparing the publication.
Content
-
A small release is not bad either.-
Visual changes-
Many new features-
Neural networks-
Machine learning-
Audio-
Images and visualization-
More data-
Integrated external services-
More math, more algorithms-
Details of dates-
language setting-
Storage language-
Programming at a low level-
Strengthening infrastructure-
And one more thing
A small release is not bad either.
I am pleased to announce that version 11.1 of the
Wolfram Language (and
Wolfram Mathematica systems) has been released today. At the moment, version 11.1 is already running in the
Wolfram Cloud , and Desktop versions are already available for download for Mac, Windows and Linux.
What's new in version 11.1? In fact, a lot of things. In
short :

')
There are a lot of new things in it. You might think that the release of .1 almost 29 years after the release of version
1.0 is hardly surprising. However, in the case of our company, things are different. Since we have built the whole stack of technologies available now, we are only accelerating in our development. And now, even in version 11.1, many new features are introduced.
Visual changes
Immediately striking that the documentation looks different. We have optimized the design, which has now become adaptive, so the window looks good even when it is open in a narrow sidebar in the cloud or on a smartphone.

We also introduced some new elements like a preview window for the Details Details block. Most users would like to see examples immediately when they hit a function page.

Many new features
Here is a word cloud from the names of new features in version 11.1:

In total, the new version introduced 132 new functions (along with the other 98, which were substantially refined). These functions are the finished products of our R & D pipeline for several months that have passed since the
release of version 11.0 (see the
translation of the article on Habrahabr).
When we present the "integer" version (the number of which is just an integer), we, as a rule, introduce many new structures. In a (presumably) minor update like version 11.1 we are not trying to get new frameworks. Instead, as a rule, new functionality is added to existing frameworks, often with a few (sometimes “experimental”) layouts for newer, larger structures. Well, if the new framework turns out to be finished by the time of release of version .1, it is also included in it.
Neural networks
Neural networks are an important and “hot” area in which our company is making great strides forward, including those presented now in version 11.1. It is extremely interesting for me to keep track of how quickly this area of ​​knowledge is developing all over the world, and it's nice to know that all this time the Wolfram Language has been at the forefront of this development.
Our goal is to create a high-level interface for neural networks, fully integrated into the Wolfram Language. In version 11.1, some new, newly developed blocks have been added: in particular, 30 new types of neural network layers (two times more than in 11.0), together with automated support for recurrent networks. The idea is to allow the neural network to be symbolically defined in the Wolfram Language, in order to allow the language to automatically fill in the details using low-level libraries. This is very convenient for regular networks with direct connections; however, for return networks (with variable length sequences, etc.) this is a basic need in case you want to avoid low-level programming.
Another important feature of Wolfram neural networks is that they are configured to automatically encode images, text, or anything else. In version 11.1, the functions of
NetEncoder and
NetDecoder cover many new cases, expanding the list of those already integrated into Wolfram Language.
It is worth noting that under the entire integrated symbolic interface, the Wolfram Language uses efficient low-level libraries (currently
MXNet ), which ensure that the latest processors and GPU configurations are used with maximum performance. By the way, with the release of version 11.1, it became possible to store the complete specifications of the neural network in
.wlnet files.
A lot of effort requires the processing of neural networks as symbolic objects. In 11.1, there are now functions (
NetMapOperator and
NetFoldOperator ) that symbolically build new neural networks. And precisely because neural networks are symbolic, they are easy to manipulate: for example, “disassemble” them in order to control what they do from the inside, or to systematically compare the performance of different network elements.
In version 11.1 there is a convenient function -
NetModel , created to work with pre-trained or unprepared neural network models. To date, we have included only a small number of well-known neural networks, however, we plan to add them every week, finding what is being developed within the framework of the scientific community, as well as adding some of our own ideas.
Here is a simple example of how
NetModel works:

Now apply any factual data and see how the network finds the correct answer:

It is easy to “look inside” and “see what it thinks of” such a network. Here is a small visualization of what happens on each layer of the network - and yes: after all, the first square lights up in red, which means that the output is 0:

Machine learning
Neural networks are an important method of
machine learning . But one of the
main principles of the Wolfram Language is to provide a high degree of automation of functionality regardless of the basic methods. And in version 11.1, all this has become much more (as is often the case, for the most part the newest methods of in-depth training of neural networks are used for this, but for users it is important what they do and not how they do it).
My personal favorite among the new machine learning features in version 11.1 is the
FeatureSpacePlot . Give her any collection of objects, and she will place them in the appropriate "feature space." Here is an example with the flags of European countries:

The
FeatureSpacePlot function can immediately highlight complex features for specific input classes — photos, texts, etc. Now, there is also a
FeatureNearest function — similar to
Nearest , but working in feature space. Yes, and since all the material with
NetModel and pre-trained network models immediately falls within the scope of these functions, experiments with “value spaces” become common:

In particular, various useful neural network programs can be built with
NetModel . But in version 11.1 there were also some new machine learning features. Vivid examples are the
ActiveClassification and
ActivePrediction functions , which build classifiers and predictors by actively sampling the space and learning how to do it as efficiently as possible. There will be many more applications for the end user based on the
ActiveClassification and
ActivePrediction functions , but the most interesting thing for us is that we can use these functions to optimize all kinds of meta-algorithms built into Wolfram Language.
Audio
In version 11.0
, the process of integrating
audio (as was the case with
images ) in the Wolfram Language began. This process continued in version 11.1. For example, for stationary systems, the
AudioCapture function has been
added to record sound from a microphone to a computer (automatic processing of large audio samples is not a trivial task). For example, I say hello:

You can take this entry, and, say, make a
cepstrogram (yes, this is another new feature for working with audio in version 11.1):

Images and visualization
In version 11.1, a whole range of new features for working with
images and visualization has appeared .
CurrentImage has become faster and better. Many new effects have
been added to
ImageEffect . There are new features and capabilities for areas of
computational photography and
computational microscopy . And the images have become even more integrated as abstract objects of the language, with which you can, for example, immediately perform arithmetic operations:

And here's something else that I have long wanted: the ability to take a bitmap image and
find its approximate representation in vector form :

The
TextRecognize function
has also been significantly improved and is now able to distinguish the structural elements of the text: paragraphs and columns and the like.
Oh, and there are such things as
GeoBubbleChart (the population of the largest cities in the USA is shown here):

There are many more small (but nice) innovations: support for arbitrary
symbols in
pie charts , optimized classification of discrete
histograms , as well as full support for
scaling functions for
Plot3D , etc.
More data
New knowledge is constantly added to
Wolfram Knowledgebase , and since the release of version 11.0, many completely new things have been added: 130000+ new types of
products , 250000+
atomic spectral lines , 12000+ new
mountains , 10,000+ new well-known
buildings , 300+ types of
neurons , 650 + new
waterfalls , 200+ new
exoplanets (because they were recently discovered), and much more (not to mention the new writing of 7000+ words). Also, for example, a much higher resolution of the
geo-data of heights appeared , so now we can make a much more detailed 3D model, say,
Mount Everest :

Integrated external services
Integrated external services allow built-in functions to work by calling external APIs. Two examples are
WebSearch and
WebImageSearch functions . Here are the images found by searching on the Internet for "colorful birds":

Let's see what
ImageIdentify thinks about them (in version 11.1, the
ImageIdentify function became much more complete):

Since
WebSearch and
WebImageSearch use
external APIs , users must pay for them separately. But we created the so-called
Service Credits to simplify this process (available Service Credits can be viewed using the
$ ServiceCreditsAvailable symbol).
In future versions there will still be enough examples of integrated services, and in version 11.1 there is already
TextTranslation . The
WordTranslation feature (
introduced in version 11.0 ) translates single words from hundreds of languages; The
TextTranslation function uses external services to translate full text fragments between several dozens of languages:

More math, more algorithms
A significant part of our efforts is devoted to
expanding the boundaries of mathematical and algorithmic calculations . Therefore, it is not surprising that in version 11.1 certain progress was achieved in all these areas. These
are the space-filling curves ,
fractal grids , and methods for
uniform distribution of points on the sphere :

There are new types of
spatial ,
reliable and
multidimensional statistics .
Hankel transformations ,
working with the inverse of a given module , and much more. Even in the
D function
(the differentiation operator) something new appeared: the
n -
th function in the general form:

And one more thing about differentiation: the
RealAbs and
RealSign functions have now appeared, which are
Abs and
Sign versions, which are determined by the real axis, so now you can freely differentiate without having to make any assumptions about the variables.
In version 10.1, we introduced the
AnglePath function, which calculates a path from consecutive segments with given lengths and angles. At some level,
AnglePath is like the Logo (or Scratch) variant of the “turtle geometry”. However, the
AnglePath function
turned out to be surprisingly useful, so for version 11.1 we generalized it to
AnglePath3D (and, yes, there are all sorts of subtleties associated with
Euler angles and so on).
Date Details
When we say "June 23, 1988," what do we mean? Beginning of this day? Whole 24-hour period from midnight to midnight? Or what? In version 11.1, we introduced the notion of
detail for dates , so you can decide whether the date represents a year, day, or week, starting on Sunday.
This is a good example of the character nature of the Wolfram Language, and it solves all sorts of problems well when working with dates and times. Here, for example, how we now present the “current week”:

Current decade:

This is the next month:

And here it says that we want to start from next month, and then add 7 weeks - and get another month:

And here is the result of the month's detail:

The
Dated function can be used as a specifier, for example, for properties of subjects from the knowledge base (the result of a query about the number of New Yorkers in 1970 is shown below):

Language settings
I am very proud of how adaptable Wolfram Language is. We always try to add small amenities.
One of our principles is that if people do the same computational work, it should be embedded as a function. A very simple example from version 11.1 is
ReverseSort :

(one might think: what's the point? This is just
Reverse [ Sort [...]] . However, the
ReverseSort function
is often applied to a bunch of objects, and it is much easier to use the
ReverseSort / @ ... construct, rather than
Reverse [ Sort [#]] & / @ ... or
Reverse @ * Sort / @ ...) .
Another little convenience: for the
Nearest function, there are now special ways to set the values ​​obtained at the output. For example, this construction gives the values ​​of the 5 smallest distances (from the numbers in the list) to the number 2.7:
CellularAutomaton is a feature with a very wide scope of application. In version 11.1, you have an opportunity to set its parameters more easily, for example, using associations:

We always try to make sure that our innovations are applied as widely as possible. You can now use the
UpTo function in many places: for example, in specifying arguments to the
ImageSize function.
We also always strive for maximum generalization. So,
IntegerString now works not only with the standard representation of integers, but also with the traditional ones used throughout the world:

And
IntegerName can now also work with different types and languages ​​of names:

There are many more examples, each of which makes the experience of using the Wolfram Language a little more convenient.
Storage language
If you create a definition list of
x = 7 , or
$ TimeZone = 11 , then it will be saved until you delete it or until the session ends. But what if you want definitions to persist longer — during all your sessions? In version 11.1 this is made possible by
PersistentValue .
PersistentValue allows you to specify a name (for example,
“Foo” ) and a “save location” (this is also possible with the
PersistenceTime and
ExpirationDate functions).
“KernelSession” means that the value is saved only for one session. However, you can also use
“FrontEndSession” or
“Local” (connection to your computer), or
“Cloud” (which means synchronization through the cloud all over the world).
The
PersistentValue function is fairly generic. This allows values ​​to be located in different places (for example, in different
private clouds ); and, if the
$ PersistencePath determines the browsing order, then the
MergingFunction determines how (if necessary) these values ​​are combined.
Low level programming
One of the goals of Wolfram Language is to provide the possibility of the widest possible interaction with all computing ecosystems. Version 11.1 adds support for the M4A audio format, the .ubj binary JSON format, as well as the .ini and Java.properties files. Among the new features,
BinarySerialize should also be named, which converts any Wolfram Language expression to a new binary file ("
WXF ") in a form optimized for speed or size:
BinaryDeserialize allows you to get it back:

In version 11.0,
WolframScript was introduced - a command line interface to the Wolfram Language, working locally or in the cloud. With
WolframScript, you can create standalone Wolfram Language programs that run from the command line. The new version has several improvements for
WolframScript , and now there is a new menu item
New> Script , which provides you with a document interface for creating .wls files (= "Wolfram Language Script") that will be executed using
WolframScript :

Strengthening the infrastructure
One of the main ways of developing the Wolfram Language lately is deployment. We have made a huge amount of effort to develop in this direction.
We constantly make updates for the Wolfram Cloud, and very often (and imperceptibly) we expand the capabilities of server and user interface performance. In version 11.1 we made some important updates.
There was an
AutoCopy function that can be applied to any cloud object, and every time an object is available, a fresh copy will be automatically saved. This is very useful if, for example, you want to create a document that many people can change individually (“explore these ideas; here’s a document to start with ...”, etc.)
CloudDeploy [ APIFunction [...]] greatly simplifies the API deployment process. In version 11.1, there are several options for automating aspects of API behavior. The
AllowedCloudExtraParameters function allows you to tell whether API parameters such as
"_timeout" or
"_geolocation" can be automated. There is also the
AllowedCloudParameterExtensions function (no, this is not the longest name in the system; this honor currently belongs to the
MultivariateHypergeometricDistribution function). The
AllowedCloudParameterExtensions function allows you to say not just
x = value , but
x __url = ... , or
x __json = ....Also in version 11.1, various functions appeared to support the private copies of Wolfram Cloud and our new
Wolfram Enterprise Private Cloud . For example, in addition to the
$ WolframID for the Wolfram Cloud, there is also a
$ CloudUserID that allows authentication in private clouds. And within the system, all kinds of new features associated with “multi-cloud identification” are supported (this is difficult; however, the symbolic nature of the Wolfram Language allows you to beautifully cope with all the difficulties).
And something else
I summarized some of what appeared in version 11.1. I could tell a lot more. About new features, new features, each of which will be interesting to someone. The fact that I wrote so much about such a small update testifies to the power of R & D projects - and how much can be done with what we have created in the Wolfram language over the past 30 years.
We always work with a portfolio of projects: from small ones that are implemented very quickly, to those that can mature for a decade or more. Version 11.1 implements the results of several multi-year projects (in the field of machine learning, computational geometry, etc.), as well as a great many “short” projects. I look forward to your stories about what you are doing with the new version.