What is the difference between MathLink and WSTP programs? Will the use of MathLink protocol be maintained or not?
There is no difference. "WSTP" is just a new name for MathLink.
As part of the renaming they also changed the function names from
ML-prefixed ones to
WS-prefixed ones. Now Mathematica comes with two developer kits, found in
SystemFiles/Links/WSTP. There is no functional difference between these two. The only difference is in the naming.
Note that at the same time when the renaming happened, a new version of MathLink/WSTP was introduced (interface version 4). Interface version 4 does introduce several new things, but it's important to understand that this is completely independent from the renaming. You'll still get the new things if you use the
Personally I stick to the
ML prefixed version so my code can more easily be ported to be compilable with the devkit that ships with v9.
Update (2017 August, M11.1):
Which one should you choose for a new project, MathLink or WSTP? The documentation states that MathLink is deprecated in favour of WSTP (e.g. here).
Despite this, I recommend people choose MathLink, i.e. use the
ML-prefixed functions. The reasons are the following:
- I am not aware of any contexts where using the
WS-prefixed functions has a practical advantage (as of M11.1), but there are several cases of the reverse.
- LibraryLink still seems to use
ML-prefixed variants, and won't work out-of-the-box with the
WS-prefixed ones (at least not without any extra work—I never tried to get the
WS-prefixed ones working)
- The CCompilerDriver packages always links to MathLink (not to WSTP). This package is useful both for compiling LibraryLink libraries and for compiling installable MathLink programs. It's especially useful for creating a cross-platform compilation setup.
- The Raspberry Pi version of Mathematica still includes only the
ML-prefixed libraries, but not the
WS-prefixed ones (verified in M11.0.1, the latest as of 2017 August). Your code won't compile on this platform unless you use MathLink instead of WSTP.
- Opening the Mathematica executables (either kernel or front end) with a hex editor reveals that internally they use
ML-prefixed names (as of M11.1). This gives me some assurance that MathLink isn't likely to go away in the near future.
Needless to say, this is a personal opinion, and it is directly at odds with what Wolfram says. Follow it at your own risk. I am posting it here because it agrees with what Wolfram does.