1CHANGES
2=======
3
4
52.2.0
6-----
7
8Package update
9++++++++++++++
10
11- SymPy 1.8
12
13New variables and builtins
14++++++++++++++++++++++++++
15
16* ``Arg``
17* ``CoefficientArrays`` and ``Collect`` (#1174, #1194)
18* ``Dispatch``
19* ``FullSimplify``
20* ``LetterNumber`` #1298. The ``alphabet`` parameter supports only a minimal number of languages.
21* ``MemoryAvailable``
22* ``MemoryInUse``
23* ``Nand`` and ``Nor`` logical functions.
24* ``Series``,  ``O`` and ``SeriesData``
25* ``StringReverse``
26* ``$SystemMemory``
27* Add all of the named colors, e.g. ``Brown`` or ``LighterMagenta``.
28
29
30
31Enhancements
32++++++++++++
33
34* a function `evaluate_predicate` allows for a basic predicate evaluation using `$Assumptions`.
35* ``Attributes`` accepts a string parameter.
36* ``Cases`` accepts Heads option. Issue #1302.
37* ``ColorNegate`` for colors is supported.
38* ``D`` and ``Derivative`` improvements.
39* ``Expand`` and ``ExpandAll`` now support a second parameter ``patt`` Issue #1301.
40* ``Expand`` and ``ExpandAll`` works with hyperbolic functions (`Sinh`, `Cosh`, `Tanh`, `Coth`).
41* ``FileNames`` returns a sorted list (#1250).
42* ``FindRoot`` now accepts several optional parameters like ``Method`` and ``MaxIterations``. See Issue #1235.
43* ``FixedPoint`` now supports the ``SameTest`` option.
44* ``mathics`` CLI now uses its own Mathics ``settings.m`` file
45* ``Prepend`` works with ``DownValues`` Issue #1251
46* ``Prime`` and ``PrimePi`` now accept a list parameter and have the ``NumericFunction`` attribute.
47* ``Read`` with ``Hold[Expression]`` now supported. (#1242)
48* ``ReplaceRepeated`` and ``FixedPoint`` now supports the ``MaxIteration`` option. See Issue #1260.
49* ``Simplify`` performs a more sophisticated set of simplifications.
50* ``Simplify`` accepts a second parameter that temporarily overwrites ``$Assumptions``.
51* ``StringTake`` now accepts form containing a list of strings and specification. See Issue #1297.
52* ``Table`` [*expr*, *n*] is supported.
53* ``ToExpression`` handles multi-line string input.
54* ``ToString`` accepts an optional *form* parameter.
55* ``ToExpression`` handles multi-line string input.
56* ``$VersionNumber`` now set to 10.0 (was 6.0).
57* The implementation of Streams was redone.
58* Function ``mathics.core.definitions.autoload_files`` was added and
59  exposed to allow front-ends to provide their own custom Mathics.
60  settings.
61* String output in the ``mathics`` terminal has surrounding quotes to make it more visually distinct from unexpanded and symbol output.
62  To disable this behavior use ``--strict-wl-output``.
63
64
65Bug fixes
66+++++++++
67
68* ``SetTagDelayed`` now does not evaluate the RHS before assignment.
69* ``$InstallationDirectory`` starts out ``Unprotected``.
70* ``FindRoot`` now handles equations.
71* Malformed Patterns are detected and an error message is given for them.
72* Functions gone over to ensure the ``Listable`` and ``NumericFunction`` properties are correct.
73
74
75Incompatible changes
76--------------------
77
78* ``System`$UseSansSerif`` moved from core and is sent front-ends using ``Settings`$UseSansSerif``.
79
80
81Internal changes
82----------------
83
84* doctest  accepts the option ``-d`` to show how long it takes to parse, evaluate and compare each individual test.
85  ``-x`` option (akin to ``pytests -x`` is a short-hand for stop on first error
86* Some builtin functions have been grouped together in a module
87  underneath the top-level builtin directory.  As a result, in the
88  documents you will list some builtins listed under an overarching
89  categery like ``Specific Functions`` or ``Graphics, Drawing, and
90  Images``. More work is expected in the future to improve document sectioning.
91
92
932.1.0
94-----
95
96New builtins
97++++++++++++
98
99* ``ArcTanh``
100* ``ByteArray``
101* ``CreateFile``
102* ``CreateTemporary``
103* ``FileNames``
104* ``NIntegrate``
105* ``PartitionsP``
106* ``$Notebooks``
107* ``SparseArray``
108
109Enhancements
110++++++++++++
111
112* The Mathics version is checked for builtin modules at load time. A message is given when a builtin doesn't load.
113* Automatic detection for the best strategy to numeric evaluation of constants.
114* ``FileNameJoin`` now implements ``OperatingSystem`` option
115* Mathics functions are accepted by ``Compile[]``. The return value or
116  type will be ``Compile[] and CompiledFunction[]``.  Every Mathics
117  Expression can have a compiled form, which may be implemented as a
118  Python function.
119* ``Equal[]`` now compares complex against other numbers properly.
120* Improvements in handling products with infinite factors: ``0 Infinity``-> ``Indeterminate``, and ``expr Infinity``-> ``DirectedInfinite[expr]``
121* ``$Path`` is now ``Unprotected`` by default
122* ``Read[]`` handles expressions better.
123* ``StringSplit[]`` now accepts a list in the first argument.
124* ``SetDelayed[]`` now accepts several conditions imposed both at LHS as well as RHS.
125* Axes for 2D Plots are now rendered for SVGs
126* ``InsertBox`` accepts an opaque parameter
127
128
129Bug fixes
130+++++++++
131
132* ``TeXForm[]`` for integrals are now properly formatted.
133
134
135Pymathics Modules
136+++++++++++++++++
137
138* Pymathics modules now can run initialization code when are loaded.
139* The ``builtins`` list is not hard-linked to the library anymore. This simplifies
140  the loading and reloading of pymathics modules.
141* Decoupling of BoxConstructors from the library. Now are defined at the
142  level of the definition objects. This is useful for customizing the
143  Graphics output if it is available.
144
145
146Miscellanea
147+++++++++++
148
149* A pass was made to improve Microsoft Windows compatibility and testing Windows under MSYS.
150* Include numpy version in version string. Show in CLI
151* Small CLI tweaks ``--colors=None`` added to match mathicsscript.
152* In the ``BaseExpression`` and derived classes, the method ``boxes_to_xml`` now are called ``boxes_to_mathml``.
153* In the ``format`` method of the class ``Evaluation``,  the builtin ``ToString`` is called instead of  ``boxes_to_text``
154* In order to control the final form of boxes from the user space in specific symbols and contexts.
155* ``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.
156
157
158What's to expect in a Future Release
159++++++++++++++++++++++++++++++++++++
160
161* Improved ``Equal`` See `PR #1209 <https://github.com/mathics/Mathics/pull/1209/>`_
162* Better Unicode support, especially for Mathics operators
163* Improved ``D[]`` and ``Derivative[]`` See `PR #1220 <https://github.com/mathics/Mathics/pull/1209/>`_.
164* Improved performance
165* ``Collect[]`` See `Issue #1194 <https://github.com/mathics/Mathics/issues/1194>`_.
166* ``Series[]`` See `Issue #1193 <https://github.com/mathics/Mathics/issues/1194>`_.
167
168
1692.0.0
170-----
171
172To 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:
173
174* The Django front-end is now a PyPI installable package called `Mathics-Django <https://pypi.org/project/Mathics-Django/>`_.
175* Scanner routines, character translation tables to/from Unicode, and character properties are now `mathics-scanner https://github.com/Mathics3/mathics-scanner`_.
176* Specific builtins involving heavy, non-standard routines were moved to pymathics modules `pymathics-graph https://github.com/Mathics3/pymathics-graph`_, `pymathics-natlang https://github.com/Mathics3/pymathics-natlang`_.
177
178Incompatible changes:
179+++++++++++++++++++++
180
181* ``-e`` ``--execute`` is better suited for embedded use. It shows just evaluation output as text.
182* Docker scripts ``dmathics``, ``dmathicsscript`` and ``dmathicsserver`` have been removed. They are part of the ``docker-mathics`` a separate PyPI package.
183
184The bump in the major version number reflects major changes in this release. Another major release is planned soon, with more major changes.
185
186See below for future work planned.
187
188New builtins
189++++++++++++
190
191- ``AnglePath``,  ``AnglePathFold``, ``AngleVector``
192- ``BoxData``, ``TextData``, ``InterpretationBox``, ``StyleBox``, ``TagBox``, ``TemplateBox``, ``ButtonBox``, ``InterpretationBox``
193- ``ContinuedFraction``
194- ``ConvertCommonDumpRemoveLinearSyntax`` and ``System`ConvertersDump`` context variables
195- ``FirstCase``, ``Lookup``, ``Key``, ``Lookup`` and ``Failure``
196- ``Haversine``, ``InverseHaversine``
197- ``Insert`` and ``Delete``
198- ``LerchPhi``
199- ``MathicsVersion`` (this is not in WL)
200- ``NumberQ``
201- ``PossibleZeroQ`` PR #1100
202- ``Run``
203- ``Show``
204- ``SympyObject``
205- ``TimeRemaining`` and ``TimeConstrained``
206- ``\[RadicalBox]``
207-  Improving support for options in the Plot module: ``Axes``, ``Filling``, ``ImageSize``, ``Joined``
208
209New constants
210+++++++++++++
211
212Mathematical Constants is now its own module/section. Constants have been filled out. These constants have been added:
213
214- ``Catalan``
215- ``Degree``
216- ``Glaisher``
217- ``GoldenRatio``
218- ``Khinchin``
219
220Many of these and the existing constants are computable via mpmath, NumPy, or Sympy.
221
222Settings through WL variables
223+++++++++++++++++++++++++++++
224
225Certain aspects of the kernel configuration are now controlled by variables, defined in ``/autoad/settings.m``.
226
227- ``$GetTrace`` (``False`` by default).  Defines if when a WL module is load through ``Get``, definitions will be traced (for debug).
228- ``$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)
229
230Enhancements
231++++++++++++
232
233- Add ``Method`` option "mpmath" to compute ``Eigenvalues`` using mpmath (#1115).
234- Improve support for ``OptionValue`` and ``OptionsPattern`` (#1113)
235
236Bug fixes
237+++++++++
238
239Numerous bugs were fixed while working on Combinatorica V0.9 and CellsToTeX.
240
241- ``Sum`` involving numeric integer bounds involving Mathics functions fixed.
242- ``Equal`` ``UnEqual`` testing on Strings (#1128).
243
244Document updates
245++++++++++++++++
246
247- Start a readthedocs `Developer Guide <https://mathics-development-guide.reandthedocs.io/en/latest/>`_
248
249Enhancements and bug fixes:
250+++++++++++++++++++++++++++
251
252- Fix evaluation timeouts
253- ``Sum``'s lower and upper bounds can now be Mathics expressions
254
255Miscellanea
256+++++++++++
257
258- Enlarge the set of ``gries_schneider`` tests
259- Improve the way builtins modules are loaded at initialization time (#1138).
260
261Future
262++++++
263
264* We are in the process of splitting out graphics renderers, notably for matplotlib. See `pymathics-matplotlib <https://github.com/Mathics3/pymathics-matplotlib>`_.
265* Work is also being done on asymptote. See `PR #1145 <https://github.com/mathics/Mathics/pull/1145>`_.
266* Makeboxes is being decoupled from a renderer. See `PR #1140 <https://github.com/mathics/Mathics/pull/1140>`_.
267* Inline SVG will be supported (right now SVG is binary).
268* Better support integrating Unicode in output (such as for Rule arrows) is in the works. These properties will be in the scanner package.
269* A method option ("mpmath", "sympy", or "numpy") will be added to the ``N[]``. See `PR #1144 <https://github.com/mathics/Mathics/pull/1144>`_.
270
271
2721.1.1
273-----
274
275This may be the last update before some major refactoring and interface changing occurs.
276
277In 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.
278
279Some changes were made to support `Pymathics Graph <https://github.com/Mathics3/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``.
280
281Package updates
282+++++++++++++++
283
284- SymPy 1.7.1
285
286Mathics Packages added:
287
288- ``DiscreteMath`CombinatoricaV0.9`` (preferred) and
289  ``DiscreteMath`CombinatoricaV0.6``.
290
291Both of these correspond to Steven Skiena's *older* book: *Implementing Discrete Mathematics: Combinatorics and Graph Theory*.
292
293If you have a package that you would like included in the distribution, and it works with Mathics, please contact us.
294
295Rubi may appear in a future release, possibly in a year or so. Any help to make this happen sooner is appreciated.
296
297New builtins
298++++++++++++
299
300- ``StirlingS1``, ``StirlingS2`` (not all WL variations handled)
301- ``MapAt`` (not all WL variations handled)
302- ``PythonForm``, ``SympyForm``: not in WL.
303  Will show a crude translation to SymPy or Python.
304  Expect more and better translation later
305- ``Throw`` and ``Catch``
306- ``With``
307- ``FileNameTake``
308
309Enhancements and bug fixes
310++++++++++++++++++++++++++
311
312- Workaround for ``Compile`` so it accepts functions ##1026
313- Add ``Trace`` option to ``Get``. ``Get["fn", Trace->True]`` will show lines as they are read
314- Convert to/from Boolean types properly in ``from_python``, ``to_python``. Previously they were 0 and 1
315- Extend ``DeleteCases`` to accept a levelspec parameter
316- Set ``Evaluation#exc_result`` to capture ``Aborted``, ``Timeout``, ``Overflow1``, etc.
317- ``ImageData`` changed to get bits {0,1}, not booleans as previously
318- Add tokenizer symbols for ``<->`` and ``->`` and the Unicode versions of those
319- Small corrections to ``Needs``, e.g check if already loaded, correct a typo, etc.
320- ``System`$InputFileName`` is now set inside ``Needs`` and ``Get``
321- Install shell scripts ``dmathicserver``, ``dmathicsscript``, and ``dmathics`` to simplify running docker
322- Adjust ``$InputFileName`` inside ``Get`` and ``Needs``
323- Support for ``All`` as a ``Part`` specification
324- Fix ``BeginPackage``
325- Improving support for ``OptionValue``. Now it supports list of Options
326- Adding support in ``from_python()`` to convert dictionaries in list of rules
327- Fix ``OptionsPattern`` associated symbols
328
329
3301.1.0
331-----
332
333So we can get onto PyPI, the PyPI install name has changed from Mathics to Mathics3.
334
335Enhancements and bug fixes
336++++++++++++++++++++++++++
337
338- Add Symbolic Comparisons. PR #1000
339- Support for externally PyPI-packagable builtin modules - PyMathics
340- ``SetDirectory`` fixes. PR #994
341- Catch ```PatternError`` Exceptions
342- Fix formatting of ``..`` and ``...`` (``RepeatAll``)
343- Tokenization of ``\.`` without a following space (``ReplaceAll``). Issue #992
344- Support for assignments to named ```Pattern```
345- Improve support for ```Names``. PR #1003
346- Add a ``MathicsSession`` class to simplify running Mathics from Python. PR #1001
347- Improve support for ```Protect``` and ```Unprotect``` list of symbols and regular expressions. PR #1003
348
349
3501.1.0 rc1
351---------
352
353Package updates
354+++++++++++++++
355
356All major packages that Mathics needs have been updated for more recent
357releases. Specifically these include:
358
359- Python: Python 3.6-3.9 are now supported
360- Cython >= 0.15.1
361- Django 3.1.x
362- mpmath >= 1.1.0
363- SymPy 1.6.2
364
365New features (50+ builtins)
366+++++++++++++++++++++++++++
367
368- ``Association``, ``AssociationQ``, ``FirstPostion``, ``LeafCount``
369- ``Association``, ``AssociationQ``, ``Keys``, ``Values`` #705
370- ``BarChart[]``, ``PieChart``, ``Histogram``, ``DensityPlot`` #499
371- ``BooleanQ``, ``DigitQ`` and ``LetterQ``
372- ``CharacterEncoding`` option for ``Import[]``
373- ``Coefficient[]``, ``Coefficient[x * y, z, 0]``, ``Coefficient*[]``
374- ``DiscreteLimit`` #922
375- ``Environment``
376- File read operations from URLs
377- ``FirstPostions``, ``Integers``, ``PrePendTo[]``
378- ``GetEnvironment`` # 938
379- ``Integers``, ``PrependTo`` and ``ContainsOnly``
380- ``Import`` support for WL packages
381- ``IterationLimit``
382- ``LoadModule``
383- ``MantissaExponent[]``, ``FractionalPart[]``, ``CubeRoot[]``
384- ``PolynomialQ[]``, ``MinimalPolynomial[]``
385- ``Quit[]``, ``Exit[]`` #523, #814,
386- ``RealDigits`` #891, #691, ``Interrupt``, ``Unique``
387- ``RemoveDiacritics[]``, ``Transliterate[]`` #617
388- ``Root`` #806
389- ``Sign[]``, ``Exponent``, ``Divisors``, ``QuotientRemainder``, ``FactorTermsList``
390- Speedups by avoiding inner classes, #616
391- ``StringRiffle[]``, ``StringFreeQ[]``, ``StringContainsQ[]``, ``StringInsert``
392- ``SubsetQ`` and ``Delete[]`` #688, #784,
393- ``Subsets`` #685
394- ``SystemTimeZone`` and correct ``TimeZone`` #924
395- ``System\`Byteordering`` and ``System\`Environemnt`` #859
396- ``$UseSansSerif`` #908
397- ``randchoice`` option for ``NoNumPyRandomEnv`` #820
398- Support for ``MATHICS_MAX_RECURSION_DEPTH``
399- Option ``--full-form`` (``-F``) on ``mathics`` to parsed ``FullForm`` of input expressions
400
401Enhancements and bug fixes
402++++++++++++++++++++++++++
403
404- speed up leading-blank patterns #625, #933
405- support for iteration over Sequence objects in ``Table``, ``Sum``, and ``Product``
406- fixes for option handling
407- fixes for ``Manipulate[x,{x,{a,b}}]``
408- fixes rule -> rule case for ``Nearest``
409- fixes and enhancements to ``WordCloud``
410- added ``StringTrim[]``
411- fixes ``URLFetch`` options
412- fixes ``XMLGetString`` and parse error
413- fixes ``LanguageIdentify``
414- fixes 2 <= base <= 36 in number parsing
415- improved error messages
416- fixes ``Check``, ``Interrupt``, and ``Unique`` #696
417- fixes ``Eigenvalues``, ``Eigenvectors`` #804
418- fixes ``Solve`` #806
419- proper sympolic expantion for ``Re`` and ``Im``
420- fixes a bug in the evaluation of ``SympyPrime`` #827
421- clean up ``ColorData``
422- fixes Unicode characters in TeX document
423- update Django gallery examples
424- fixes ``Sum`` and ``Product`` #869, #873
425- warn when using options not supported by a Builtin #898, #645
426
427Mathematica tracking changes
428++++++++++++++++++++++++++++
429
430- renamed ``FetchURL`` to ``URLFetch`` (according to the WL standard)
431- renamed ``SymbolLookup`` to ``Lookup``
432
433Performance improvements
434++++++++++++++++++++++++
435
436- Speed up pattern matching for large lists
437- Quadraditc speed improvement in pattern matching. #619 and see the graph comparisons there
438- In-memory sessions #623
439
440Other changes
441+++++++++++++
442
443- bump ``RecursionLimit``
444- blacken (format) a number of Python files and remove blanks at the end of lines
445- Adding several CI tests
446- Remove various deprecation warnings
447- Change shbang from ``python`` to ``python3``
448- Update docs
449
450Backward incompatibilities
451++++++++++++++++++++++++++
452
453- Support for Python 3.5 and earlier, and in particular Python 2.7,
454  was dropped.
455- The ``graphs`` module (for Graphs) has been pulled until Mathics
456  supports pymathics and graphics using networkx better. It will
457  reappear as a pymathics module.
458- The ``natlang`` (for Natural Language processing) has also been
459  pulled.  The problem here too is that the pymathics mechanism needs
460  a small amount of work to make it scalable, and in 1.0 these were
461  hard coded. Also, both this module and ``graphs`` pulled in some
462  potentially hard-to-satisfy non-Python dependencies such as
463  matplotlib, or NLP libraries, and word lists. All of this made
464  installation of Mathics harder, and the import of these libraries,
465  ``natlang`` in particular, took some time. All of this points to having
466  these live in their own repositories and get imported on lazily on
467  demand.
468
469
4701.0
471---
472
473New features
474++++++++++++
475
476- ``LinearModelFit`` #592
477- ``EasterSunday`` #590
478- ``DSolve`` for PDE #589
479- ``LogisticSigmoid`` #588
480- ``CentralMoment``, ``Skewness``, ``Kurtosis`` #583
481- New web interface #574
482- ``Image`` support and image processing functions #571, #541, #497, #493, #482
483- ``StringCases``, ``Shortest``, ``Longest`` string match/replace #570
484- ``Quantime`` and ``Quartiles`` #567
485- ``Pick`` #563
486- ``ByteCount`` #560
487- ``Nearest`` #559
488- ``Count`` #558
489- ``RegularPolygon`` #556
490- Impoved date parsing #555
491- ``Permutations`` #552
492- LLVM compilation of simple expressions #548
493- ``NumberForm`` #534, #530, #455
494- Basic scripting with mathicsscript
495- Arcs for ``Disk`` and ``Circle`` #498, #526
496- Download from URL #525
497- ``$CommandLine`` #524
498- ``Background`` option for ``Graphics`` #522
499- ``Style`` #521, #471, #468
500- Abbreviated string patterns #518
501- ``Return`` #515
502- Better messages #514
503- Undo and redo functionality in web interface #511
504- ``Covariance`` and ``Correlation`` #506
505- ``ToLowerCase``, ``ToUpperCase``, ``LowerCaseQ``, ``UpperCaseQ`` #505
506- ``StringRepeat`` #504
507- ``TextRecognise`` #500
508- Axis numbers to integers when possible #495
509- ``PointSize`` #494
510- ``FilledCurve``, ``BezierCurve``, ``BezierFunction`` #485
511- ``PadLeft``, ``PadRight`` #484
512- ``Manipulate`` #483, #379, #366
513- ``Replace`` #478
514- String operator versions #476
515- Improvements to ``Piecewise`` #475
516- Derivation typo #474
517- Natural language processing functions #472
518- ``Arrow``, ``Arrowheads`` #470
519- Optional modules with requires attribute #465
520- ``MachinePrecision`` #463
521- ``Catenate`` #454
522- ``Quotient`` #456
523- Disable spellcheck on query fields #453
524- ``MapThread`` #452
525- ``Scan`` and ``Return`` #451
526- ``On`` and ``Off`` #450
527- ``$MachineEpsilon`` and ``$MachinePrecision`` #449
528- ``ExpandAll`` #447
529- ``Position`` #445
530- ``StringPosition`` #444
531- ``AppendTo``, ``DeleteCases``, ``TrueQ``,  ``ValueQ`` #443
532- ``Indeterminate`` #439
533- More integral functions #437
534- ``ExpIntegralEi`` and ``ExpIntegralE`` #435
535- ``Variance`` and ``StandardDeviation`` #424
536- Legacy ``Random`` function #422
537- Improved gamma functions #419
538- New recursive descent parser #416
539- ``TakeSmallest`` and related #412
540- ``Boole`` #411
541- ``Median``, ``RankedMin``, ``RankedMax`` #410
542- ``HammingDistance`` #409
543- ``JaccardDissimilarity`` and others #407
544- ``EuclideanDistance`` and related #405
545- Magic methods for ``Expression`` #404
546- ``Reverse`` #403
547- ``RotateLeft`` and ``RotateRight`` #402
548- ``ColorDistance``, ``ColorConvert`` #400
549- Predefine and document ``$Aborted`` and ``$Failed`` #399
550- ``IntegerString``, ``FromDigits``, and more #397
551- ``EditDistance`` and ``DamerauLevenshteinDistance`` #394
552- ``QRDecomposition`` #393
553- ``RandomChoice`` and ``RandomSample`` #488
554- ``Hash`` #387
555- Graphics boxes for colors #386
556- ``Except`` #353
557- Document many things #341
558- ``StringExpression`` #339
559- Legacy file functions #338
560
561Bug fixes
562+++++++++
563
564- Nested ``Module`` #591, #584
565- Python2 import bug #565
566- XML import #554
567- ``\[Minus]`` parsing bug #550
568- ``Cases`` evaluation bug #531
569- ``Take`` edge cases #519
570- ``PlotSize`` bug #512
571- Firefox nodeValue warning #496
572- Django database permissions #489
573- ``FromDigits`` missing message #479
574- Numerification upon result only #477
575- Saving and loading notebooks #473
576- ``Rationalise`` #460
577- ``Optional`` and ``Pattern`` precedence values #459
578- Fix ``Sum[i / Log[i], {i, 1, Infinity}]`` #442
579- Add ``\[Pi]``, ``\[Degree]``, ``\[Infinity]`` and ``\[I]`` to parser #441
580- Fix loss of precision bugs #440
581- Many minor bugs from fuzzing #436
582- ``Positive``/``Negative`` do not numerify arguments #430 fixes #380
583- Chains of approximate identites #429
584- Logical expressions behave inconsistently/incorrectly #420 fixes #260
585- Fix ``Take[_Symbol, ___]`` #396
586- Avoid slots in rule handling #375 fixes #373
587- ``Gather``, ``GatherBy``, ``Tally``, ``Union``, ``Intersect``, ``IntersectingQ``, ``DisjointQ``, ``SortBy`` and ``BinarySearch`` #373
588- Symbol string comparison bug #371
589- Fix ``Begin``/``BeginPackage`` leaking user-visible symbols #352
590- Fix ``TableForm`` and ``Dimensions`` with an empty list #343
591- Trailing slash bug #337
592- ``Global`` system bug #336
593- ``Null`` comparison bug #371
594- ``CompoundExpression`` and ``Out[n]`` assignment bug #335 fixes #331
595- Load unevaluated cells #332
596
597Performance improvements
598++++++++++++++++++++++++
599
600- Large expression formatting with ``$OutputSizeLimit`` #581
601- Faster terminal output #579
602- Faster ``walk_paths`` #578
603- Faster flatten for ``Sequence`` symbols #577
604- Compilation for plotting #576
605- ``Sequence`` optimisations #568
606- Improvements to ``GatherBy`` #566
607- Optimised ``Expression`` creation #536
608- ``Expression`` caching #535
609- ``Definitions`` caching #507
610- Optimised ``Position``, ``Cases``, ``DeleteCases`` #503
611- Optimised ``StringSplit`` #502
612- Optimised ``$RecursionLimit`` #501
613- Optimised insert_rule #464
614- Optimised ``IntegerLength`` #462
615- Optimised ``BaseExpression`` creation #458
616- No reevaluation of evaluated values #391
617- Shortcut rule lookup #389
618- 15% performance boost by preventing some rule lookups #384
619- 25% performance boost using same over ``__eq__``
620- n log n algorithm for ``Complement`` and ``DeleteDuplicates`` #373
621- Avoid computing ``x^y`` in ``PowerMod[x, y, m]`` #342
622
623
6240.9
625---
626
627New features
628++++++++++++
629
630- Improve syntax error messages #329
631- ``SVD``, ``LeastSquares``, ``PseudoInverse`` #258, #321
632- Python 3 support #317
633- Improvements to ``Riffle`` #313
634- Tweaks to ``PolarPlot`` #305
635- ``StringTake`` #285
636- ``Norm`` #268 #270
637- ``Total``, ``Accumulate``, ``FoldList``, ``Fold`` #264, #252
638- ``Flatten`` #253 #269
639- ``Which`` with symbolic arguments #250
640- ``Min``/``Max`` with symbolic arguments # 249
641
642Dependency updates
643++++++++++++++++++
644
645- Upgrade to ply 3.8 (issue #246)
646- Drop interrupting cow #317
647- Add six (already required by Django) #317
648
649Bug fixes
650+++++++++
651
652- Span issues with negative indices #196 fixed by #263 #325
653- SVG export bug fixed by #324
654- Django runserver threading issue #158 fixed by #323
655- asymptote bug building docs #297 fixed by #317
656- Simplify issue #254 fixed by #322
657- ``ParametricPlot`` bug fixed by #320
658- ``DensityPlot`` SVG regression in the web interface
659- Main function for server.py #288, #289 fixed by #298
660- ply table regeneration #294 fixed by #295
661- Print bar issue #290 fixed by #293
662- Quit[] index error #292 partially fixed by #307
663- Quit definition fixed by #286
664- Conjugate issue #272 fixed by #281
665
666
6670.8
668---
669
670New features
671+++++++++++++
672
673- Improvements to 3D Plotting, see #238
674- Enable MathJax menu, see #236
675- Improvements to documentation
676
677Dependency updates
678++++++++++++++++++
679
680- Upgrade to SymPy 0.7.6
681- Upgrade to ply3.6 (new parsetab format, see #246)
682- Upgrade to mpmath 0.19
683
684Bug fixes
685+++++++++
686
687- ``IntegerDigits[0]``
688
689
6900.7
691---
692
693New features
694++++++++++++
695
696- Readline tab completion
697- Automatic database initialisation
698- Support for wildcards in ``Clear`` and ``ClearAll``
699- Add ``Conjugate``
700- More tests and documentation for ``Sequence``
701- Context support
702
703Bugs fixed
704++++++++++
705
706- Fix unevaluated index handling (issue #217)
707- Fix ``Solve`` treating one solution equal to 1 as a tautology (issue
708  #208)
709- Fix temporary symbols appearing in the result when taking
710  derivatives with respect to t (issue #184)
711- typo in save worksheet help text (issue #199)
712- Fix mathicsserver wildcard address binding
713- Fix ``Dot`` acting on matrices in MatrixForm (issue #145)
714- Fix Sum behaviour when using range to generate index values (issue #149)
715- Fix behaviour of plot with unevaluated arguments (issue #150)
716- Fix zero-width space between factors in MathJax output (issue #45)
717- Fix ``{{2*a, 0},{0,0}}//MatrixForm`` crashing in the web interface
718  (issue #182)
719
720
7210.6
722---
723
724New features
725++++++++++++
726
727- ``ElementData`` using data from Wikipedia
728- Add ``Switch``
729- Add ``DSolve`` and ``RSolve``
730- More Timing functions ``AbsoluteTiming``, ``TimeUsed``, ``SessionTime``, ``Pause``
731- Date functions ``DateList``, ``DateString``, ``DateDifference``, etc.
732- Parser rewritten using lex/yacc (PLY)
733- Unicode character support
734- ``PolarPlot``
735- IPython style (coloured) input
736- ``VectorAnalysis`` Package
737- More special functions (Bessel functions and othogonal polynomials)
738- More NumberTheory functions
739- ``Import``, ``Export``, ``Get``, ``Needs`` and other IO related functions
740- PyPy compatibility
741- Add benchmarks (``mathics/benchmark.py``)
742- ``BaseForm``
743- ``DeleteDuplicates``
744- Depth, Operate Through and other Structure related functions
745- Changes to ``MatrixForm``/``TableForm`` printing
746- Use interruptingcow to limit evaluation time
747- Character Code functions
748
749Bugs fixed
750++++++++++
751
752- Fix divide-by-zero with zero-length plot range
753- Fix mathicsserver exception on startup with Django 1.6 (issues #194, #205, #209)
754
755
7560.5
757---
758
759- 3D graphics and plots using WebGL in the browser and Asymptote in TeX output
760- Plot: adaptive sampling
761- MathJax 2.0 and line breaking
762- New symbols: ``Graphics3D`` etc., ``Plot3D``, ``ListPlot``,
763  ``ListLinePlot``, ``ParametricPlot``, ``Prime``, ``Names``, ``$Version``
764- Fixed issues: 1, 4, 6, 8-21, 23-27
765- Lots of minor fixes and improvements
766- Number of built-in symbols: 386
767
768
7690.4
770---
771
772- Compatibility to Sage 4.0 and other latest libraries
773
774
7750.3 (beta only)
776---------------
777
778- Resolved several issues
779
780
7810.1 (alpha only)
782----------------
783
784- Initial version
785