******
v0.9.0
******

:Date: August 02, 2021

Contributors
============

A total of 35 people contributed to this
release. People with a '+' by their names authored a patch for the first
time.

* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Devin Neal
* Harivinay +
* Hugues Devimeux
* Jared Hughes +
* Jason Villanueva
* Kadatatlu Kishore +
* KingWampy
* LED Me Explain +
* Laith Bahodi
* Mohammad Al-Fetyani
* Noam Zaks
* Oliver
* PaulCMurdoch
* Raghav Prabhakar +
* Ryan McCauley
* Suhail Sherif +
* Taektiek +
* Udeshya Dhungana +
* UraniumCronorum +
* Vinh H. Pham (Vincent) +
* ccn +
* icedcoffeeee +
* sahilmakhijani +
* sparshg


The patches included in this release have been reviewed by
the following contributors.

* Abhijith Muthyala
* Alex Lembcke
* Benjamin Hackl
* Darylgolden
* Devin Neal
* Harivinay
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* KingWampy
* Laith Bahodi
* Lino
* Mohammad Al-Fetyani
* Oliver
* Raghav Goel
* Suhail Sherif
* icedcoffeeee
* sahilmakhijani
* sparshg

Pull requests merged
====================

A total of 55 pull requests were merged for this release.

Highlights
----------

* :pr:`1677`: Added a new :class:`~.Table` mobject
   This brings easy-to-use and customizable tables to Manim. Several examples for this new mobject can be found at :mod:`the module documentation page <.mobject.table>` and its subpages.

Deprecated classes and functions
--------------------------------

* :pr:`1848`: Deprecated parameters for :class:`~.DashedLine` and :class:`~.DashedVMobject`
   - ``dash_spacing`` is an unused parameter
   - ``positive_space_ratio`` has been replaced with the shorter name ``dashed_ratio``

* :pr:`1773`: Remove all classes and functions that were deprecated until ``v0.7.0`` and ``v0.8.0``
   The classes ``FadeInFrom``, ``FadeOutAndShift``, ``FadeOutToPoint``, ``FadeInFromPoint``, ``FadeInFromLarge``, ``VFadeIn``, ``VFadeOut``, ``VFadeInThenOut`` have been removed, use :class:`~.FadeIn` or :class:`~.FadeOut` with appropriate
   keyword arguments instead.

   The classes ``CircleIndicate``, ``ShowCreationThenDestruction``, ``AnimationOnSurroundingRectangle``, ``ShowPassingFlashAround``, ``ShowCreationThenDestructionAround``, ``ShowCreationThenFadeAround``, ``WiggleOutThenIn``, ``TurnInsideOut`` have been removed. Use :class:`~.Circumscribe`, :class:`~.ShowPassingFlash`, or :class:`~.Wiggle` instead.

   The classes ``OpenGLTexMobject`` and ``OpenGLTextMobject`` have been removed, use :class:`~.MathTex` and :class:`~.Tex` instead. Also, ``VMobjectFromSVGPathstring`` has been removed, use :class:`~.SVGPathMobject` instead.

   Finally, the utility functions ``get_norm`` and ``cross`` have been removed (use the corresponding Numpy methods instead), and the function ``angle_between`` has been replaced with ``angle_between_vectors``.

* :pr:`1731`: Deprecated :class:`~.ParametricSurface` parameters
   - ``u_min`` and ``u_max`` have been replaced by ``u_range``.
   - ``v_min`` and ``v_max`` have been replaced by ``v_range``.

New features
------------

* :pr:`1780`: Allow non-numerical values to be added to :class:`~.NumberLine` and :class:`~.Axes`
   - Added :meth:`.NumberLine.add_labels` method to :class:`~.NumberLine` which accepts a dictionary of positions/values.
   - :meth:`.CoordinateSystem.add_coordinates` now accepts a dictionary too.

* :pr:`1719`: Added a :class:`~.Broadcast` animation


* :pr:`1765`: Added a static method :meth:`.Circle.from_three_points` for defining a circle from three points
   - Added a new :func:`~.perpendicular_bisector` function in ``space_ops.py``

* :pr:`1686`: Added :meth:`.ParametricSurface.set_fill_by_value`
   This method enables a color gradient to be applied to a :class:`~.ParametricSurface`, including the ability to define at which points the colors should be centered.

Enhancements
------------

* :pr:`1833`: Added OpenGL compatibility for :class:`~.VDict`, :meth:`~.Axes.get_line_graph` and :class:`~.FocusOn`


* :pr:`1760`: Added ``window_size`` flag to manually adjust the size of the OpenGL window
   Accepts a tuple in the form: ``x,y``.

* :pr:`1823`: Reworked :class:`~.DashedVMobject`
   Rewritten the logic to generate dashes

* :pr:`1808`: OpenGL renderer updates
   - Adds model matrices to all OpenGLVMobjects
   - Improved performance on vectorized mobject shaders
   - Added updaters that are part of the scene rather than a mobject

