Manim โ Mathematical Animation Framework
Authors/Creators
Description
What's Changed
Breaking Changes ๐จ
Delegate color handling in
Codeto Pygments and document custom styles by @Helbronner in https://github.com/manimcommunity/manim/pull/4816Codeno longer honors foreground color overrides passed throughparagraph_config={"color": ...}orCode.default_paragraph_config["color"]; syntax and line-number colors now come from the selected Pygmentsformatter_style. To customize them, pass a custom PygmentsStylesubclass throughformatter_styleand configure its token styles andline_number_color. Background colors can still be overridden withbackground_config={"fill_color": ...}; otherwise, the selected Pygments style provides the background. See the note in the documentation ofCodefor an explicit example.Speed up Cairo renderer by 2.2x on animation-heavy scenes by @HamdiBarkous in https://github.com/manimcommunity/manim/pull/4695
Cairo path construction now uses vectorized subpath splitting, and pixel-array handling avoids redundant copies while producing pixel-identical output. This changes
Camera.convert_pixel_array(): theconvert_from_floatsargument has been removed, and the method now always converts floats to the camera's pixel format. Omit the argument if it was previouslyTrue; usenp.array(pixel_array)instead if relying on the old default copying behavior.
Highlights ๐
Introduce first-class support for rendering text and markup via Typst (optional dependency) by @behackl in https://github.com/manimcommunity/manim/pull/4681
The new
TypstandTypstMathmobjects compile Typst markup and mathematical expressions directly to SVG without requiring a TeX installation. They support label-based subgroup selection,{{ ... }}expression grouping, and integration with existing label APIs. Install the optional dependency withpip install "manim[typst]".Hash NumPy arrays without JSON expansion by @dexhunter in https://github.com/manimcommunity/manim/pull/4883
NumPy arrays in scene cache keys are now represented by deterministic hashes of their complete logical contents instead of sampled JSON data. This prevents stale cache hits when visible image data changes and reduces hashing CPU time by roughly 94โ98% in representative benchmarks.
Add support for encoding partial movie files in parallel by @pjfo in https://github.com/manimcommunity/manim/pull/4899
The new
max_inflight_encodersconfiguration option allows partial movie encoding to overlap with rendering while bounding the number of encoder workers. Try it withmanim render --max-inflight-encoders 4 --encoder-queue-size 8 scene.py Scene;--encoder-queue-sizelimits the pending frame buffers held by each encoder. The default of one in-flight encoder preserves serial behavior; higher values reduced an encoding-heavy benchmark by 56% and larger real-world renders by roughly 8โ11%.
New Features โจ
- Allow inner lines to be omitted from
Tableby @leqo-c in https://github.com/manimcommunity/manim/pull/4731 - Support multiple compiler passes in
TexTemplateby @Sazzzzzz in https://github.com/manimcommunity/manim/pull/4810 - Add a
dot_buffparameter toBulletedListby @GniLudio in https://github.com/manimcommunity/manim/pull/4892
Enhancements ๐
- Support tuple-based edge lookup in
GenericGraph.__getitem__()by @HairlessVillager in https://github.com/manimcommunity/manim/pull/3799 - Raise a clear error when rendered glyphs do not match input characters by @SupernovaIa in https://github.com/manimcommunity/manim/pull/4868
- Avoid copying
Mobject.submobjectsin sequence methods by @nikolajmunk in https://github.com/manimcommunity/manim/pull/4915 - Make additional mobject methods chainable by @GniLudio in https://github.com/manimcommunity/manim/pull/4913
Bug Fixes ๐
- Fix OpenGL crashes in
arrange_in_grid()andget_location()by @Croustit in https://github.com/manimcommunity/manim/pull/4622 - Prevent
get_nth_subpath()from raisingIndexErrorand ensure it returns a NumPy array by @MqCreaple in https://github.com/manimcommunity/manim/pull/4630 - Preserve closed curves in
put_start_and_end_on()by @GoThrones in https://github.com/manimcommunity/manim/pull/4658 - Fix inconsistent stroke-width scaling for text in compound objects by @vihdutta in https://github.com/manimcommunity/manim/pull/4694
- Accept a single
GrouporVGroupinCyclicReplaceandSwapby @irvanalhaq9 in https://github.com/manimcommunity/manim/pull/4211 - Prevent empty submobjects from distorting parent dimensions by @gvauvert in https://github.com/manimcommunity/manim/pull/4088
- Honor
languagewhen constructingCodefromcode_fileby @GniLudio in https://github.com/manimcommunity/manim/pull/4706 - Fix
ThreeDScene.set_to_default_angled_camera_orientation()raisingAttributeErrorby @siddhu-pikachu in https://github.com/manimcommunity/manim/pull/4704 - Fix reversed default resolution in
manim init project --defaultby @aoxiangtianyu-go in https://github.com/manimcommunity/manim/pull/4839 - Prevent memoizer collisions between object hashes and IDs by @pjfo in https://github.com/manimcommunity/manim/pull/4901
- Prevent
round_corners()failures for collinear vertices by @MeiSiristhebest in https://github.com/manimcommunity/manim/pull/4906 - Fix
checkhealthfalse positives for uv launcher shims by @srinu2003 in https://github.com/manimcommunity/manim/pull/4889 - Fix OpenGL triangulation errors at ring boundaries by @Theelx in https://github.com/manimcommunity/manim/pull/4819
- Fix
Anglecrashes for parallel or collinear lines by @MeiSiristhebest in https://github.com/manimcommunity/manim/pull/4907 - Stabilize cache hashes for transient objects by @pjfo in https://github.com/manimcommunity/manim/pull/4896
- Ignore SVG shape elements without points by @behackl in https://github.com/manimcommunity/manim/pull/4917
- Normalize
Codebaseline alignment inParagraphby @Croustit in https://github.com/manimcommunity/manim/pull/4692 - Preserve z-index ordering in animation groups by @behackl in https://github.com/manimcommunity/manim/pull/4918
- Let
MathTexhandle multiline strings by @henrikmidtiby in https://github.com/manimcommunity/manim/pull/4634 - Ensure that glyphs at end of
Codelines are no longer deleted whendisable_ligaturesisFalseby @nikolajmunk in https://github.com/manimcommunity/manim/pull/4926
Documentation ๐
- Correct
SquareToCircleterminology in the quickstart guide by @xuruidong in https://github.com/manimcommunity/manim/pull/4631 - Correct angle ranges in
Spheredocumentation and add examples by @Jackyuanx in https://github.com/manimcommunity/manim/pull/3973 - Document edge lookup in
GenericGraph.__getitem__()by @mayank-dev-15 in https://github.com/manimcommunity/manim/pull/4761 - Correct the
FadeOutexample name by @GniLudio in https://github.com/manimcommunity/manim/pull/4832 - Document whitespace-stripped indexing in
Textby @SupernovaIa in https://github.com/manimcommunity/manim/pull/4866 - Preserve line color in the
MovingDotsexample by @shenao010415 in https://github.com/manimcommunity/manim/pull/4895 - Correct the font-directory lookup documented for
register_font()by @ExploreMaths in https://github.com/manimcommunity/manim/pull/4880 - Correct angle ordering in the
cartesian_to_spherical()andspherical_to_cartesian()docstrings by @changsheng0804-blip in https://github.com/manimcommunity/manim/pull/4764 - Clarify frame terminology in the
MovingCameraSceneexample by @nikolajmunk in https://github.com/manimcommunity/manim/pull/4910
Testing ๐งช
- Add unit tests for color helper functions by @THE-RAF in https://github.com/manimcommunity/manim/pull/4749
- Add regression tests for four recent
VMobjectfixes by @THE-RAF in https://github.com/manimcommunity/manim/pull/4750 - Add tests for edge lookup in
GenericGraph.__getitem__()by @sridhar-3009 in https://github.com/manimcommunity/manim/pull/4753 - Add a regression test for text stroke-width scaling in compound objects by @vihdutta in https://github.com/manimcommunity/manim/pull/4703
Infrastructure & Build ๐จ
- Update TinyTeX installation on Windows and macOS to fix CI failures by @chopan050 in https://github.com/manimcommunity/manim/pull/4679
- Update CI workflow dependencies by @behackl in https://github.com/manimcommunity/manim/pull/4677
- Switch package builds from Hatchling to uv-build by @JasonGrace2282 in https://github.com/manimcommunity/manim/pull/4619
Code Quality & Refactoring ๐งน
- Update the project metadata link to X (formerly Twitter) by @henrikmidtiby in https://github.com/manimcommunity/manim/pull/4642
- Replace a bare
exceptinrate_functions.pyby @koteshyelamati in https://github.com/manimcommunity/manim/pull/4891 - Simplify the
Codesyntax-coloring implementation by @GniLudio in https://github.com/manimcommunity/manim/pull/4894 - Update pre-commit hooks by @behackl in https://github.com/manimcommunity/manim/pull/4920
- Rename
TypstMathtoMathTypstto match existingTex/MathTexcoupling by @behackl in https://github.com/manimcommunity/manim/pull/4925
Type Hints ๐
- Add type annotations to
mobject.pyby @henrikmidtiby in https://github.com/manimcommunity/manim/pull/4388 - Use
npt.NDArray[np.float64]forVMobject._bezier_t_valuesby @GoThrones in https://github.com/manimcommunity/manim/pull/4675 - Improve
Callableannotations for mobject updater utilities by @treszkai in https://github.com/manimcommunity/manim/pull/4728 - Add type annotations to
transform_matching_parts.pyby @henrikmidtiby in https://github.com/manimcommunity/manim/pull/4400 - Fix the
_on_finishannotation inAnimation.__init__by @GniLudio in https://github.com/manimcommunity/manim/pull/4812 - Add type annotations to
table.pyby @henrikmidtiby in https://github.com/manimcommunity/manim/pull/4641
Other Changes
- Prepare new release:
v0.21.0by @behackl in https://github.com/manimcommunity/manim/pull/4919
New Contributors
- @Croustit made their first contribution in https://github.com/manimcommunity/manim/pull/4622
- @xuruidong made their first contribution in https://github.com/manimcommunity/manim/pull/4631
- @MqCreaple made their first contribution in https://github.com/manimcommunity/manim/pull/4630
- @vihdutta made their first contribution in https://github.com/manimcommunity/manim/pull/4694
- @THE-RAF made their first contribution in https://github.com/manimcommunity/manim/pull/4749
- @leqo-c made their first contribution in https://github.com/manimcommunity/manim/pull/4731
- @treszkai made their first contribution in https://github.com/manimcommunity/manim/pull/4728
- @gvauvert made their first contribution in https://github.com/manimcommunity/manim/pull/4088
- @sridhar-3009 made their first contribution in https://github.com/manimcommunity/manim/pull/4753
- @GniLudio made their first contribution in https://github.com/manimcommunity/manim/pull/4706
- @mayank-dev-15 made their first contribution in https://github.com/manimcommunity/manim/pull/4761
- @siddhu-pikachu made their first contribution in https://github.com/manimcommunity/manim/pull/4704
- @Sazzzzzz made their first contribution in https://github.com/manimcommunity/manim/pull/4810
- @aoxiangtianyu-go made their first contribution in https://github.com/manimcommunity/manim/pull/4839
- @SupernovaIa made their first contribution in https://github.com/manimcommunity/manim/pull/4866
- @koteshyelamati made their first contribution in https://github.com/manimcommunity/manim/pull/4891
- @pjfo made their first contribution in https://github.com/manimcommunity/manim/pull/4901
- @MeiSiristhebest made their first contribution in https://github.com/manimcommunity/manim/pull/4906
- @shenao010415 made their first contribution in https://github.com/manimcommunity/manim/pull/4895
- @ExploreMaths made their first contribution in https://github.com/manimcommunity/manim/pull/4880
- @srinu2003 made their first contribution in https://github.com/manimcommunity/manim/pull/4889
- @changsheng0804-blip made their first contribution in https://github.com/manimcommunity/manim/pull/4764
- @Theelx made their first contribution in https://github.com/manimcommunity/manim/pull/4819
- @dexhunter made their first contribution in https://github.com/manimcommunity/manim/pull/4883
- @nikolajmunk made their first contribution in https://github.com/manimcommunity/manim/pull/4910
- @Helbronner made their first contribution in https://github.com/manimcommunity/manim/pull/4816
- @HamdiBarkous made their first contribution in https://github.com/manimcommunity/manim/pull/4695
Full Changelog: Compare view
Notes
Files
ManimCommunity/manim-v0.21.0.zip
Files
(7.6 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:6266854ddbd36fe97069bae8f1762314
|
7.6 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/ManimCommunity/manim/tree/v0.21.0 (URL)
Software
- Repository URL
- https://github.com/ManimCommunity/manim