Breaking into 2018 with the next big release: release of version 11.3 of the Wolfram Language and Mathematica

Original author: Stephen Wolfram
  • Transfer
  • Tutorial

Stephen Wolfram's blog post translation " Roaring into 2018 with Another Big Release: Launching Version 11.3 of the Wolfram Language & Mathematica ".



Content


- Version Release Stream
- What's New?
- Blockchain
- System modeling
- New in laptops
- Workflow documentation
- Presentation tools
- Wolfram Chat
- Language facilities
- Visualization updates
- Text reading
- Facial calculations
- Neural networks
- Asymptotic analysis
- Elementary algebra
- Evidence
- Growing knowledge base
- Messages and mail
- Operations at the system level
- What was not mentioned


Version Release Stream


Last September, we released version 11.2 of the Wolfram Language and Mathematica - with various new features, including over 100 completely new features. Version 11.2 was a great version. But today we have an even bigger release: version 11.3 , which, among other things, includes almost 120 completely new features .

June 23 will be 30 years since the release of version 1.0 , and I am very proud that we have been able to maintain the accelerating pace of innovation and development now for at least three decades. The key to this is the fact that we use the Wolfram Language to develop the Wolfram Language - and indeed, most of the things that we can now add to version 11.3 are possible only because we use the huge technology stack that we systematically build more than 30 years.

We are constantly working on a large flow of R&D projects, and our strategy for .1 versions is to use them to release everything that is ready at a certain point in time. Sometimes what is in version .1 may not completely fill in a new area, and some of the functions may be marked as “experimental”. But our goal with .1 version releases is to provide the latest results of our research and development as quickly as possible. Integer versions (.0) are more systematic and provide full coverage of new areas, completing what was added gradually in .1 versions.

In addition to all the new features in 11.3, a new element has entered our process. Starting a couple of months ago, we started live broadcasting of our design review meetings , which I started when we were working on version 11.3. Therefore, for those who are interested in “how sausage is made”, almost 122 hours of recorded meetings have been collected at present , from which you can find out exactly how some of the things that you now see in version 11.3 were originally invented. And in this blog post, I am going to make links to certain recorded live broadcasts related to the features that I discuss.

What's new?


OK, so what's new in version 11.3? Well, a lot of things. And by the way, version 11.3 is available today both on the desktop (Mac, Windows, Linux), and on Wolfram Cloud . (And yes, achieving concurrent releases of this kind requires extremely non-trivial software development, management, and quality assurance.)

In general, version 11.3 not only adds some completely new directions, but also expands and strengthens what already exists. The main functionality is enhanced : even more automated machine learning , more reliable data import, preliminary selection of the knowledge base, additional visualization options, etc. There are all sorts of new conveniences: easier access to external languages, direct input information, direct currying, etc. e. And we also continue to aggressively expand horizons in all areas where we have been particularly active in recent years: machine learning, neural networks, audio, asymptotic calculus, calculating an external language, etc.

Here is the tag cloud of new features added in version 11.3:



Blockchain


There are so many things to tell about 11.3 that it’s hard to know where to start. But let's start with something relevant: blockchain. As I will explain in future blog posts, the Wolfram Language, with its built-in ability to talk about the real world, is unique in defining and executing computational smart contracts. The actual Wolfram Language calculation for these contracts will (at the moment) be done without the blockchain, but it is important that the language can connect to the blockchain , and this is what is added in version 11.3. [ Live broadcast of design discussions ]

The first thing we can do is just ask about the blockchains that exist in the world. For example, here is the last block added to the main Ethereum chain:



Now we can take one of the transactions in this block and study it:



And then we can start working with data or conduct some analysis on the structure and content of the blockchain. For the initial release of version 11.3, we support Bitcoin and Ethereum, although other open blockchains will be added soon.

But already in version 11.3, we support the private (Bitcoin-based) Wolfram Blockchain, which is hosted on our Wolfram Cloud . We will periodically publish hashes from this blockchain to the world (possibly in things like physical newspapers). And it will also be possible to launch its versions in Wolfram Cloud private clouds .

