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