Skip to content

Latest commit

 

History

History
1523 lines (1170 loc) · 60.5 KB

CHANGES.rst

File metadata and controls

1523 lines (1170 loc) · 60.5 KB

CHANGES

New Builtins

  • CheckAbort
  • FileNameDrop
  • SetEnvironment

By @davidar:

  • BellB
  • DivisorSigma
  • DivisorSum
  • EulerE
  • HypergeometricU
  • IntegerPart
  • IntegerPartitions
  • JacobiSymbol
  • KroneckerSymbol
  • LambertW
  • LinearRecurrence
  • LucasL
  • MersennePrimeExponent
  • MoebiusMu
  • NumberDigit
  • PolygonalNumber
  • PolyLog
  • PowersRepresentations
  • ReverseSort
  • RootSum
  • SeriesCoefficient
  • SquaresR
  • Subfactorial

mathics command line

  • --post-mortem option added which will go into the trepan3k debugger on an unrecoverable error.

Compatibility

  • GetEnvironment expanded to handle [] and {var1, var2,...} forms

Internals

Operator precedence has been gone over and is picked up in tables from the Mathics Scanner project.

Performance

  • Blank* patterns without arguments are now singletons.

API incompatibility

  • Matcher now requires an additional evaluation parameter
  • Romberg removed as an NIntegrate[] method. It is depcrecated in SciPy and is to be removed by SciPy 1.15.

Bugs

  • Fix infinite recursion when formatting Sequence[...]

Package updates

  1. Python 3.12 is now supported
  2. SymPy 1.13 is now supported

7.0.0

Some work was done here in support of planned future improvements like lazy loading of builtin functions. A bit of effort was also spent to modernize Python code and style, add more type annotations, remove spelling errors, and use newer versions of important software like SymPy and Python itself.

New Builtins

  • $MaxLengthIntStringConversion
  • Elements
  • ComplexExpand (thanks to vitrun)
  • ConjugateTranspose
  • LeviCivitaTensor
  • RealAbs and RealSign
  • RealValuedNumberQ

Documentation

Many formatting issues with the PDF file have been addressed. In particular, the spacing of section numbers in chapter and section table of contents has been increased. The margin space around builtin definitions has a also been increased. Numerous spelling corrections to the document have been applied.

The code to run doctests and produce LaTeX documentation has been revised and refactored to allow incremental builtin update, and to DRY the code.

Section Head-Related Operations is a new section off of "Expression Structure". The title of the PDF has changed from Mathics to Mathics3 and the introduction has been updated and revised.

Compatibility

  • *Plot does not show messages during the evaluation.
  • Range[] now handles a negative di PR #951
  • Improved support for DirectedInfinity and Indeterminate.
  • Graphics and Graphics3D including wrong primitives and directives are shown with a pink background. In the Mathics-Django interface, a tooltip error message is also shown.
  • Improving support for $CharacterEncoding. Now it is possible to change it from inside the session.

Internals

  • eval_abs and eval_sign extracted from Abs and Sign and added to mathics.eval.arithmetic.
  • Maximum number of digits allowed in a string set to 7000 and can be adjusted using environment variable MATHICS_MAX_STR_DIGITS on Python versions that don't adjust automatically (like pyston).
  • Real number comparisons implemented is based now in the internal implementation of RealSign.
  • For Python 3.11, the variable $MaxLengthIntStringConversion controls the maximum size of the literal conversion between large integers and Strings.
  • Older style non-appearing and non-pedagogical doctests have been converted to pytest
  • Built-in code is directed explicitly rather than implicitly. This facilitates the ability to lazy load builtins or "autoload" them a la GNU Emacs autoload.
  • add mpmath lru cache
  • Some works was done to make it possible so that in the future we can speed up initial loading and reduce the initial memory footprint

Bugs

  • Definitions is compatible with pickle.
  • Improved support for Quantity expressions, including conversions, formatting and arithmetic operations.
  • Background option for Graphics and Graphics3D is operative again.
  • Numeric comparisons against expressions involving String; Issue #797)
  • Switch[] involving Infinity. Issue #956
  • Outer[] on SparseArray. Issue #939
  • ArrayQ[] detects SparseArray PR #947
  • BoxExpressionError exceptions handled Issue. PR #970
  • Derivative evaluation of True, False and List[] corrected. PR #971, #973
  • Combinatorica package fixes. PR #974
  • Exit[] not working. PR #998
  • BaseForm is now listed as in $OutputForms

API

We now require an explicit call to a new function import_and_load_builtins(). Previously loading was implicit and indeterminate as to when this occurred as it was based on import order. We need this so that we can support in the future lazy loading of builtin modules.

Package updates

  1. Python 3.11 is now supported
  2. Sympy 1.12 is now supported

6.0.2 to 6.0.4

Small fixes noticed by users and packagers, such as OpenSUSE Tumpleweed

6.0.1

Release to get Pillow 9.2 dependency added for Python 3.7+

Some Pattern-matching code gone over to add type annotations and to start documenting its behavior and characteristics. Function attributes are now examined and stored at the time of Pattern-object creation rather than at evaluation time. This better matches WMA behavior which pulls out attribute this even earlier than this. These changes speed up doctest running time by about 7% under Pyston.

Combinatorica version upgraded from 0.9 (circa 1992) to 0.91 (circa 1995) which closer matches the published book.

Random builtin documentation gone over to conform to current documentation style.

6.0.0

A fair bit of code refactoring has gone on so that we might be able to scale the code, get it to be more performant, and more in line with other interpreters. There is Greater use of Symbols as opposed to strings.

The builtin Functions have been organized into grouping akin to what is found in WMA. This is not just for documentation purposes, but it better modularizes the code and keep the modules smaller while suggesting where functions below as we scale.

Image Routines have been gone over and fixed. Basically we use Pillow imaging routines and as opposed to home-grown image code.

A number of Built-in functions that were implemented were not accessible for various reasons.

Mathics3 Modules are better integrated into the documentation. Existing Mathics3 modules pymathics.graph and pymathics.natlang have had a major overhaul, although more is needed. And will continue after the 6.0.0 release

We have gradually been rolling in more Python type annotations and current Python practices such as using isort, black and flake8.

Evaluation methods of built-in functions start eval_ not apply_.

API

  1. New function mathics.system_info.python_implementation() shows the Python Implementation, e.g. CPython, PyPy, Pyston that is running Python. This is included in the information mathics.system_info.mathics_system__system_info() returns and is used in $PythonImplementation
  2. A list of optional software can be found in mathics.optional_software. Versions of that software are included in mathics.version_info.

Package update

  1. SymPy 1.11.1 accepted
  2. Numpy 1.24.0 accepted

New Builtins

  1. $BoxForms
  2. $OutputForms
  3. $PrintForms
  4. $PythonImplementation
  5. Accuracy
  6. ClebschGordan
  7. ComplexExpand (@yzrun)
  8. Curl (2-D and 3-D vector forms only)
  9. DiscretePlot
  10. Kurtosis
  11. ListLogPlot
  12. LogPlot
  13. $MaxMachineNumber
  14. $MinMachineNumber
  15. NumberLinePlot
  16. PauliMatrix
  17. Remove
  18. SetOptions
  19. SixJSymbol
  20. Skewness
  21. ThreeJSymbol

Documentation

  1. All Builtins have links to WMA pages.
  2. "Accuracy and Precision" section added to the Tutorial portion.
  3. "Attribute Definitions" section reinstated.
  4. "Expression Structure" split out as a guide section (was "Structure of Expressions").
  5. "Exponential Functional" split out from "Trigonometry Functions"
  6. "Functional Programming" section split out.
  7. "Image Manipulation" has been split off from Graphics and Drawing and turned into a guide section.
  8. Image examples now appear in the LaTeX and therefore the PDF doc
  9. "Logic and Boolean Algebra" section reinstated.
  10. "Forms of Input and Output" is its own guide section.
  11. More URL links to Wiki pages added; more internal cross links added.
  12. "Units and Quantities" section reinstated.
  13. The Mathics3 Modules are now included in LaTeX and therefore the PDF doc.

Internals

  1. boxes_to_ methods are now optional for BoxElement subclasses. Most of the code is now moved to the mathics.format submodule, and implemented in a more scalable way.
  2. from_mpmath conversion supports a new parameter acc to set the accuracy of the number.
  3. mathics.builtin.inout was split in several modules (inout, messages, layout, makeboxes) in order to improve the documentation.
  4. mathics.eval was create to have code that might be put in an instruction interpreter. The opcodes-like functions start eval_, other functions are helper functions for those.
  5. Operator name to Unicode or ASCII comes from Mathics scanner character tables.
  6. Builtin instance methods that start eval are considered rule matching and function application; the use of the name apply``is deprecated, when ``eval is intended.
  7. Modularize and improve the way in which Builtin classes are selected to have an associated Definition.
  8. _SetOperator.assign_elementary was renamed as _SetOperator.assign. All the special cases are not handled by the _SetOperator.special_cases dict.
  9. isort run over all Python files. More type annotations and docstrings on functions added.
  10. caching on immutable atoms like, String, Integer, Real, etc. was improved; the __hash__() function was sped up. There is a small speedup overall from this at the expense of increased memory.
  11. more type annotations added to functions, especially builtin functions
  12. Numerical constants used along the code was renamed using caps, according to the Python's convention.

Bugs

# 0 with a given precision (like in `0`3`) is now parsed as 0, an integer number. # Reading certain GIFs now work again #. Random[] works now. #. RandomSample with one list argument now returns a random ordering of the list items. Previously it would return just one item. #. Origin placement corrected on ListPlot and LinePlot. #. Fix long-standing bugs in Image handling #. Some scikit image routines line EdgeDetect were getting omitted due to overly stringent PyPI requirements #. Units and Quantities were sometimes failing. Also they were omitted from documentation. #. Better handling of Infinite quantities. #. Improved Precision and Accuracy``compatibility with WMA. In particular, ``Precision[0.] and Accuracy[0.] #. Accuracy in numbers using the notation ` n.nnn``acc ` now is properly handled. #. numeric precision in mpmath was not reset after operations that changed these. This cause huges slowdowns after an operation that set the mpmath precision high. This was the source of several-minute slowdowns in testing. #. GIF87a (`MadTeaParty.gif or ExampleData) image loading fixed #. Replace non-free Leena image with a a freely distributable image. Issue #728

PyPI Package requirements

Mathics3 aims at a more richer set of functionality.

Therefore NumPy and Pillow (9.10 or later) are required Python packages where they had been optional before. In truth, probably running Mathics without one or both probably did not work well if it worked at all; we had not been testing setups that did not have NumPy.

Enhancements

  1. Vector restriction on Norm[] removed. "Frobinius" p-form allowed.
  2. Better handling of comparisons with finite precision numbers.
  3. Improved implementation for Precision.
  4. Infix operators, like -> render with their Unicode symbol when $CharacterEncoding is not "ASCII".
  5. Grid compatibility with WMA was improved. Now it supports non-uniform list of lists and lists with general elements.
  6. Support for BigEndian Big TIFF

5.0.2

Get in requirements-cython.txt` into tarball. Issue #483

New Symbols

  1. Undefined

5.0.1

Mostly a release to fix a Python packaging problem.

Internals

  1. format and do_format methods were removed from the interface of BaseElement, becoming non-member functions.
  2. The class BoxElement was introduced as a base for boxing elements.

New Builtin

  1. 'Inverse Gudermannian'.

Documentation

Hyperbolic functions were split off form trigonometry and exponential functions. More URL links were added.

Bugs

  1. Creating a complex number from Infinity no longer crashes and returns 'I * Infinity'

5.0.0

This release starts to address some of the performance problems and terminology confusion that goes back to the very beginning. As a result, this release is not API compatible with prior releases.

In conjunction with the performance improvement in this release, we start refactoring some of the core classes and modules to start to get this to look and act more like other interpreters, and to follow more current Python practice.

More work will continue in subsequent releases.

New Builtins

  1. Euler's Beta function.
  2. Bernoulli.
  3. CatalanNumber (Integer arguments only).
  4. CompositeQ.
  5. Diagonal. Issue #115.
  6. Divisible.
  7. EllipticE
  8. EllipticF
  9. EllipticK
  10. EllipticPi
  11. EulerPhi
  12. $Echo. Issue #42.
  13. FindRoot was improved for supporting numerical derivatives Issue #67, as well as the use of scipy libraries when are available.
  14. FindRoot (for the newton method) partially supports EvaluationMonitor and StepMonitor options.
  15. FindMinimum and FindMaximum now have a minimal implementation for 1D problems and the use of scipy libraries when are available.
  16. LogGamma.
  17. ModularInverse.
  18. NumericFunction.
  19. Projection.
  20. Partial support for Graphics option Opacity.
  21. SeriesData operations was improved.
  22. TraceEvaluation[] shows expression name calls and return values of it argument. - Pass option ShowTimeBySteps, to show accumulated time before each step - The variable $TraceEvalution when set True will show all expression evaluations.
  23. TraditionalForm

Enhancements

  1. D acts over Integrate and NIntegrate. Issue #130.
  2. SameQ (===) handles chaining, e.g. a == b == c or SameQ[a, b, c].
  3. Simplify handles expressions of the form Simplify[0^a] Issue #167.
  4. Simplify and FullSimplify support optional parameters Assumptions and ComplexityFunction.
  5. UnsameQ (=!=) handles chaining, e.g. a =!= b =!= c or UnsameQ[a, b, c].
  6. Assignments to usage messages associated with Symbols is allowed as it is in WMA. With this and other changes, Combinatorica 2.0 works as written.
  7. Share[] performs an explicit call to the Python garbage collection and returns the amount of memory free.
  8. Improve the compatibility of TeXForm and MathMLForm outputs with WMA. MathML tags around numbers appear as "<mn>" tags instead of "<mtext>", except in the case of InputForm expressions. In TeXForm some quotes around strings have been removed to conform to WMA. It is not clear whether this is the correct behavior.
  9. Allow scipy and skimage to be optional. In particular: revise Nintegrate[] to use Method="Internal" when scipy isn't available.
  10. Pyston up to versions from 2.2 to 2.3.4 are supported as are PyPy versions from 3.7-7.3.9.0 up 3.9-7.3.9. However those Python interpreters may have limitations and limitations on packages that they support.
  11. Improved support for Series Issue #46.
  12. Cylinder rendering is implemented in Asymptote.

Documentation

  1. "Testing Expressions" section added.
  2. "Representation of Numbers" section added.
  3. "Descriptive Statistics" section added and "Moments" folded into that.
  4. Many More URL references. <url> now supports link text.
  5. Reference Chapter and Sections are now in alphabetical order
  6. Two-column mode was removed in most sections so the printed PDF looks nicer.
  7. Printed Error message output in test examples is in typewriter font and doesn't drop inter-word spaces.

Internals

  1. Inexplicably, what the rest of the world calls a "nodes" in a tree or or in WMA "elements" in a tree had been called a "leaves". We now use the proper term "element".
  2. Lots of predefined Symbol``s have been added. Many appear in the module ``mathics.core.systemsymbols.
  3. Attributes are now stored in a bitset instead of a tuple of string. This speeds up attributes read, and RAM usage, .
  4. Symbol.is_numeric and Expression.is_numeric now uses the attribute Definition.is_numeric to determine the returned value.
  5. NIntegrate internal algorithms and interfaces to scipy were moved to mathics.algorithm.integrators and mathics.builtin.scipy_utils.integrators respectively.
  6. N[Integrate[...]] now is evaluated as NIntegrate[...]
  7. Definitions for symbols CurrentContext and ContextPath[] are mirrored in the mathics.core.definitions.Definitions object for faster access.
  8. FullForm[List[...]] is shown as {...} according to the WL standard.
  9. Expression.is_numeric() accepts an Evaluation object as a parameter; the definitions attribute of that is used.
  10. SameQ first checks the type, then the id, and then names in symbols.
  11. In mathics.builtin.patterns.PatternTest, if the condition is one of the most used tests (NumberQ, NumericQ, StringQ, etc) the match method is overwritten to specialized versions that avoid function calls.
  12. mathics.core.patterns.AtomPattern specializes the comparison depending of the Atom type.
  13. To speed up development, you can set NO_CYTHON to skip Cythonizing Python modules. If you are using Pyston or PyPy, Cythonization slows things down.
  14. any and``all`` calls were unrolled as loops in Cythonized modules: this avoids the overhead of a function call replacing it by a (C) for loop, which is faster.
  15. A bug was fixed relating to the order in which mathics.core.definitions stores the rules
  16. InstanceableBuiltin -> BuiltinElement
  17. BoxConstruction -> BoxExpression
  18. the method Element.is_true() was removed in favor of is SymbolTrue
  19. N[_,_,Method->method] was reworked. Issue #137.
  20. The methods boxes_to_* were moved to BoxExpression.
  21. remove flatten_* from the Atom interface.
  22. Definition has a new property is_numeric.

Speed improvements:

  1. Creating two Symbol objects with the same name will give the same object. This avoids unnecessary string comparisons, and calls to ensure_context.
  2. Attributes are now stored in a bitset instead of a tuple of strings.
  3. The Definitions object has two properties: current_contex and context_path. This speeds up the lookup of symbols names. These properties store their values into the corresponding symbols in the builtin definitions.
  4. eval_N was add to speed up the then often-used built-in function N.
  5. Expression evaluation was gone over and improved. properties on the collection which can speed up evaluation, such as whether an expression is fully evaluated, is ordered, or is flat are collected.
  6. List evaluation is customized. There is a new ListExpression class which has a more streamlined evaluate() method. More of this kind of thing will follow
  7. BaseExpression.get_head avoids building a symbol saving two function calls.

Package update

  1. SymPy 1.10.1

Compatibility

  1. ScriptCommandLine now returns, as the first element, the name of the script file (when available), for compatibility with WMA. Issue #132.
  2. Expression.numerify improved in a way to obtain a behavior closer to WMA.
  3. NumericQ lhs expressions are now handled as a special case in assignment. For example, NumericQ[a]=True tells the interpreter that a must be considered a numeric quantity, so NumericQ[Sin[a]] evaluates to True.

Bugs

  1. First, Rest and Last now handle invalid arguments.
  2. Set*: fixed issue #128.
  3. SameQ: comparison with MachinePrecision only needs to be exact within the last bit Issue #148.
  4. Fix a bug in Simplify that produced expressions of the form ConditionalExpression[_,{True}].
  5. Fix bug in Clear and ClearAll (#194).
  6. Fix base 10 formatting for infix Times. Issue #266.
  7. Partial fix of FillSimplify
  8. Streams used in MathicsOpen are now freed and their file descriptors now released. Issue #326.
  9. Some temporary files that were created are now removed from the filesystem. Issue #309.
  10. There were a number of small changes/fixes involving NIntegrate and its Method options. Nintegrate tests have been expanded.
  11. Fix a bug in handling arguments of pythonized expressions, that are produced by Compile when the llvmlite compiler fails.
  12. N now handles arbitrary precision numbers when the number of digits is not specified.
  13. N[Indeterminate] now produces Indeterminate instead a PrecisionReal(nan).
  14. Fix crash in NestWhile when supplying All as the fourth argument.
  15. Fix the comparison between Image and other expressions.
  16. Fix an issue that prevented that Collect handles properly polynomials on expressions (issue #285).
  17. Fix a bug in formatting expressions of the form (-1)^a without the parenthesis (issue #332).
  18. Fix a but in failure in the order in which mathics.core.definitions stores the rules.
  19. Numeric overflows now do not affect the full evaluation, but instead just the element which produce it.
  20. Compatibility with the way expressions are ordered more closely follows WMA: Now expressions with fewer elements come first (issue #458).
  21. The order of the context name resolution (and $ContextPath) was switched; "System comes before "Global.

Incompatible changes

The following changes were motivated by a need to speed up the interpreter.

  1. Expression arguments differ. The first parameter has to be a Symbol while the remaining arguments have to be some sort of BaseElement rather than something that can be converted to an element. Properties for the collection of elements can be specified when they are known. To get the old behavior, use to_expression
  2. Expressions which are lists are a new kind of class, ListExpression. As with expressions, the constructor requires valid elements, not something convertible to an element. Use to_mathics_list

4.0.1

New builtins

  1. Guidermannian
  2. Cone
  3. Tube
  4. Normal now have a basic support for SeriesData

Tensor functions:

  1. RotationTransform
  2. ScalingTransform
  3. ShearingTransform
  4. TransformationFunction
  5. TranslationTransform

Spherical Bessel functions:

  1. SphericalBesselJ
  2. SphericalBesselY
  3. SphericalHankelH1
  4. SphericalHankelH2

Gamma functions:

  1. PolyGamma
  2. Stieltjes

Uniform Polyhedron #. Dodecahedron #. Icosahedron #. Octahedron #. TetraHedron #. UniformPolyedron

Mathics-specific

  1. TraceBuiltin[], $TraceBuiltins, ClearTrace[], PrintTrace[]

These collect builtin-function call counts and elapsed time in the routines. TraceBuiltin[expr] collects information for just expr. Whereas setting $TraceBuiltins to True will accumulate results of evaluations PrintTrace[] dumps the statistics and ClearTrace[] clears the statistics data.

mathics -T/--trace-builtin is about the same as setting $TraceBuiltins = True on entry and runs PrintTrace[] on exit.

Bugs

  1. Fix and document better behavior of Quantile
  2. Improve Asymptote BezierCurve implementation
  3. Rationalize gives symmetric results for +/- like MMA does. If the result is an integer, it stays that way.
  4. stream processing was redone. InputStream, OutputStream and StringToStream should all open, close, and assign stream numbers now

4.0.0 #.----

The main thrust behind this API-breaking release is to be able to support a protocol for Graphics3D.

It 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.

Enhancements

  1. a Graphics3D protocol, mentioned above, has been started
  2. mathics.setting have been gone over to simplify.
  3. A rudimentary and crude SVG Density Plot was added. The prior method relied on mysterious secret handshakes in JSON between Mathics Core and Mathics Django. While the density plot output was nicer in Mathics Django, from an overall API perspective this was untenable. A future version may improve SVG handling of Density plots using elliptic density gratings in SVG. And/or we may define this in the JSON API.
  4. SVG and Asymptote drawing now includes inline comments indicating which Box Structures are being implemented in code

Documentation

  1. Document data used in producing PDFs and HTML-rendered documents is now stored in both the user space, where it can be extended, and in the package install space -- which is useful when there is no user-space data.
  2. The documentation pipeline has been gone over. Turning the internal data into a LaTeX file is now a separate own program. See mathics/doc/test/README.rst for an overview of the dataflow needed to create a PDF.
  3. Summary text for various built-in functions has been started. These summaries are visible in Mathics Django when lists links are given in Chapters, Guide Sections, or Sections.
  4. A Sections for Lists has been started and grouping for these have been added. So code and sections have moved around here.
  5. Regexp detection of tests versus document text has been improved.
  6. Documentation improved
  7. The flakiness around showing sine graphs with filling on the axes or below has been addressed. We now warn when a version of Asymptote or Ghostscript is used that is likely to give a problem.

Bugs

  1. A small SVGTransform bug was fixed. Thanks to axelclk for spotting.
  2. Elliptic arcs are now supported in Asymptote. There still is a bug however in calculating the bounding box when this happens.
  3. A bug in image decoding introduced in 3.1.0 or so was fixed.
  4. A bug SVG LineBoxes was fixed

Regressions

  1. Some of the test output for builtins inside a guide sections is not automatically rendered
  2. Density plot rendered in Mathics Django do not render as nice since we no longer use the secret protocol handshake hack. We may fix this in a future release
  3. Some of the Asymptote graphs look different. Graphic3D mesh lines are not as prominent or don't appear. This is due to using a newer version of Asymptote, and we will address this in a future release.

3.1.0

New variables and builtins

  1. Arrow for Graphics3D (preliminary)
  2. Cylinder (preliminary)
  3. Factorial2 PR #1459 Issue #682.

Enhancements

Large 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.

Bugs

  1. Add requirements-*.txt``to distribution files. ``pip install Mathics3[dev] should work now. PR #1461
  2. Some PointBox bugs were fixed
  3. Some Arrow3DBox and Point3DBox bugs were fixed PR #1463
  4. Fix bug in mathics CLI when -script and -e were combined PR #1455

3.0.0

Overall 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.

Enhancements

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.

Bugs

  1. Tick marks and the placement of numbers on charts have been corrected. PR #1437
  2. Asymptote now respects the PointSize setting.
  3. In graphs rendered in SVG, the PointSize has been made more closely match Mathematica.
  4. Polygons rendered in Asymptote now respects the even/odd rule for filling areas.

Density Plots rendered in SVG broke with this release. They will be reinstated in the future.

Documentation

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.

Internal changes

  1. docpipline.py accepts the option --chapters or -c to narrow tests to a particular chapter
  2. Format routines have been isolated into its own module. Currently we have format routines for SVG, JSON and Asymptote. Expect more reorganization in the future.
  3. Boxing routines have been isolated to its own module.
  4. The entire code base has been run through the Python formatter black.
  5. More Python3 types to function signatures have been added.
  6. More document tests that were not user-visible have been moved to unit tests which run faster. More work is needed here.

2.2.0

Package update

  1. SymPy 1.8

New variables and builtins

  1. Arg
  2. CoefficientArrays and Collect (#1174, #1194)
  3. Dispatch
  4. FullSimplify
  5. LetterNumber #1298. The alphabet parameter supports only a minimal number of languages.
  6. MemoryAvailable
  7. MemoryInUse
  8. Nand and Nor logical functions.
  9. Series, O and SeriesData
  10. StringReverse
  11. $SystemMemory
  12. Add all of the named colors, e.g. Brown or LighterMagenta.

Enhancements

  1. a function evaluate_predicate allows for a basic predicate evaluation using $Assumptions.
  2. Attributes accepts a string parameter.
  3. Cases accepts Heads option. Issue #1302.
  4. ColorNegate for colors is supported.
  5. D and Derivative improvements.
  6. Expand and ExpandAll now support a second parameter patt Issue #1301.
  7. Expand and ExpandAll works with hyperbolic functions (Sinh, Cosh, Tanh, Coth).
  8. FileNames returns a sorted list. Issue #1250.
  9. FindRoot now accepts several optional parameters like Method and MaxIterations. See Issue #1235.
  10. FixedPoint now supports the SameTest option.
  11. mathics CLI now uses its own Mathics settings.m file
  12. Prepend works with DownValues Issue #1251
  13. Prime and PrimePi now accept a list parameter and have the NumericFunction attribute.
  14. Read with Hold[Expression] now supported. (#1242)
  15. ReplaceRepeated and FixedPoint now supports the MaxIteration option. See Issue #1260.
  16. Simplify performs a more sophisticated set of simplifications.
  17. Simplify accepts a second parameter that temporarily overwrites $Assumptions.
  18. StringTake now accepts form containing a list of strings and specification. See Issue #1297.
  19. Table [expr, n] is supported.
  20. ToExpression handles multi-line string input.
  21. ToString accepts an optional form parameter.
  22. ToExpression handles multi-line string input.
  23. $VersionNumber now set to 10.0 (was 6.0).
  24. The implementation of Streams was redone.
  25. Function mathics.core.definitions.autoload_files was added and exposed to allow front-ends to provide their own custom Mathics. settings.
  26. String output in the mathics terminal has surrounding quotes to make it more visually distinct from unexpanded and symbol output. To disable this behavior use --strict-wl-output.

Bug fixes

  1. SetTagDelayed now does not evaluate the RHS before assignment.
  2. $InstallationDirectory starts out Unprotected.
  3. FindRoot now handles equations.
  4. Malformed Patterns are detected and an error message is given for them.
  5. Functions gone over to ensure the Listable and NumericFunction properties are correct.

Incompatible changes #.-------------------

  1. System`$UseSansSerif moved from core and is sent front-ends using Settings`$UseSansSerif.

Internal changes #.---------------

  1. docpipeline.py accepts the option -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 error
  2. Some builtin functions have been grouped together in a module underneath the top-level builtin directory. As a result, in the documents you will list some builtins listed under an overarching category like Specific Functions or Graphics, Drawing, and Images. More work is expected in the future to improve document sectioning.
  3. System`$Notebooks is removed from settings. It is in all of the front-ends now.

