Skip to main content

built in symbols - How to find language changes that were not included in the official change log


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.



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

Popular posts from this blog

mathematical optimization - Minimizing using indices, error: Part::pkspec1: The expression cannot be used as a part specification

I want to use Minimize where the variables to minimize are indices pointing into an array. Here a MWE that hopefully shows what my problem is. vars = u@# & /@ Range[3]; cons = Flatten@ { Table[(u[j] != #) & /@ vars[[j + 1 ;; -1]], {j, 1, 3 - 1}], 1 vec1 = {1, 2, 3}; vec2 = {1, 2, 3}; Minimize[{Total@((vec1[[#]] - vec2[[u[#]]])^2 & /@ Range[1, 3]), cons}, vars, Integers] The error I get: Part::pkspec1: The expression u[1] cannot be used as a part specification. >> Answer Ok, it seems that one can get around Mathematica trying to evaluate vec2[[u[1]]] too early by using the function Indexed[vec2,u[1]] . The working MWE would then look like the following: vars = u@# & /@ Range[3]; cons = Flatten@{ Table[(u[j] != #) & /@ vars[[j + 1 ;; -1]], {j, 1, 3 - 1}], 1 vec1 = {1, 2, 3}; vec2 = {1, 2, 3}; NMinimize[ {Total@((vec1[[#]] - Indexed[vec2, u[#]])^2 & /@ R...

functions - Get leading series expansion term?

Given a function f[x] , I would like to have a function leadingSeries that returns just the leading term in the series around x=0 . For example: leadingSeries[(1/x + 2)/(4 + 1/x^2 + x)] x and leadingSeries[(1/x + 2 + (1 - 1/x^3)/4)/(4 + x)] -(1/(16 x^3)) Is there such a function in Mathematica? Or maybe one can implement it efficiently? EDIT I finally went with the following implementation, based on Carl Woll 's answer: lds[ex_,x_]:=( (ex/.x->(x+O[x]^2))/.SeriesData[U_,Z_,L_List,Mi_,Ma_,De_]:>SeriesData[U,Z,{L[[1]]},Mi,Mi+1,De]//Quiet//Normal) The advantage is, that this one also properly works with functions whose leading term is a constant: lds[Exp[x],x] 1 Answer Update 1 Updated to eliminate SeriesData and to not return additional terms Perhaps you could use: leadingSeries[expr_, x_] := Normal[expr /. x->(x+O[x]^2) /. a_List :> Take[a, 1]] Then for your examples: leadingSeries[(1/x + 2)/(4 + 1/x^2 + x), x] leadingSeries[Exp[x], x] leadingSeries[(1/x + 2 + (1 - 1/x...

What is and isn't a valid variable specification for Manipulate?

I have an expression whose terms have arguments (representing subscripts), like this: myExpr = A[0] + V[1,T] I would like to put it inside a Manipulate to see its value as I move around the parameters. (The goal is eventually to plot it wrt one of the variables inside.) However, Mathematica complains when I set V[1,T] as a manipulated variable: Manipulate[Evaluate[myExpr], {A[0], 0, 1}, {V[1, T], 0, 1}] (*Manipulate::vsform: Manipulate argument {V[1,T],0,1} does not have the correct form for a variable specification. >> *) As a workaround, if I get rid of the symbol T inside the argument, it works fine: Manipulate[ Evaluate[myExpr /. T -> 15], {A[0], 0, 1}, {V[1, 15], 0, 1}] Why this behavior? Can anyone point me to the documentation that says what counts as a valid variable? And is there a way to get Manpiulate to accept an expression with a symbolic argument as a variable? Investigations I've done so far: I tried using variableQ from this answer , but it says V[1...