A change log is issued when Mathematica has an update, such as:
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.
Answer
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"}
Comments
Post a Comment