2.1.0

New builtins

  1. ArcTanh
  2. ByteArray
  3. CreateFile
  4. CreateTemporary
  5. FileNames
  6. NIntegrate
  7. PartitionsP
  8. $Notebooks
  9. SparseArray

Enhancements

  1. The Mathics version is checked for builtin modules at load time. A message is given when a builtin doesn't load.
  2. Automatic detection for the best strategy to numeric evaluation of constants.
  3. FileNameJoin now implements OperatingSystem option
  4. Mathics functions are accepted by Compile[]. 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.
  5. Equal[] now compares complex against other numbers properly.
  6. Improvements in handling products with infinite factors: 0 Infinity-> Indeterminate, and expr Infinity-> DirectedInfinite[expr]
  7. $Path is now Unprotected by default
  8. Read[] handles expressions better.
  9. StringSplit[] now accepts a list in the first argument.
  10. SetDelayed[] now accepts several conditions imposed both at LHS as well as RHS.
  11. Axes for 2D Plots are now rendered for SVGs
  12. InsertBox accepts an opaque parameter

Bug fixes

TeXForm[] for integrals are now properly formatted.

Pymathics Modules

  1. Pymathics modules now can run initialization code when are loaded.
  2. The builtins list is not hard-linked to the library anymore. This simplifies the loading and reloading of pymathics modules.
  3. Decoupling of BoxConstructors from the library. Now are defined at the level of the definition objects. This is useful for customizing the Graphics output if it is available.

Miscellanea

  1. A pass was made to improve Microsoft Windows compatibility and testing Windows under MSYS.
  2. Include numpy version in version string. Show in CLI
  3. Small CLI tweaks --colors=None added to match mathicsscript.
  4. In the BaseExpression and derived classes, the method boxes_to_xml now are called boxes_to_mathml.
  5. In the format method of the class Evaluation, the builtin ToString is called instead of boxes_to_text
  6. In order to control the final form of boxes from the user space in specific symbols and contexts.
  7. GraphicsBox now have two methods: to_svg and to_mathml. The first produces SVG plain text while the second produces <mglyph ...> tags with base64 encoded SVGs.

What's to expect in a Future Release

  1. Improved Equal See PR #1209
  2. Better Unicode support, especially for Mathics operators
  3. Improved D[] and Derivative[] See PR #1220.
  4. Improved performance
  5. Collect[] See Issue #1194.
  6. Series[] See Issue #1193.

2.0.0

To accommodate growth and increased use of pieces of Mathics inside other packages, parts of Mathics have been split off and moved to separate packages. In particular:

  1. The Django front-end is now a PyPI installable package called Mathics-Django.
  2. Scanner routines, character translation tables to/from Unicode, and character properties are now mathics-scanner.
  3. Specific builtins involving heavy, non-standard routines were moved to pymathics modules pymathics-graph, pymathics-natlang.

Incompatible changes:

  1. -e --execute is better suited for embedded use. It shows just evaluation output as text.
  2. Docker scripts dmathics, dmathicsscript and dmathicsserver have been removed. They are part of the docker-mathics a separate PyPI package.

The bump in the major version number reflects major changes in this release. Another major release is planned soon, with more major changes.

See below for future work planned.

