30
$\begingroup$

A change log is issued when Mathematica has an update, such as:

  1. 10.4

  2. 10.3

  3. 10.2

But for instance the PlotLabels option mentioned in this post is not in the log. And as far as I know, the ImageMarker or some other [[EXPERIMENTAL]] functions are missing too.

How do we find these newer functions?


We can find some using this method:

CanonicalName@
 EntityList[EntityClass["WolframLanguageSymbol", "UnderDevelopment"]]

{Autocomplete, AutocompletionFunction, CachePersistence, ContentObject, DeleteSearchIndex, DimensionReduce, DimensionReducerFunction, DimensionReduction, FindFormula, FoldPair, FoldPairList, LocalObject, SearchIndexObject, SearchIndices, Snippet, TextCases, TextPosition, TextSearch, TextSearchReport, UpdateSearchIndex, WordTranslation}

But it seems incomplete: for instance, DistanceMatrix is not in this list.

$\endgroup$
  • $\begingroup$ Yode, note that ImageMarker is not considered experimental anymore as of 10.4.0.0, and DistanceMatrix was introduced officially already in 10.3 $\endgroup$ – MarcoB Apr 4 '16 at 18:36
  • $\begingroup$ @MarcoB I mean ImageMarker introduced in 10.4,but not in 10.4's change log.And the DistanceMatrix is the experimental function in 10.3,it was introduced officially in 10.4 but no any statement.The DistanceMatrix not in 10.3's log and 10.4's. $\endgroup$ – yode Apr 4 '16 at 18:46
23
+200
$\begingroup$

New functions conveniently carry the "NEW in 10.4" header in their documentation page. Since the docs are blessedly written as Mathematica notebooks, and notebook are text files, we can just use grep or a similar tool to hunt for those help files that contain that header.

New in 10.4

Inspection of one such file with a text editor reveals that the raw cell code generating the header contains the fragment:

StyleBox["\<\"NEW IN 10.4\"\>",

Using a grep clone (AstroGrep on Win7-64) only on the Symbols folder of the documentation, which is located in $InstallationDirectory <> "\\Documentation\\English\\System\\ReferencePages\\Symbols" on my system, returns the following list:

$CloudExpressionBase             GreenFunction
    $SourceLink                  Highlighted
ArrayMesh                        ImageMarker
Ask                              KeyValuePattern
AskAppend                        LocalObjects
AskConfirm                       MersennePrimeExponent
AskDisplay                       MersennePrimeExponentQ
AskedQ                           MixedMagnitude
AskedValue                       MixedUnit
AskFunction                      MomentOfInertia
AskTemplateDisplay               PartProtection
BiquadraticFilterModel           PerfectNumber
BoundingRegion                   PerfectNumberQ
CloudExpression                  PlanarGraph
CloudExpressions                 PlotLabels
ClusterClassify                  PolygonalNumber
ClusterDissimilarityFunction     QuantityDistribution
ClusteringTree                   RegionMoment
ConnectedGraphComponents         SourceLink
CreateCloudExpression            SpellingCorrectionList
CreateFile                       Subsequences
CriterionFunction                TravelDistanceList
DeleteCloudExpression            UnequalTo
Dendrogram                       UniverseModelData
DictionaryWordQ                  URLDispatcher
DifferenceQuotient               WeaklyConnectedGraphComponents
DynamicGeoGraphics               WeatherForecastData
DynamicImage                     WordFrequency
FindTransientRepeat              WordFrequencyData
GeoDistanceList                  ZoomCenter
GeoLength                        ZoomFactor

Notice that this includes the PlotLabels option that you mentioned as well.

Updated in 10.4

Similarly, the documentation carries a footer containing information on a function's date of introduction and latest update. For instance, the following fragment can be found in the documentation for ListPlot:

Cell[TextData[{
 "Introduced in 2007",
 Cell[" (6.0)", "HistoryVersion"],
 " | ",
 "Updated in 2016",
 Cell[" (10.4)", "HistoryVersion"]
}], "History"],

Looking for files that contain "Updated in 2016" and also "Cell[" (10.4)", "HistoryVersion"]" returns the following sizable list:

ArcLength                      HypoexponentialDistribution      PalindromeQ
ArcSinDistribution             Image3DSlices                    ParameterMixtureDistribution
Area                           ImageDistance                    ParetoDistribution
Association                    ImageEffect                      PascalDistribution
BatesDistribution              InverseChiSquareDistribution     PearsonDistribution
BeckmannDistribution           InverseGammaDistribution         PERTDistribution
BeniniDistribution             InverseGaussianDistribution      PlaneCurveData
BenktanderGibratDistribution   JohnsonDistribution              Plot
BenktanderWeibullDistribution  KDistribution                    PoissonConsulDistribution
BernoulliDistribution          KernelMixtureDistribution        PolyaAeppliDistribution
BetaDistribution               KumaraswamyDistribution          PowerDistribution
BetaPrimeDistribution          LaminaData                       Probability
BinomialDistribution           LandauDistribution               ProductDistribution
BinormalDistribution           LaplaceDistribution              RayleighDistribution
BirnbaumSaundersDistribution   LevyDistribution                 RegionMeasure
CauchyDistribution             LindleyDistribution              RiceDistribution
CensoredDistribution           ListLinePlot                     SechDistribution
ChiDistribution                ListLogLinearPlot                ShiftedGompertzDistribution
ChiSquareDistribution          ListLogLogPlot                   SinghMaddalaDistribution
CopulaDistribution             ListLogPlot                      SkewNormalDistribution
CoxianDistribution             ListPlot                         SmoothKernelDistribution
DagumDistribution              ListStepPlot                     SolidData
DataDistribution               LocalAdaptiveBinarize            SpaceCurveData
DateListLogPlot                LogGammaDistribution             SplicedDistribution
DateListPlot                   LogisticDistribution             StableDistribution
DateListStepPlot               LogLinearPlot                    StringFreeQ
DavisDistribution              LogLogisticDistribution          StringMatchQ
DirichletDistribution          LogLogPlot                       StringPartition
Downsample                     LogNormalDistribution            StringPosition
EmpiricalDistribution          LogPlot                          StringReplace
ErlangDistribution             MarchenkoPasturDistribution      StringReplacePart
Expectation                    MarginalDistribution             StudentTDistribution
ExpGammaDistribution           MaxStableDistribution            SurfaceData
ExponentialDistribution        MaxwellDistribution              SuzukiDistribution
ExponentialPowerDistribution   MeixnerDistribution              TransformedDistribution
ExtremeValueDistribution       MinStableDistribution            TriangularDistribution
FareySequence                  MixtureDistribution              TruncatedDistribution
FisherZDistribution            MortalityData                    TsallisQExponentialDistribution
FRatioDistribution             MoyalDistribution                TsallisQGaussianDistribution
FrechetDistribution            MultinomialDistribution          TukeyLambdaDistribution
GammaDistribution              MultinormalDistribution          UniformDistribution
GeometricDistribution          MultivariateTDistribution        UniformSumDistribution
GompertzMakehamDistribution    NakagamiDistribution             Upsample
Graph                          NegativeBinomialDistribution     VarianceGammaDistribution
GumbelDistribution             NegativeMultinomialDistribution  VoigtDistribution
HalfNormalDistribution         NoncentralBetaDistribution       Volume
HighlightImage                 NoncentralChiSquareDistribution  VonMisesDistribution
HistogramDistribution          NoncentralFRatioDistribution     WakebyDistribution
HotellingTSquareDistribution   NoncentralStudentTDistribution   WeibullDistribution
HoytDistribution               NormalDistribution               WignerSemicircleDistribution
HyperbolicDistribution         Nothing
HyperexponentialDistribution   OrderDistribution

Experimental in 10.4

Similarly, one can go hunt for functions marked "experimental" since these carry the "[[EXPERIMENTAL]]" indication in the header of their help file. This is slighlty more complicated because it turns out that the [[EXPERIMENTAL]] header is actually a graphics expression, rather than formatted text. Again, inspection of the notebook help file for one such function hinted at the following code snippet as a pretty reliable indicator of the presence of this header in a text search:

{Thickness[0.006944444444444444], FaceForm[{RGBColor[0.5, 0.5, 0.5],

Again using grep allowed me to identify the following list of currently experimental functions:

$SourceLink                    DimensionReduction
Ask                            DynamicGeoGraphics
AskAppend                      DynamicImage
AskConfirm                     FindFormula
AskDisplay                     FoldPair
AskedQ                         FoldPairList
AskedValue                     LocalObject
AskFunction                    LocalObjects
AskTemplateDisplay             PartProtection
Autocomplete                   SearchIndexObject
AutocompletionFunction         SearchIndices
CachePersistence               SourceLink
CloudExpression                TextCases
CloudExpressions               TextElement
ClusterClassify                TextPosition
Containing                     TextSearch
ContentObject                  TextSearchReport
CreateCloudExpression          TextStructure
CreateSearchIndex              UpdateSearchIndex
DeleteCloudExpression          WordTranslation
DeleteSearchIndex              ZoomCenter
DimensionReduce                ZoomFactor
DimensionReducerFunction       

To address the suggestion to use the experimental TextSearch, here is my understanding of the best method to do so. I first attempted to run a text search for "\"NEW in 10.4\"" on all files in the "Symbols" directory mentioned above:

TextSearch[FileNames[All, {pathToSymbolsDir}], "\"NEW in 10.4\""];

This ran for close to 10 min before returning a result. Pretty much a non-starter.

Then again, this is probably not the way TextSearch was intended to be used; it should really be used with a pre-generated SearchIndexObject. So I generated a search index from those files once and for all, then ran TextSearch using the index. Once the index is generated, which was still quite time consuming, the search itself worked a lot better:

index = CreateSearchIndex[pathToSymbolsDir]; // AbsoluteTiming
(*Out: {1084.54, Null} *)

It took 18 minutes to generate the index on a reasonably powerful SSD-equipped laptop. Each search after that was quite quick and led to the same result as grep:

#["FileName"] & /@ TextSearch[index, "\"NEW in 10.4\""]

{"$SourceLink.nb", "MixedMagnitude.nb", "ZoomCenter.nb", "DynamicGeoGraphics.nb", 
 "AskedQ.nb", "PerfectNumberQ.nb", [...], "DifferenceQuotient.nb", "ClusterClassify.nb",
 "GreenFunction.nb", "PlanarGraph.nb"}
$\endgroup$
  • $\begingroup$ I have to say this a wonderful answer. $\endgroup$ – yode Apr 4 '16 at 16:55
  • $\begingroup$ @MarcoB You can use TextSearch in newer versions of Mathematica instead. I've found this useful for checking the documentation for certain issues. $\endgroup$ – Searke Apr 4 '16 at 17:43
  • 1
    $\begingroup$ @Searke One certainly could, but TextSearch is experimental and I am not familiar with its syntax, nor with its return values. In my opinion there is an advantage here in using a tool such as grep that has been honed by long use for this specific purpose. $\endgroup$ – MarcoB Apr 4 '16 at 18:33
  • $\begingroup$ @yode I'm glad you liked it! I think I have completed the listings that were most obvious to me at this point. $\endgroup$ – MarcoB Apr 4 '16 at 18:34
  • 1
    $\begingroup$ @yode I included such an example $\endgroup$ – MarcoB Apr 5 '16 at 16:28
15
$\begingroup$

Remember that WolframLanguageSymbol entities always return the state of latest version of the Wolfram Language; not the version of the language you currently have installed.

The Entity function calls appear to be returning the correct information when you take this into consideration.

New in 10.4

EntityList[Entity["WolframLanguageSymbol", {"FullVersionIntroduced" -> "10.4"}]]

New in 10.3

EntityList[Entity["WolframLanguageSymbol", {"FullVersionIntroduced" -> "10.3"}]]

Updated in 10.4

EntityList[Entity["WolframLanguageSymbol", {"FullVersionLastModified" -> "10.4"}]]

Experimental in latest version of the language.

EntityList[EntityClass["WolframLanguageSymbol", "Experimental"]]

Update for 11.0.1 "UnderDevelopment" class has been changed to "Experimental" class. In 11.0.1 this class does not appear in EntityClassList["WolframLanguageSymbol"] but it is available.

Hope this helps.

$\endgroup$
  • 1
    $\begingroup$ Nice, I like this approach using Entity and Co. +1 $\endgroup$ – RunnyKine Apr 4 '16 at 21:48
  • $\begingroup$ Edmund, although I like the approach, I'm not sure how dependable these designations are. For instance, AlphabeticOrder and AlphabeticSort are the first two values returned by your "New in 10.4"; however perusing the documentation indicates that both were introduces in 10.3 in 2015, and not in 10.4. Similarly with Between, CaseOrdering, and I suspect many others that I haven't checked. $\endgroup$ – MarcoB Apr 5 '16 at 16:39
  • $\begingroup$ @MarcoB , @yode There appears to be some issue with the "Version"~~ properties that take Real. I've switched to the "FullVersion"~~ properties and these appear to accurately collect the functions of interest. $\endgroup$ – Edmund Apr 5 '16 at 17:27
  • $\begingroup$ @Edmund FullVersionIntroduced seems to help, but on my system it still misses the following new symbols whose introduction in 10.4 is confirmed by the relevant documentation pages: AskTemplateDisplay (experimental), BoundingRegion, ClusteringTree, SourceLink (experimental), and URLDispatcher. Weird. $\endgroup$ – MarcoB Apr 5 '16 at 18:23
  • $\begingroup$ @MarcoB Yes. It appears that the entities are only partially updated. Has to be a bug in them. BondingRegion is there but the others are not. Have a look: Manipulate[ WolframLanguageData[foo, prop], {{foo, "BoundingRegion"}, InputField}, {{prop, EntityProperty["WolframLanguageSymbol", "Name"]}, propList}, Initialization :> {propList = WolframLanguageData["Properties"];} ] $\endgroup$ – Edmund Apr 5 '16 at 23:01

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.