* :pr:`1787`: Made :class:`~.DecimalNumber` apply color to the ellipsis
   Made color apply to the dots when `show_ellipsis` is set to true in `DecimalNumber`

* :pr:`1775`: Let :class:`~.Create` work on :class:`~.OpenGLSurface`


* :pr:`1757`: Added warning when there is a large number of items to hash.


* :pr:`1774`: Add the ``reverse`` parameter to :class:`~.Write`


Fixed bugs
----------

* :pr:`1722`: Fixed ``remover=True`` for :class:`~.AnimationGroup`


* :pr:`1727`: Fixed some hot reload issues and compatibility with IDEs
   - Fixed interactive embed issue where it would fail when running on non-tty terminals
   - Fixed issue where file observer would error after the second run as the first observer was not closed

* :pr:`1844`: Fixed the oversized :class:`~.Code` window with the OpenGL renderer


* :pr:`1821`: Fixed issues concerning ``frame_center`` in :class:`~.ThreeDScene`
   - Changing ``frame_center`` in a :class:`~.ThreeDScene` now actually changes the camera position.
   - An animation with only ``frame_center`` animated will now be rendered properly.
   - A black dot is not created at the origin once ``frame_center`` is animated.

* :pr:`1826`: Fixed scaling issue with :meth:`.BarChart.change_bar_values`


* :pr:`1839`: Allow passing arguments to ``.animate`` with the OpenGL renderer


* :pr:`1791`: :meth:`~.Mobject.set_z_index` now sets all submobjects' ``z_index`` value


* :pr:`1792`: Fixed bug that caused dry runs to fail when using the PNG format


* :pr:`1790`: Fixed an import from ``manimlib``


* :pr:`1782`: Fixed :class:`~.Tex` not working properly with the OpenGL renderer


* :pr:`1783`: Fixed :meth:`~.OpenGLMobject.shuffle` function and added :meth:`~.Mobject.invert` to OpenGL


* :pr:`1786`: Fixed :class:`~.DecimalNumber` not working properly when the number of digits changes


* :pr:`1763`: Fixed not being able to set some CLI flags in the configuration file


* :pr:`1776`: :meth:`.CoordinateSystem.get_riemann_rectangles` now uses the graph's range instead of the axes range
   If no range specified, `get_riemann_rectangles` generates the rectangles only where the area is correctly bounded

* :pr:`1770`: Rewrote :meth:`.OpenGLMobject.put_start_and_end_on` to work correctly in 3D


* :pr:`1736`: Fixed :class:`~.LinearTransformationScene` crashing on multiple animations


Documentation-related changes
-----------------------------

* :pr:`1852`: Fixed docs for :meth:`.Coordinate_system.add_coordinates` and moved :class: `~.Code` example


* :pr:`1807`: Updated installation instructions
   - Added a warning about the incompatibility of different versions of Manim in the README
   - Modified the admonition warning in the documentation
   - Removed duplicated information from the README (``pip install manim`` is already covered in the docs)

* :pr:`1739`: Added a section on creating a custom animation to the "Manim's building blocks" tutorial


* :pr:`1835`: Updated documentation with information about reworked graphical unit test system


* :pr:`1845`: Improve ``ThreeDSurfacePlot`` example in example gallery


* :pr:`1842`: Removed instructions on installing Poetry from Developer Installation documentation, reference Poetry's documentation instead


* :pr:`1829`: Switch the order of Scoop and Chocolatey in the docs for the Windows Installation


* :pr:`1827`: Added ``robots.txt`` to prevent old versions of documentation from showing in search results


* :pr:`1819`: Removed mention of ``-h`` CLI flag from documentation


* :pr:`1813`: Removed unused variables from tutorial


* :pr:`1815`: Added codespell to the list of used linters in the contribution guidelines


* :pr:`1778`: Improve sidebar structure of the documentation's reference manual


* :pr:`1749`: Added documentation and example for :meth:`.VMobject.set_fill`


* :pr:`1743`: Edited the developer installation instructions to include information on cloning the repository


* :pr:`1706`: Rework example for :class:`~.Variable`


Changes concerning the testing system
-------------------------------------

* :pr:`1836`: Converted all the graphical tests to the new syntax


* :pr:`1802`: Refactored graphical unit testing system, and implemented multi frames tests
   This PR introduces a new ``@frames_comparison`` decorator which allows writing simple ``construct``-like functions as tests. Control data for new tests can be easily generated by calling ``pytest --set_test``.

Changes to our development infrastructure
-----------------------------------------

* :pr:`1830`: Be more concise about the documentation URL in the PR template


Code quality improvements and similar refactors
-----------------------------------------------

* :pr:`1851`: Renamed ``Tabular`` to :class:`~.Table`


* :pr:`1817`: Remove pillow version requirement


* :pr:`1806`: Fixed spelling mistake


* :pr:`1745`: Updated the BibTeX template in the README to Manim v0.9.0


New releases
------------

* :pr:`1850`: Bump version number to ``v0.9.0`` and generate changelog