New builtins

  1. AnglePath, AnglePathFold, AngleVector
  2. BoxData, TextData, InterpretationBox, StyleBox, TagBox, TemplateBox, ButtonBox, InterpretationBox
  3. ContinuedFraction
  4. ConvertCommonDumpRemoveLinearSyntax and System`ConvertersDump context variables
  5. FirstCase, Lookup, Key, Lookup and Failure
  6. Haversine, InverseHaversine
  7. Insert and Delete
  8. LerchPhi
  9. MathicsVersion (this is not in WL)
  10. NumberQ
  11. PossibleZeroQ PR #1100
  12. Run
  13. Show
  14. SympyObject
  15. TimeRemaining and TimeConstrained
  16. \[RadicalBox]
  17. Improving support for options in the Plot module: Axes, Filling, ImageSize, Joined

New constants

Mathematical Constants is now its own module/section. Constants have been filled out. These constants have been added:

  1. Catalan
  2. Degree
  3. Glaisher
  4. GoldenRatio
  5. Khinchin

Many of these and the existing constants are computable via mpmath, NumPy, or Sympy.

Settings through WL variables

Certain aspects of the kernel configuration are now controlled by variables, defined in /autoload/settings.m.

  1. $GetTrace (False by default). Defines if when a WL module is load through Get, definitions will be traced (for debug).
  2. $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)

Enhancements

  1. Add Method option "mpmath" to compute Eigenvalues using mpmath (#1115).
  2. Improve support for OptionValue and OptionsPattern (#1113)

Bug fixes

Numerous bugs were fixed while working on Combinatorica V0.9 and CellsToTeX.

  1. Sum involving numeric integer bounds involving Mathics functions fixed.
  2. Equal UnEqual testing on Strings (#1128).

Document updates

  1. Start a readthedocs Developer Guide

Enhancements and bug fixes:

  1. Fix evaluation timeouts
  2. Sum's lower and upper bounds can now be Mathics expressions

Miscellanea

  1. Enlarge the set of gries_schneider tests
  2. Improve the way builtins modules are loaded at initialization time (#1138).

Future

  1. We are in the process of splitting out graphics renderers, notably for matplotlib. See pymathics-matplotlib.
  2. Work is also being done on asymptote. See PR #1145.
  3. Makeboxes is being decoupled from a renderer. See PR #1140.
  4. Inline SVG will be supported (right now SVG is binary).
  5. Better support integrating Unicode in output (such as for Rule arrows) is in the works. These properties will be in the scanner package.
  6. A method option ("mpmath", "sympy", or "numpy") will be added to the N[]. See PR #1144.

1.1.1

This 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 <https://github.com/Mathics3/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 into the Django interface, although it works well in mathicsscript.

Package updates

  1. SymPy 1.7.1

Mathics Packages added:

  1. DiscreteMath`CombinatoricaV0.9 (preferred) and DiscreteMath`CombinatoricaV0.6.

Both of these correspond to Steven Skiena's older book: Implementing Discrete Mathematics: Combinatorics and Graph Theory.

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. Any help to make this happen sooner is appreciated.

New builtins

  1. StirlingS1, StirlingS2 (not all WL variations handled)
  2. MapAt (not all WL variations handled)
  3. PythonForm, SympyForm: not in WL. Expect more and better translation later as Mathics3 modules.
  4. Throw and Catch
  5. With
  6. FileNameTake

Enhancements and bug fixes

  1. Workaround for Compile so it accepts functions ##1026
  2. Add Trace option to Get. Get["fn", Trace->True] will show lines as they are read
  3. Convert to/from Boolean types properly in from_python, to_python. Previously they were 0 and 1
  4. Extend DeleteCases to accept a levelspec parameter
  5. Set Evaluation#exc_result to capture Aborted, Timeout, Overflow1, etc.
  6. ImageData changed to get bits {0,1}, not booleans as previously
  7. Add tokenizer symbols for <-> and -> and the Unicode versions of those
  8. Small corrections to Needs, e.g check if already loaded, correct a typo, etc.
  9. System`$InputFileName is now set inside Needs and Get
  10. Install shell scripts dmathicserver, dmathicsscript, and dmathics to simplify running docker
  11. Adjust $InputFileName inside Get and Needs
  12. Support for All as a Part specification
  13. Fix BeginPackage
  14. Improving support for OptionValue. Now it supports list of Options
  15. Adding support in from_python() to convert dictionaries in list of rules
  16. Fix OptionsPattern associated symbols

1.1.0

So we can get onto PyPI, the PyPI install name has changed from Mathics to Mathics3.

Enhancements and bug fixes

  1. Add Symbolic Comparisons. PR #1000
  2. Support for externally PyPI-packagable builtin modules - PyMathics
  3. SetDirectory fixes. PR #994
  4. Catch `PatternError Exceptions
  5. Fix formatting of .. and ... (RepeatAll)
  6. Tokenization of \. without a following space (ReplaceAll). Issue #992.
  7. Support for assignments to named `Pattern`
  8. Improve support for `Names. PR #1003
  9. Add a MathicsSession class to simplify running Mathics from Python. PR #1001
  10. Improve support for `Protect` and `Unprotect` list of symbols and regular expressions. PR #1003

1.1.0 rc1

Package updates

All major packages that Mathics needs have been updated for more recent releases. Specifically these include:

  1. Python: Python 3.6-3.9 are now supported
  2. Cython >= 0.15.1
  3. Django 3.1.x
  4. mpmath >= 1.1.0
  5. SymPy 1.6.2

New features (50+ builtins)

  1. Association, AssociationQ, FirstPostion, LeafCount
  2. Association, AssociationQ, Keys, Values #705
  3. BarChart[], PieChart, Histogram, DensityPlot #499
  4. BooleanQ, DigitQ and LetterQ
  5. CharacterEncoding option for Import[]
  6. Coefficient[], Coefficient[x * y, z, 0], Coefficient*[]
  7. DiscreteLimit #922
  8. Environment
  9. File read operations from URLs
  10. FirstPostions, Integers, PrePendTo[]
  11. GetEnvironment # 938
  12. Integers, PrependTo and ContainsOnly
  13. Import support for WL packages
  14. IterationLimit
  15. LoadModule
  16. MantissaExponent[], FractionalPart[], CubeRoot[]
  17. PolynomialQ[], MinimalPolynomial[]
  18. Quit[], Exit[] #523, #814,
  19. RealDigits #891, #691, Interrupt, Unique
  20. RemoveDiacritics[], Transliterate[] #617
  21. Root #806
  22. Sign[], Exponent, Divisors, QuotientRemainder, FactorTermsList
  23. Speedups by avoiding inner classes, #616
  24. StringRiffle[], StringFreeQ[], StringContainsQ[], StringInsert
  25. SubsetQ and Delete[] #688, #784,
  26. Subsets #685
  27. SystemTimeZone and correct TimeZone #924
  28. System\`Byteordering and System\`Environment #859
  29. $UseSansSerif #908
  30. randchoice option for NoNumPyRandomEnv #820
  31. Support for MATHICS_MAX_RECURSION_DEPTH
  32. Option --full-form (-F) on mathics to parsed FullForm of input expressions

Enhancements and bug fixes

  1. speed up leading-blank patterns #625, #933
  2. support for iteration over Sequence objects in Table, Sum, and Product
  3. fixes for option handling
  4. fixes for Manipulate[x,{x,{a,b}}]
  5. fixes rule -> rule case for Nearest
  6. fixes and enhancements to WordCloud
  7. added StringTrim[]
  8. fixes URLFetch options
  9. fixes XMLGetString and parse error
  10. fixes LanguageIdentify
  11. fixes 2 <= base <= 36 in number parsing
  12. improved error messages
  13. fixes Check, Interrupt, and Unique #696
  14. fixes Eigenvalues, Eigenvectors #804
  15. fixes Solve #806
  16. proper sympolic expantion for Re and Im
  17. fixes a bug in the evaluation of SympyPrime #827
  18. clean up ColorData
  19. fixes Unicode characters in TeX document
  20. update Django gallery examples
  21. fixes Sum and Product #869, #873
  22. warn when using options not supported by a Builtin #898, #645

Mathematica tracking changes

  1. renamed FetchURL to URLFetch (according to the WL standard)
  2. renamed SymbolLookup to Lookup

Performance improvements

  1. Speed up pattern matching for large lists
  2. Quadradtic speed improvement in pattern matching. #619 and see the graph comparisons there
  3. In-memory sessions #623

Other changes

  1. bump RecursionLimit
  2. blacken (format) a number of Python files and remove blanks at the end of lines
  3. Adding several CI tests
  4. Remove various deprecation warnings
  5. Change shbang from python to python3
  6. Update docs

Backward incompatibilities

  1. Support for Python 3.5 and earlier, and in particular Python 2.7, was dropped.
  2. The graphs module (for Graphs) has been pulled until Mathics supports pymathics and graphics using networkx better. It will reappear as a pymathics module.
  3. The 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 lazily on demand.

1.0 (October 2016)

New features

  1. LinearModelFit #592
  2. EasterSunday #590
  3. DSolve for PDE #589
  4. LogisticSigmoid #588
  5. CentralMoment, Skewness, Kurtosis #583
  6. New web interface #574
  7. Image support and image processing functions #571, #541, #497, #493, #482
  8. StringCases, Shortest, Longest string match/replace #570
  9. Quantime and Quartiles #567
  10. Pick #563
  11. ByteCount #560
  12. Nearest #559
  13. Count #558
  14. RegularPolygon #556
  15. Improved date parsing #555
  16. Permutations #552
  17. LLVM compilation of simple expressions #548
  18. NumberForm #534, #530, #455
  19. Basic scripting with mathicsscript
  20. Arcs for Disk and Circle #498, #526
  21. Download from URL #525
  22. $CommandLine #524
  23. Background option for Graphics #522
  24. Style #521, #471, #468
  25. Abbreviated string patterns #518
  26. Return #515
  27. Better messages #514
  28. Undo and redo functionality in web interface #511
  29. Covariance and Correlation #506
  30. ToLowerCase, ToUpperCase, LowerCaseQ, UpperCaseQ #505
  31. StringRepeat #504
  32. TextRecognise #500
  33. Axis numbers to integers when possible #495
  34. PointSize #494
  35. FilledCurve, BezierCurve, BezierFunction #485
  36. PadLeft, PadRight #484
  37. Manipulate #483, #379, #366
  38. Replace #478
  39. String operator versions #476
  40. Improvements to Piecewise #475
  41. Derivation typo #474
  42. Natural language processing functions #472
  43. Arrow, Arrowheads #470
  44. Optional modules with requires attribute #465
  45. MachinePrecision #463
  46. Catenate #454
  47. Quotient #456
  48. Disable spellcheck on query fields #453
  49. MapThread #452
  50. Scan and Return #451
  51. On and Off #450
  52. $MachineEpsilon and $MachinePrecision #449
  53. ExpandAll #447
  54. Position #445
  55. StringPosition #444
  56. AppendTo, DeleteCases, TrueQ, ValueQ #443
  57. Indeterminate #439
  58. More integral functions #437
  59. ExpIntegralEi and ExpIntegralE #435
  60. Variance and StandardDeviation #424
  61. Legacy Random function #422
  62. Improved gamma functions #419
  63. New recursive descent parser #416
  64. TakeSmallest and related #412
  65. Boole #411
  66. Median, RankedMin, RankedMax #410
  67. HammingDistance #409
  68. JaccardDissimilarity and others #407
  69. EuclideanDistance and related #405
  70. Magic methods for Expression #404
  71. Reverse #403
  72. RotateLeft and RotateRight #402
  73. ColorDistance, ColorConvert #400
  74. Predefine and document $Aborted and $Failed #399
  75. IntegerString, FromDigits, and more #397
  76. EditDistance and DamerauLevenshteinDistance #394
  77. QRDecomposition #393
  78. RandomChoice and RandomSample #488
  79. Hash #387
  80. Graphics boxes for colors #386
  81. Except #353
  82. Document many things #341
  83. StringExpression #339
  84. Legacy file functions #338

Bug fixes

  1. Nested Module #591, #584
  2. Python2 import bug #565
  3. XML import #554
  4. \[Minus] parsing bug #550
  5. Cases evaluation bug #531
  6. Take edge cases #519
  7. PlotSize bug #512
  8. Firefox nodeValue warning #496
  9. Django database permissions #489
  10. FromDigits missing message #479
  11. Numerification upon result only #477
  12. Saving and loading notebooks #473
  13. Rationalise #460
  14. Optional and Pattern precedence values #459
  15. Fix Sum[i / Log[i], {i, 1, Infinity}] #442
  16. Add \[Pi], \[Degree], \[Infinity] and \[I] to parser #441
  17. Fix loss of precision bugs #440
  18. Many minor bugs from fuzzing #436
  19. Positive/Negative do not numerify arguments #430 fixes #380
  20. Chains of approximate identities #429
  21. Logical expressions behave inconsistently/incorrectly #420 fixes #260
  22. Fix Take[_Symbol, ___] #396
  23. Avoid slots in rule handling #375 fixes #373
  24. Gather, GatherBy, Tally, Union, Intersect, IntersectingQ, DisjointQ, SortBy and BinarySearch #373
  25. Symbol string comparison bug #371
  26. Fix Begin/BeginPackage leaking user-visible symbols #352
  27. Fix TableForm and Dimensions with an empty list #343
  28. Trailing slash bug #337
  29. Global system bug #336
  30. Null comparison bug #371
  31. CompoundExpression and Out[n] assignment bug #335 fixes #331
  32. Load unevaluated cells #332

Performance improvements

  1. Large expression formatting with $OutputSizeLimit #581
  2. Faster terminal output #579
  3. Faster walk_paths #578
  4. Faster flatten for Sequence symbols #577
  5. Compilation for plotting #576
  6. Sequence optimisations #568
  7. Improvements to GatherBy #566
  8. Optimised Expression creation #536
  9. Expression caching #535
  10. Definitions caching #507
  11. Optimised Position, Cases, DeleteCases #503
  12. Optimised StringSplit #502
  13. Optimised $RecursionLimit #501
  14. Optimised insert_rule #464
  15. Optimised IntegerLength #462
  16. Optimised BaseExpression creation #458
  17. No reevaluation of evaluated values #391
  18. Shortcut rule lookup #389
  19. 15% performance boost by preventing some rule lookups #384
  20. 25% performance boost using same over __eq__
  21. n log n algorithm for Complement and DeleteDuplicates #373
  22. Avoid computing x^y in PowerMod[x, y, m] #342

0.9 (March 2016)

New features

  1. Improve syntax error messages #329
  2. SVD, LeastSquares, PseudoInverse #258, #321
  3. Python 2.7, 3.2-3.5 via six support #317
  4. Improvements to Riffle #313
  5. Tweaks to PolarPlot #305
  6. StringTake #285
  7. Norm #268 #270
  8. Total, Accumulate, FoldList, Fold #264, #252
  9. Flatten #253 #269
  10. Which with symbolic arguments #250
  11. Min/Max with symbolic arguments # 249

Dependency updates

  1. Upgrade to ply 3.8 (issue #246)
  2. Drop interrupting cow #317
  3. Add six (already required by Django) #317

Bug fixes

  1. Span issues with negative indices #196 fixed by #263 #325
  2. SVG export bug fixed by #324
  3. Django runserver threading issue #158 fixed by #323
  4. asymptote bug building docs #297 fixed by #317
  5. Simplify issue #254 fixed by #322
  6. ParametricPlot bug fixed by #320
  7. DensityPlot SVG regression in the web interface
  8. Main function for server.py #288, #289 fixed by #298
  9. ply table regeneration #294 fixed by #295
  10. Print bar issue #290 fixed by #293
  11. Quit[] index error #292 partially fixed by #307
  12. Quit definition fixed by #286
  13. Conjugate issue #272 fixed by #281

0.8 (late May 2015)

New features

  1. Improvements to 3D Plotting, see #238
  2. Enable MathJax menu, see #236
  3. Improvements to documentation

Dependency updates

  1. Upgrade to SymPy 0.7.6
  2. Upgrade to ply3.6 (new parsetab format, see #246)
  3. Upgrade to mpmath 0.19

Bug fixes

  1. IntegerDigits[0]

0.7 (Dec 2014)

New features

  1. Readline tab completion
  2. Automatic database initialisation
  3. Support for wildcards in Clear and ClearAll
  4. Add Conjugate
  5. More tests and documentation for Sequence
  6. Context support

Bugs fixed

  1. Fix unevaluated index handling (issue #217)
  2. Fix Solve treating one solution equal to 1 as a tautology (issue #208)
  3. Fix temporary symbols appearing in the result when taking derivatives with respect to t (issue #184)
  4. Typo in save worksheet help text (issue #199)
  5. Fix mathicsserver wildcard address binding
  6. Fix Dot acting on matrices in MatrixForm (issue #145)
  7. Fix Sum behaviour when using range to generate index values (issue #149)
  8. Fix behaviour of plot with unevaluated arguments (issue #150)
  9. Fix zero-width space between factors in MathJax output (issue #45)
  10. Fix {{2*a, 0},{0,0}}//MatrixForm crashing in the web interface (issue #182)

0.6 (late October 2013)

New features

  1. ElementData using data from Wikipedia
  2. Add Switch
  3. Add DSolve and RSolve
  4. More Timing functions AbsoluteTiming, TimeUsed, SessionTime, Pause
  5. Date functions DateList, DateString, DateDifference, etc.
  6. Parser rewritten using lex/yacc (PLY)
  7. Unicode character support
  8. PolarPlot
  9. IPython style (coloured) input
  10. VectorAnalysis Package
  11. More special functions (Bessel functions and orthogonal polynomials)
  12. More NumberTheory functions
  13. Import, Export, Get, Needs and other IO related functions
  14. PyPy compatibility
  15. Add benchmarks (mathics/benchmark.py)
  16. BaseForm
  17. DeleteDuplicates
  18. Depth, Operate Through and other Structure related functions
  19. Changes to MatrixForm and TableForm printing
  20. Use interrupting COW to limit evaluation time
  21. Character Code functions

Bugs fixed

  1. Fix divide-by-zero with zero-length plot range
  2. Fix mathicsserver exception on startup with Django 1.6 (issues #194, #205, #209)

0.5 (August 2012)

  1. Compatibility with Sage 5, SymPy 0.7, Cython 0.15, Django 1.2
  2. 3D graphics and plots using WebGL in the browser and Asymptote in TeX output
  3. Plot: adaptive sampling
  4. MathJax 2.0 and line breaking
  5. New symbols: Graphics3D etc., Plot3D, ListPlot, ListLinePlot, ParametricPlot, Prime, Names, $Version
  6. Fixed issues: 1, 4, 6, 8-21, 23-27
  7. Lots of minor fixes and improvements
  8. Number of built-in symbols: 386

0.4

Compatibility with Sage 4.0 and other latest libraries


0.3 (beta only)

Resolved several issues


0.1 (alpha only)

Initial version