This repository is for archival. Please see https://github.com/Mathics3/mathics-core
The main thrust behind this API-breaking release is to be able to support a protocol for Graphics3D.
It supports a new Graphics3D protocol is currently expressed in JSON. There is an independent threejs-based module to implement this. Tiago Cavalcante Trindade is responsible for this code.
The other main API-breaking change is more decentralization of the Mathics Documentation. A lot more work needs to go on here, and so there will be one or two more API breaking releases. After this release, the documentation code will be split off into its own git repository.
mathics.setting
has been gone over to simplify.mathics/doc/test/README.rst
for an overview of the dataflow needed to create a PDF.Arrow
for Graphics3D (preliminary)Cylinder
(preliminary)Factorial2
PR #1459 Issue #682Large sections like the "Strings and Characters", "Integer Functions" and "Lists" sections have been broken up into subsections. These more closely match online WL "Guide" sections. This is beneficial not just in the documentation, but also for code organization. See PRs #1464, #1473.
A lot more work is needed here.
The Introduction section of the manual has been revised. Licensing and Copyright/left sections have been reformatted for non-fixed-width displays. #1474
PolarPlot documentation was improved. #1475.
A getter/setter method for Mathics settings was added #1472.
requirements-*.txt
to distribution files.
pip install Mathics3[dev]
should work now. PR #1461PointBox
bugs were fixedArrow3DBox
and Point3DBox
bugs were fixed PR #1463mathics
CLI when -script
and -e
were combined PR
#1455Overall there is a major refactoring underway of how formatting works and its interaction with graphics. More work will come in later releases.
Some of the improvements are visible not here but in the front-ends mathicsscript and mathics-django. In mathicsscript, we can now show SVG images (via matplotlib). In Mathics Django, images and threejs graphs are no longer embedded in MathML.
A lot of the improvements in this release were done or made possible with the help of Tiago Cavalcante Trindade.
It is now possible to get back SVG, and graphics that are not embedded in MathML.
The code is now Pyston 2.2 compatible. However scipy
lxml
are not currently available on Pyston so there is a slight loss of functionality. The code runs about 30% faster under Pyston 2.2. Note that the code also works under PyPy 3.7.
PointSize
setting.PointSize
has been made more closely match Mathematica.Density Plots rendered in SVG broke with this release. They will be reinstated in the future.
Go over settings file to ensure usage names are full sentences.
We have started to put more builtins in the sections or subsections following the organization in Mathematics 5 or as found in the online Wolfram Language Reference. As a result, long lists in previous topics are a bit shorter and there are now more sections. This work was started in 2.2.0.
More work is needed on formatting and showing this information, with the additional breakout we now have subsections. More reorganization and sectioning is needed.
These cleanups will happen in a future version.
Chapters without introductory text like Structural Operations
, or Tensors
have had descriptions added.
Sections that were empty have either been expanded or removed because the underlying name was never a user-level built in, e.g. the various internal Boxing functions like DiskBox
, or CompiledCodeBox
Documentation specific builtins like PolarPlot
or BernsteinBasis
have been added improved, and document examples have been revised such as for PieChart
, Pi
and others.
The Mathics Gallery examples have been updated.
Some slight improvements were made to producing the PDF and more kinds of non-ASCII symbols are tolerated. Expect more work on this in the future via tables from the Mathics Scanner project.
Chapters are no longer in Roman Numerals.
docpipline.py
accepts the option --chapters
or -c
to narrow tests to a particular chapterArg
CoefficientArrays
and Collect
(#1174, #1194)Dispatch
FullSimplify
LetterNumber
#1298. The alphabet
parameter supports only a
minimal number of languages.MemoryAvailable
MemoryInUse
Nand
and Nor
logical functions.Series
, O
and SeriesData
StringReverse
$SystemMemory
Brown
or LighterMagenta
.Attributes
accepts a string parameter.Cases
accepts Heads option. Issue #1302.ColorNegate
for colors is supported.D
and Derivative
improvements.Expand
and ExpandAll
now support a second parameter patt
Issue
#1301.Expand
and ExpandAll
works with hyperbolic functions (Sinh,
Cosh, Tanh, Coth).FileNames
returns a sorted list (#1250).FindRoot
now accepts several optional parameters like Method
and
MaxIterations
. See Issue #1235.FixedPoint
now supports the SameTest
option.mathics
CLI now uses its own Mathics settings.m
filePrepend
works with DownValues
Issue #1251Prime
and PrimePi
now accept a list parameter and have the
NumericFunction
attribute.Read
with Hold[Expression]
now supported. (#1242)ReplaceRepeated
and FixedPoint
now supports the MaxIteration
option. See Issue #1260.Simplify
performs a more sophisticated set of simplifications.Simplify
accepts a second parameter that temporarily overwrites
$Assumptions
.StringTake
now accepts form containing a list of strings and
specification. See Issue #1297.Table
[expr, n] is supported.ToExpression
handles multi-line string input.ToString
accepts an optional form parameter.ToExpression
handles multi-line string input.$VersionNumber
now set to 10.0 (was 6.0).mathics.core.definitions.autoload_files
was added and
exposed to allow front-ends to provide their own custom Mathics.
settings.mathics
terminal has surrounding quotes to
make it more visually distinct from unexpanded and symbol output. To
disable this behavior use --strict-wl-output
.SetTagDelayed
now does not evaluate the RHS before assignment.$InstallationDirectory
starts out Unprotected
.FindRoot
now handles equations.Listable
and NumericFunction
properties are correct.System`$UseSansSerif
moved from core and is sent front-ends
using Settings`$UseSansSerif
.-d
to show how long it takes to parse,
evaluate and compare each individual test. -x
option (akin to
pytests -x
is a short-hand for stop on first errorSpecific Functions
or
Graphics, Drawing, and Images
. More work is expected in the future
to improve document sectioning.ArcTanh
ByteArray
CreateFile
CreateTemporary
FileNames
NIntegrate
PartitionsP
$Notebooks
FileNameJoin
now implements OperatingSystem
optionCompile[]
. The return value or type will be Compile[] and CompiledFunction[]
. Every Mathics Expression can have a compiled form, which may be implemented as a Python function.Equal[]
now compares complex against other numbers properly.0 Infinity
-> Indeterminate
, and expr Infinity
-> DirectedInfinite[expr]
$Path
is now Unprotected
by defaultRead[]
handles expressions better.StringSplit[]
now accepts a list in the first argument.SetDelayed[]
now accepts several conditions imposed both at LHS as well as RHS.InsertBox
accepts an opaque parameter=========
TeXForm[]
for integrals are now properly formatted.builtins
list is not hardliked to the library anymore. This simplifies the loading and reloading of pymathics modules.--colors=None
added to match mathicsscript.BaseExpression
and derivated classes, the method boxes_to_xml
now are called boxes_to_mathml
.format
method of the class Evaluation
, the builtin ToString
is called instead of boxes_to_text
GraphicsBox
now has two methods: to_svg
and to_mathml
. The first produces SVG plain text while the second produces <mglyph ...>
tags with base64 encoded SVGs.Equal
See PR #1209
D[]
and Derivative[]
See PR #1220.Collect[]
See Issue #1194.Series[]
See Issue #1193.In order to accommodate growth and increase use pieces of Mathics inside other packages, some parts of Mathics have been split off and moved to separately installable packages. In particular:
AnglePath
, AnglePathFold
, AngleVector
BoxData
, TextData
, InterpretationBox
, StyleBox
, TagBox
,
TemplateBox
, ButtonBox
, InterpretationBox
ContinuedFraction
ConvertCommonDumpRemoveLinearSyntax
and System
ConvertersDump` context variablesFirstCase
, Lookup
, Key
, Lookup
and Failure
Haversine
, InverseHaversine
Insert
and Delete
LerchPhi
MathicsVersion
(this is not in WL)NumberQ
PossibleZeroQ
PR #1100Run
Show
SympyObject
TimeRemaining
and TimeConstrained
\[RadicalBox]
Axes
, Filling
,
ImageSize
, Joined
Mathematical Constants is now its own module/section. Constants have been filled out. These constants have been added:
Catalan
Degree
Glaisher
GoldenRatio
Khinchin
Many of these and the existing constants are computable via mpmath, NumPy, or Sympy.
Certain aspects of the configuration of the kernel are now controlled by variables, defined in /autoad/settings.m
.
$GetTrace
(False
by default). Defines if when a WL module is load through Get
, definitions will be traced (for debug).$PreferredBackendMethod
Set this do whether to use mpmath, NumPy or Sympy for numeric and symbolic constants and methods when there is a choice ("sympy"
by default) (see #1124)Method
option "mpmath" to compute Eigenvalues
using mpmath
(#1115).OptionValue
and OptionsPattern
(#1113)There have been numerous bug is driven by working on Combinatorica V0.9 and CellsToTeX.
Sum
involving numeric integer bounds involving Mathics functions
fixed.Equal
UnEqual
testing on Strings (#1128).Sum
's lower and upper bounds values can now be Mathics
expressionsgries_schneider
testsIn order to accommodate growth and increase use pieces of Mathics inside other packages, some parts of Mathics have been split off and moved to separately installable packages. In particular:
AnglePath
, AnglePathFold
, AngleVector
BoxData
, TextData
, InterpretationBox
, StyleBox
, TagBox
,
TemplateBox
, ButtonBox
, InterpretationBox
ContinuedFraction
ConvertCommonDumpRemoveLinearSyntax
and System
ConvertersDump` context variablesFirstCase
, Lookup
, Key
, Lookup
and Failure
Haversine
, InverseHaversine
Insert
and Delete
LerchPhi
MathicsVersion
(this is not in WL)NumberQ
PossibleZeroQ
PR #1100Run
Show
SympyObject
TimeRemaining
and TimeConstrained
\[RadicalBox]
Axes
, Filling
,
ImageSize
, Joined
Mathematical Constants is now its own module/section. Constants have been filled out. These constants have been added:
Catalan
Degree
Glaisher
GoldenRatio
Khinchin
Many of these and the existing constants are computable via mpmath, NumPy, or Sympy.
Certain aspects of the configuration of the kernel are now controlled by variables, defined in /autoad/settings.m
.
$GetTrace
(False
by default). Defines if when a WL module is load through Get
, definitions will be traced (for debug).$PreferredBackendMethod
Set this do whether to use mpmath, NumPy or Sympy for numeric and symbolic constants and methods when there is a choice ("sympy"
by default) (see #1124)Method
option "mpmath" to compute Eigenvalues
using mpmath
(#1115).OptionValue
and OptionsPattern
(#1113)There have been numerous bug is driven by working on Combinatorica V0.9 and CellsToTeX.
Sum
involving numeric integer bounds involving Mathics functions
fixed.Equal
UnEqual
testing on Strings (#1128).Sum
's lower and upper bounds values can now be Mathics
expressionsgries_schneider
testsThis may be the last update before some major refactoring and interface changing occurs.
In a future 2.0.0 release, Django will no longer be bundled here. See mathics-django for the unbundled replacement.
Some changes were made to support Pymathics Graph, a new graph package bundled separately, and to support the ability for front-ends to handle rendering on their own. Note that currently this doesn't integrate well nto the Django interface, although it works well in mathicsscript
.
Mathics Packages added:
DiscreteMath`CombinatoricaV0.9
(preferred) aand
DiscreteMath`CombinatoricaV0.6
.Both of these correspond to Steven Skiena's older book: "Implementing Discrete Mathematics: Combinatorics and Graph Theory" book.
If you have a package that you would like included in the distribution, and it works with Mathics, please contact us.
Rubi may appear in a future release, possibly in a year or so. However this might be speeded up if we can get people to help out with this.
StirlingS1
, StirlingS2
(not all WL variations handled)
MapAt
(not all WL variations handled)
PythonForm
, SympyForm
: these is not in WL. It simply will show a crude translation to sympy
or python
. Expect more and better translation later
Throw
and Catch
With
FileNameTake
Compile
so it accepts functions ##1026Trace
option to Get
. Get["fn", Trace->True]
will show lines as they are read.from_python
, to_python
. Previously they were 0, and 1.DeleteCases
to accept a levelspec parameter.Evaluation#exc_result
to capture Aborted
, Timeout
, Overflow1`, etc.ImageData
changed to get bits {0,1}, not booleans as previously.Needs
, e.g check if already loaded, correct a typo, etc.System`$InputFileName
is now set inside Needs
and Get
dmathicserver
, dmathicsscript
, and dmathics
to simplify running dockerGet
and Needs
.So we can get onto PyPI, the PyPI install name has changed from Mathics to Mathics3.
SetDirectory
fixes. PR #994`PatternError
Exceptions...
and ...
(RepeatAll
)\.
without a following space (ReplaceAll
). Issue
#992`Pattern
``Names
. PR #1003MathicsSession
class to simplify running Mathics from
Python. PR #1001`Protect
` and `Unprotect
` list
of symbols and regular expressions. PR #1003All major packages that Mathics needs have been updated for more recent releases. Specifically These include:
Association
, AssociationQ
, FirstPostion
, LeafCount
Association
, AssociationQ
, Keys
, Values
#705BarChart[]
, PieChart
, Histogram
, DensityPlot
#499BooleanQ
, DigitQ
and LetterQ
CharacterEncoding
option for Import[]
Coefficient[]
, Coefficient[x * y, z, 0]
, Coefficient*[]
,DiscreteLimit
#922Environment
FirstPostions
, Integers
, PrePendTo[]
GetEnvironment
# 938Integers
, PrependTo
and ContainsOnly
Import
support for WL packagesIterationLimit
LoadModule
MantissaExponent[]
, FractionalPart[]
, CubeRoot[]
PolynomialQ[]
, MinimalPolynomial[]
Quit[]
, Exit[]
#523, #814,RealDigits
#891, #691, Interrupt
, Unique
RemoveDiacritics[]
, Transliterate[]
#617Root
#806Sign[]
, Exponent
, Divisors
, QuotientRemainder
,
FactorTermsList
Speedups by avoiding inner classes
, #616StringRiffle[]
, StringFreeQ[]
, StringContainsQ[]
,
StringInsert
SubsetQ
and Delete[]
#688, #784,Subsets
#685SystemTimeZone
and correct TimeZone
#924System\`Byteordering
and System\`Environemnt
#859$UseSansSerif
#908randchoice
option for NoNumPyRandomEnv
#820MATHICS_MAX_RECURSION_DEPTH
--full-form
(-F
) on mathics
to parsed FullForm
of
input expressionsManipulate[x,{x,{a,b}}]
Nearest
WordCloud
StringTrim[]
URLFetch
optionsXMLGetString
and parse errorLanguageIdentify
Check
, Interrupt
, and Unique
#696Eigenvalues
, Eigenvectors
#804Solve
#806Re
and Im
SympyPrime
#827ColorData
Sum
and Product
#869, #873Mathematica tracking changes:
FetchURL
to URLFetch
(according to the WL standard)SymbolLookup
to Lookup
RecursionLimit
python
to python3
graphs
module (for Graphs) has been pulled until Mathics
supports pymathics and graphics using networkx better. It will
reappear as a pymathics module.natlang
(for Natural Language processing) has also been
pulled. The problem here too is that the pymathics mechanism needs a
small amount of work to make it scalable, and in 1.0 these were hard
coded. Also, both this module and graphs
pulled in some
potentially hard-to-satisfy non-Python dependencies such as
matplotlib, or NLP libraries, and word lists. All of this made
installation of mathics harder, and the import of these libraries,
natlang
in particular took some time. All of this points to having
these live in their own repositories and get imported on laziliy on
demand