It is very easy to write something in the Wolfram Blockchain (and, yes, it charges a small amount of Cloud Credits):



The result is a hash of the transaction, which can then be found on the blockchain:



Here is a circle back from the blockchain:



By the way, the Hash function in the Wolfram Language has been expanded in 11.3, in order to immediately support the types of hashes (for example, “RIPEMD160SHA256”) that are used in cryptocurrency blockchains. And, using Encrypt and related functions, you can start creating some complex things on the blockchain - and soon there will be more.

System modeling


Ok, now let's talk about something really big and new - at least in an experimental form in version 11.3. One of our long-term goals in Wolfram Language is to be able to compute anything in the world. And in version 11.3 we add a new class of things that we can calculate: complex engineering (and other) systems. [ Live broadcast of our design review meetings 1 and 2 ]

Back in 2012, we released Wolfram SystemModeler : an industrial application modeling environment that was used to model things like jet engines with tens of thousands of components. SystemModeler allows you to run model simulations and develop models using a comprehensive graphical interface.

What we add (experimentally) in version 11.3 is a built-in feature for the Wolfram Language to run models from SystemModeler - or virtually any model described in Modelica .

Let's start with a simple example. This extracts a specific model from our built-in model repository:



If you press [+], you will see more detailed information:



But the place where it becomes really interesting is that you can really run this model. SystemModelPlot creates a graph of the "standard simulation" of the model:



What is the actual model inside? This is a set of equations describing the dynamics of the behavior of system components. And for such a simple system, these equations are already quite complicated:



Part of the simulation of real systems usually consists of working with many components and complex interactions. SystemModeler is configured so that people design arbitrarily complex systems graphically, hierarchically connecting together components representing physical or other objects. But the big news is that as soon as you have a model, in version 11.3 you can immediately work with it in the Wolfram Language.

Each model has many properties:



One of these properties gives the variables that characterize the system. And yes, even in a very simple system like this, there are already a lot of them:



Here is an example of how one of these variables behaves in the simulation:



A typical thing to do is to examine how the system behaves when the parameters change . This simulates a system with a modified parameter, then creates a graph:





We could go from here to a selection of many different possible inputs or parameter values ​​and do things such as studying the system's resilience to changes. Version 11.3 provides a very rich environment for performing all these tasks as an integrated part of the Wolfram Language.

In 11.3, more than 1000 ready-made models are already included - electrical, mechanical, thermal, hydraulic, biological and other systems. Here's a more complex example - the main part of the car :



If you expand the icon, you can hover over the parts to find out what they are:



This gives a brief overview of the model, showing that it includes 1110 variables:



In addition to ready-to-use models, there are also more than 6,000 components included in 11.3, from which models can be built. SystemModeler provides a complete graphical environment for building these components. But this can also be done exclusively using Wolfram Language language code, using functions such as ConnectSystemModelComponents (which basically determine the connection schedule for connectors of different components):





You can also create models directly from your basic equations, as well as make “black box models” exclusively from data or empirical functions (say, from machine learning ).

It took a long time to build all the modeling capabilities of the systems that we present in 11.3. And they rely on many complex features of the Wolfram Language, including large-scale symbolic manipulations, the ability to effectively solve systems of differential-algebraic equations , the processing of quantities and units, and much more. But now that system modeling is integrated into the Wolfram Language, it opens up all sorts of important new opportunities - not only in the development field, but in all areas that can be easily modeled by multicomponent real-world systems.


New in laptops


We first introduced laptops in version 1.0 back in 1988 , so by now we have been debugging their work for at least 30 years. Version 11.3 introduces a number of new features. A simple example is closed groups of cells , which now have an “ opening button ” by default , and they can also be opened using the brackets of their cells:



I find this useful, because otherwise I sometimes don’t notice closed groups with additional cells inside. (And yes, if you don't like it, you can always turn it off in style.)

Another small but useful change is the introduction of "undefined In / Out tags." In a laptop connected to a working kernel, sequential cells are marked as In [1], Out [1], etc. But if you are no longer connected to the same kernel (say, because you saved and reopened the laptop) In / Out numbering no longer makes sense. Thus, in the past, no In, Out labels were shown. But from version 11.3 there are still labels, but they are inactive, and they do not have explicit numbers:



Another new feature in version 11.3 is Iconize. Here is the main problem that it solves. Suppose you have a large amount of data or other input that you want to save on a laptop, but you do not want it to fill the laptop visually. One thing you can do is put it in closed cells. But then to use the data you need to do something like creating a variable and so on. Iconize provides a simple built-in way to save data to a laptop.

Here's how you make a minimized version of an expression:



Now you can use this minimized form instead of the whole expression; it immediately yields the result of the full expression:



Another convenient use of Iconize is to make the code more readable, but still executable. For example, consider something like this:



You can select options here, then go to the context menu and collapse them:



The result is a simpler to read snippet of code that still runs the same as before:



In version 11.2, we introduced ExternalEvaluate to execute code in external languages ​​(initially Python and JavaScript) directly from the Wolfram Language. (This is supported on the desktop and in private clouds, for security reasons and the allocation of resources from the open Wolfram Cloud only works with pure Wolfram Language code.)

In version 11.3, it is now even easier to enter external code into laptops. Just start the input cell with>, and you will get an external code cell (you can easily select the desired language):



And yes, what is returned is an expression of the Wolfram Language, which you can calculate:



Workflow documentation


We pay great attention to the documentation of the Wolfram Language - and traditionally we had three types of components in our documentation: “manual pages” that cover one function, “manual pages” that contain a summary with links to many functions, and “training manuals ”that provide narrative introductions in the field of functionality. Since version 11.3 there is a fourth kind of component: (workflow) workflows - this is where new options lead you to a gray background at the bottom of the "root man page".



When everything you do is represented by explicit Wolfram Language code, the In / Out paradigm of laptops is a great way to show what's happening. But if you click the mouse or, even worse, use external programs, this is not enough. And this is where workflows come in, because they use all kinds of graphics devices to present a sequence of actions that are not just entered into the Wolfram Language.



Therefore, if you get the coordinates of the graph or deploy a complex form on the Internet or add a banner to the laptop , then we are expected to follow our new workflow documentation. And by the way, you will find links to related workflows from the function help pages.

Presentation Tools


Another important thing about the interface in version 11.3 is the Presenter Tools , a complete environment for creating and launching presentations that include interactive interactivity. What makes Presenter Tools possible is the rich notebook system we have created over the past 30 years. But what they help do is add all the features you need to conveniently create and run presentations.

People use our previous SlideShow format for presentations with Wolfram laptops.for 20 years. But this has never been a complete solution. Yes, it gave us convenient laptop features, such as live computing in a slide show environment, but it didn’t use things like “in PowerPoint,” such as automatically scaling content to a screen resolution. In fairness, we note that we expected operating systems to simply solve problems, such as scaling content. But 20 years have passed, and this is still not there. So, now we have created new Presenter Tools that solve such problems, and add a number of features to make great presentations with laptops as easy as possible.

To get started, simply select File> New> Presenter Notebook. Then select your template and theme, and get started:



Here's what it looks like when you edit a presentation (and you can change themes whenever you want):



When you're ready, just click “Start Presentation”. Everything goes in full screen mode and automatically scales to the resolution of the screen that you are using. But here is a big difference from PowerPoint-like systems: everything is lively, interactive, editable and scrollable. For example, you can have Manipulateright inside the slide and you can immediately interact with it. (Oh, and everything can be dynamic, say, recreate graphics based on data that is imported in real time.) You can also use things like groups of cells to organize content in slides. And you can edit what is on the slide, and, for example, do livecoding, running your code on the go.

When you are ready to move to the new slide, just press the key (or your remote will do it for you). By default, this Page Down key(so you can use the arrow keys when editing), but you can set a different key if you want. You can force Presenter Tools to display slides on one display, and then display notes and controls on another display. When you make slides, you can include SideNotes and SideCode. SideNotes - text notes similar to PowerPoint. But SideCode is something else. This is actually based on what I have been doing on my own presentations for years. This is the code that you prepared in advance, and you can “magicly” insert it into the slide in real time during the presentation, and if you wish, with instant output.



Over the years, I gave a huge number of presentations using Wolfram laptops . Several times I used the SlideShow format, but basically I did everything in a regular laptop, often writing notes on a separate device. But now I am very glad that in version 11.3 I have exactly the tools that I need to prepare and conduct presentations. I can pre-define part of the content and structure, but a live presentation can be very dynamic and spontaneous - with live editing, live coding and all kinds of interactivity.

Wolfram Chat


While we are discussing the features of the interface, here's another one: Wolfram Chat. When people work on something interactively, it is usually heard that someone says “let me just send you a piece of code” or “let me send you Manipulate ”. Now, in version 11.3 there is now a very convenient way to do this, and it is built directly into the Wolfram laptop system, which is called Wolfram Chat . [ Live Broadcast Meeting ]

Just select File> New> Chat ; you will be asked with whom you want to "chat", and it can be anyone and anywhere with Wolfram ID (although, of course, they must accept your invitation):



Then you can start a chat session and, for example, put it next to a regular one laptop:



The great thing is that you can send everything that can appear on a laptop, including images, code, dynamic objects, etc. (Although this is a “sandbox”, so people can not send “code bombs” to each other).

There are many obvious Wolfram Chat applications, not only in collaboration, but in things like classrooms and technical support. And there are other applications. For example, for livecoding competitions. And in fact, one of the ways we tested Wolfram Chat during development was to use it to compete in a livecoding competition at the Wolfram Technology Conference last fall.

You might think that chat is something simple and clear. But actually it is surprisingly difficult, with an astounding number of different situations and cases to consider. Under the hood, Wolfram Chat uses both the Wolfram Cloud and the new pub-sub channel structure that we introduced in version 11.0. In version 11.3, Wolfram Chat is only supported on Wolfram desktop laptops, but will be available soon on laptops on the Internet and on mobile devices.

Language Amenities


We are always improving the Wolfram Language to make it more convenient and productive to use. And one way to do this is to add new “convenient features” in each version of the language. Often these functions do simple things; the task (which often takes many years) is to come up with a beautiful and simple design for them. (You can see quite a few discussions of new convenient features in version 11.3 in recent live broadcasts .)

Here is a function (surprisingly, we haven't done it before) that simply builds an expression from her head and arguments:



How is this useful? Well, this can preserve the explicit construction of pure functions with Function or & , for example, in this case:



Another function, which at some level is very simple (but choosing the name of this function was painful), is Curry . Curry (named after “ currying ”, which in turn is named after Haskell Brooks Carrie ) essentially makes operator forms, and Curry [f, n] “currying in” n arguments: The



one-parameter form of Curry itselfsuch is:



Why is this useful? Well, some functions (for example, Select ) have built-in “operator forms” in which you give one argument, then you “curry in” others:



But what if you want to create an operator yourself? Well, you can always explicitly build it using Function or & . But with Curry you do not need to do this. For example, this is the operator form D , in which the second argument is given as x :



Now we can apply this operator form to differentiate with respect to x :



Yes, Curry at some level is pretty abstract. But this is a pleasant convenience if you understand it, and understanding this is a good exercise in understanding the symbolic structure of the Wolfram Language.

Speaking of operator forms, NearestTo is an analogue of the Nearest operator form (the one-parameter form of Nearest itself generates NearestFunction ):



Here is an example of why this is useful. This finds 5 chemical elements whose density is close to 10 g / cm3:



In version 10.1 in 2015we introduced many functions that work with sequences in lists. Version 11.3 adds a couple more of these features. One of them is SequenceSplit . This is similar to StringSplit for lists: it splits lists at the positions of specific sequences:



Also new in the Sequence family is the SequenceReplace function :



Visualization Updates


Just as we always improve the basic programming functionality in the Wolfram Language , we also always improve things like visualization.

In version 11.0, we added a GeoHistogram , which shows the "density of volcanoes" in the USA:



In version 11.3, we have added GeoSmoothHistogram :



Also new in version 11.3 is the leader ( the callouts ) in 3D-graphics, there is a random word mark random points (but pay attention to how words are arranged so as not to overlap each other):



We can make a somewhat more meaningful graph of words in 3D using the new FeatureSpacePlot3D based on machine learning (note, for example, that “vocalizing” and “crooking” (meaning roughly the same thing as a translator) respectively end together):



Reading text


Speaking of machine learning, version 11.3 continues our aggressive development of automated machine learning , creating both general tools and specific functions that use machine learning.

An interesting example of a new feature is FindTextualAnswer , which takes a piece of text and tries to find answers to text questions . Here we use a Wikipedia article on “rhino” asking how much the rhino weighs:



It looks like magic. Of course, this does not always work and can do what we, people, will consider rather stupid. But it uses the most advanced machine learning methodology, as well as a wealth of unique learning data based on Wolfram | Alpha . We can see a little more than what this does if we ask not only about the first answer about the weight of rhinos, but about 5:



Hmmm. So what is the final answer? Well, for this we can use our curated knowledge base :



Or in tons:



FindTextualAnswer does not replace all of our data processing and computed data strategy. But this can be useful as a way to quickly get the first guess about the answer, even from a completely unstructured text. And, yes, this function should do a good job of critical reading exercises and probably could be done to succeed in Jeopardy!

Calculations by persons


We react a lot to human faces, and with modern machine learning, you can do all kinds of calculations related to the face, and in version 11.3 we added systematic functions for this. Here FindFaces finds faces (of famous physicists ) from a photograph:



FacialFeatures uses machine learning methods to evaluate various attributes of faces (such as visual age, visual gender, and emotional state):



These functions can, for example, be used as criteria in FindFaces , physicists are distinguished here who look younger than 40 years old:



Neural networks


In Wolfram Language there are all kinds of functions that are based on neural networks (for example, FacialFeatures ). But over the course of several years, we also energetically built an entire subsystem in the Wolfram Language so that people can work directly with neural networks. We build over low-level libraries (in particular, MXNet , for which we were big contributors), so we can use all the latest GPUs and other optimizations. But our goal is to create a high-level symbolic layer that allows us to simplify the calculations of the neural network as much as possible . [ Live broadcast of meetings 1 , 2 and 3 ]

It consists of many parts. Setting up automatic encoding and decoding to standard Wolfram Language designs for text, images , audio , etc. Be able to automatically combine individual neural network operations, especially those that deal with things like sequence. Ability to automate training as much as possible, including automatic optimization of hyperparameters.

But there is something even more important: the presence of a large library of existing, trained (and untrained) neural networks that can be used either directly for computation, for transferring training, or as feature extractors . And for this we created our repositoryNeural Net Repository :



There are networks here that do all kinds of wonderful things. And we add new networks every week. Each network has its own page, which includes examples and detailed information. Networks are stored in the cloud. But all you have to do to get them into your calculations is to use NetModel :



Here is the network that FindTextualAnswer uses :



One of the new features in version 11.3 is the graphical representation that we use for networks. We have optimized it to give you a good overview of the network diagram structure , but then allow interactive deployment to any level of detail. And when you train the neural networkThe emerging interactive panels have several new features - and with NetTrainResultsObject, we now make the learning process itself computable.

In version 11.3 there are some new types of layers, such as CTCLossLayer (especially for audio support), as well as many updates and improvements for existing types of layers ( 10x LSTM acceleration on GPUs, automatic convolutions of variable length, extensions of many layers to support arbitrarily -size inputs, etc.). In version 11.3, we focused on recursive networks and sequence generation. And to support this, we implemented things like NetStateObject , which basically allows the network to have a persistent state, which is updated as a result of entering the data that the network receives.

In developing our symbolic structure of a neural network, we actually go in two directions. First of all, we are making everything more automated so that it is easier and easier to configure neural network systems. But secondly - to be able to easily process more and more neural network structures. And in version 11.3 we add a whole collection of “network surgery” features like NetTake , NetJoin and NetFlatten so you can log in, configure and hack neural networks as you wish. Of course, our system is designed so that even if you do, our entire automated system - with training, etc. - will continue to work perfectly.

Asymptotic Analysis


For over 30 years, our mission has been to do as much more computational mathematics. And in version 11.3 we finally figured out an important, long-awaited area: asymptotic analysis.

Here is a simple example: find an approximate solution to the differential equation near x = 0:



At first it may look like a solution in the form of a power series . But be careful: there is an e (1 / x) factor that simply gives infinity in each order as a power series in x. But with version 11.3 we now have asymptotic analysis functions that handle all kinds of growth and fluctuation scales, not just order.

In the past, when I made a living as a physicist , it always seemed that all the darkest forces focused on the methods of perturbation. There were regular disturbances and singular disturbances. There were things like the WKB method and the boundary layer method . The point was always to calculate the decomposition by some small parameter, but to achieve this goal in various cases, various tricks were always required. But now, after several decades of work, finally in version 11.3, we have a systematic way to solve these problems. Here is the differential equation where we are looking for a solution for small ε:



Back in version 11.2, we added many options to solve more complex constraints. But using our methods of asymptotic analysis, we can also do other things that are important for various problems in areas such as number theory and computational complexity theory, which consists in comparing asymptotic growth rates.

This task: 2 ^ n ^ k is asymptotically less (n ^ m)! as n-> ∞? Result: yes, under certain conditions:



Elementary Algebra


One of the features of Wolfram | Alpha that is popular among students is its Show Steps functionality , in which it synthesizes on-the-fly explanations showing how to get the answers it gives. But what are the actual steps, say, as a result of Show Steps for algebra? They are “elementary operations,” such as “adding the corresponding sides of two equations.” And in version 11.3 we include functions to just do such things:





And, OK, it looks like these are really trivial functions that basically just work on the structure of equations. And this is actually what I thought when I said that we should realize them. But, as the R&D algebra team quickly pointed out, there are all kinds of pitfalls (“what if bnegatively? " etc.). That is where students often make mistakes, but with the entire algorithmic infrastructure in Wolfram Language, it’s easy for us to get it right:



Evidence


Wolfram Language is mainly related to computational results. But, getting the result, you can also ask why this is correct: you can ask for some evidence demonstrating that the answer is correct. And for more than 20 years, I have been thinking about how to find and present general evidence in a useful and computable way in Wolfram Language. And I am very glad that, finally, in version 11.3, the FindEquationalProof function gives an example, which we will generalize and take as a basis in future versions. [ Live broadcast of the meeting ]

My favorite success story in automatic proof of theorems is the tiny (and actually the simplest) axiom system for Boolean algebra that I found in 2000 . This is just one axiom with one operator, which can be represented as the corresponding operation Nand . For 11 years , FullSimplify has actually been able to use automatic methods for checking theorems inside to be able to figure things out. So, here he starts with my axiom for Boolean algebra, and then calculates that Nand is commutative:



But that just tells us the result; he gives no evidence. Well, in version 11.3 we can now get the proof:



What is an object of evidence? The summary shows that the proof has 102 steps. Then we can ask for a "graph of evidence." The green arrow at the top represents the initial axiom; the red square below represents the proven thing. All nodes in the middle are intermediate lemmas proved by each other in accordance with the connections shown.



What is actually in the proof? Well, that’s difficult. But here is a dataset that gives all the details:



You can get a slightly more narrative form in the form of a laptop:



And then you can also get a “proof function”, which is part of the code and can be performed to verify the result:



No wonder, and no wonder produces True after launch:



Now that we can create symbolic evidence structures in the Wolfram Language, we have a lot of empirical metamathematics to continue the work that I will discuss in a future blog post. But, given that FindEquationalProof works with arbitrary “egalitarian” symbolic relationships, it can be applied to many things - for example, to check protocols and strategies, for example, in such popular areas as blockchain.

Growing knowledge base


The Wolfram Knowledgebase is growing every day - partly through systematic data channels, and partly through new curated data and explicitly added domains. If someone asks what has been added between versions 11.2 and 11.3, this is a slightly strange collection of things. There are more than 150 parameters about open companies . Also now there are over 900 new features for Pluto and Mercury . There are 16,000 new anatomical structures , such as the neural pathways. There are about 500 new “ significant charts ”. There are thousands of new mountains , islands, notable buildings and other geographical features. There are many new product attributes and new relationships with diseases . And much more.

But in terms of the normal everyday use of the Wolfram knowledge base, the most important new feature in version 11.3 is the object prefetching system. The knowledge base is naturally large, and it is stored in the cloud. But if you use a desktop system, it "magically" loads you.

Well, in version 11.3, magic has become much stronger. Since now, when you request one specific element, the system will try to figure out what you might ask next time and it will automatically start pre-loading it asynchronously, and therefore, when you really ask for it, it will already be on your computer - and you don’t have to wait for it to download from the cloud. (If you want to do manual prefetching, use the EntityPrefetch function to do this. Please note: if you use the Wolfram Language in the cloud, the knowledge base is already “right there”, so there’s no need to download or prefetch it.)

The whole prefetch mechanism is applied quite generically. For example, if you use Interpreter to interpret some input (for example, US state abbreviations), information on how to make interpretations will also be prefetched, so if you use a desktop, interpretations can be performed locally without communicating with the cloud.

Messages and mail


You can send Wolfram Language emails (using SendMail ) for decades. But starting with version 11.3, it can use full HTML formatting, and you can embed a lot of things into it - not only graphics and images, but also cloud objects, data sets, audio, etc. [ Live broadcast of the meeting ]

Version 11.3 also provides the ability to send text messages (SMS and MMS) using SendMessage . However, for security reasons, you can only send to your mobile phone number specified by the value of $ MobilePhone (and, yes, of course, the number is confirmed).

Wolfram Language has long been able to import emails and mailboxes, and with the MailReceiverFunction function can also respond to incoming mail. But in version 11.3 something new is added, it is an opportunity to deal with live mailboxes.

First connect to your mail server (IMAP, for now) (I do not show the authentication dialog box):



Then you can mainly use the Wolfram Language as a programmable email client. This gives you a set of current unread messages in your inbox:



Now we can select one of these messages and we will get a MailItem symbolic object , which, for example, we can delete:





System Level Operations


Version 11.3 supports many new operations at the system level. Let's start with a simple but useful: remote program execution. The RemoteRun function is basically similar to Unix rsh: you give it the host name (or IP address), and the command runs there. The Authentication parameter allows you to specify a username and password. If you want to remotely run a persistent program, you can do this using RemoteRunProcess , which is a remote analogue of the local RunProcess .

When working with remote computer systems, authentication is always a problem, and over the years we gradually build an improved symbolic authentication system in the Wolfram Language. In version 11.3, there is a new AuthenticationDialog function in which a number of correctly configured authentication dialogs appear. Then there is a GenerateSecuredAuthenticationKey that generates OAuth SecuredAuthenticationKey objects that users can use to authenticate calls to the Wolfram Cloud from the outside.

Also at the system level there are several new import / export formats, such as the BSON format (JSON-binary serialization format ) and WARC (web archive format). There are also HTTPResponse and HTTPRequest formats that (among many others) can be used to write a Wolfram Language web server in a few lines of code.

It has been several years since we introduced ByteArray objects to the Wolfram Language, and we constantly support their development. In version 11.3, there are BaseEncode and BaseDecode for converting between byte arrays and Base64 strings. Version 11.3 also extends Hash (which, among other things, works on byte arrays ), adding various types of hashing (for example, double SHA-256 and RIPEMD), which are used for modern needs like blockchain and cryptocurrencies.

We always add more types of data that we can make computable in Wolfram Language, and in version 11.3 one addition is the data of system processes, such as you can get from the Unix ps command:



Needless to say, you can do a fairly detailed search for processes with certain properties. You can also use SystemProcesses to get an explicit list of symbolic ProcessObjects that you can query and process (for example, using KillProcess ).



Of course, because everything is computable, it’s easy to do things like make graphs of the start of processes running on your computer (and, yes, I last rebooted a few days ago):



If you want to understand what is happening around your computer, version 11.3 provides Another powerful tool: NetworkPacketRecording . You may need to make some permission settings, but then this function can record network packets passing through any network interface on your computer.

Here are just 0.1 seconds of packages that enter and exit my computer when I sit here quietly and write this blog post:



You can view each package; here is the first one that was recorded:



Why is it interesting? Well, I expect that you will use it for debugging regularly enough - and it is also useful for studying computer security, and not least because you can immediately translate everything into standard Wolfram Language visualization, machine learning and other functions .

What was not mentioned


This is a long blog post, but there are many other things in 11.3 that I haven't even mentioned. For example, there were all kinds of updates for import and export. As a much more efficient and reliable import of XLS , CSV and TSV . Or export animated PNGs . Or support for metadata in audio formats such as MP3 and WAV . Or more complex color quantization in GIF , TIFF , etc. [ Live broadcast of meeting 1 and 2 . ]

We introduced symbolic Audio objects at 11.0, and since then we have been developing audio functionality at a fast pace. Version 11.3 made digital sound recording more reliable (and we support it for the first time on Linux). We also introduced the AudioPlay , AudioPause, and AudioStop functions that control the open AudioStream objects .

Also new is AudioDistance , which supports various distance measurements for sound. Meanwhile, AudioIntervals can now automatically split audio into segments separated by silence. And in a slightly different area, $ VoiceStyles provides a list of possible voices available for SpeechSynthesize .

Here is a small new mathematical function , which in this case gives a sequence of 0 and 1 in which each block of length-4 appears exactly once:



Wolfram Language now has complex support for quantities and units - as explicit quantities (for example, 2.5 kg ), as well as symbolic “ quantitative variables ” (“ p that have pressure units”). But as soon as you are inside doing something like solving an equation, you usually want to “exclude units of measurement”. And in 11.3 there is now a function that systematically does this: NondimensionalizationTransform . There is also a new mechanism in 11.3 for introducing new kinds of quantities using IndependentPhysicalQuantity..

Most of the Wolfram Knowledgebase's built-in knowledge base is ultimately presented in terms of object stores, and in version 11 we introduced an explicit EntityStore construct to define new entity stores. Version 11.3 introduces the EntityRegister function , which allows you to register an entity store so that you can refer to the types of entities that it contains, just as you would refer to built-in types of objects (for example, cities or chemicals).

Another thing introduced as an experimental feature in version 11.3 is the MongoLink packagewhich supports connection to external MongoDB databases. We ourselves use MongoLink to manage terabyte and larger data sets for things like machine learning. And in fact, the fact that MongoLink is part of our full-blown development efforts, the results of which will be visible in future versions, contributes to the unhindered support of extremely large amounts of data stored in appearance.

In version 11.2, we introduced ExternalEvaluate to run code in external languages ​​such as Python. In version 11.3, we experiment with a generalization of ExternalEvaluate for managing web browsers by creating a WebDriver structure. You can give all kinds of commands that have the same effect as clicking on a web browser page, or those that extract everything that you can see on the page.

Here's how you can use Chrome (we support it and Firefox) to open a webpage and then grab it:



Well, this blog post is getting long, but of course I can say more. The following is a more complete list of features that are new or updated in version 11.3:



But for me it is amazing how much Wolfram Language .1 is in the release, and it has appeared just a few months since the last .1 version. This is a good indication of the amount of research and development that we manage to complete by building on the Wolfram Language technology stack that we created. And, yes, even in 11.3 there are many new corners to explore. And I hope that many people will do this and will use the latest tools that we created to discover and invent all kinds of new and important things to the world.

For questions, contact info-russia@wolfram.com

Free trial version of Mathematica
Free trial Wolfram | One

Also popular now: