← All reportsPublic report

3b1b/manim

Animation engine for explanatory math videos

92k stars Python View on GitHubprofiled 11d ago
Try GitZoid
104PRs this week
13Contributors
0Deps scanned
0Issues found
01 · Repo overview

How manim is put together

ManimGL (3b1b/manim) is a Python library and CLI engine for programmatically creating precise mathematical animations, published as the `manimgl` PyPI package. It is a desktop rendering pipeline rather than a web service: the CLI (`manimlib/__main__.py`) parses arguments and YAML config, loads Scene classes from user files via `extract_scene`, and runs them through an animation/mobject object model rendered with a GPU pipeline (wgpu/WebGPU shaders in WGSL) into an interactive GLFW window or video/image files written via FFmpeg. Data flows from user Python scene definitions -> mobjects/animations -> camera/renderer -> either an on-screen window or FFmpeg-encoded output files.

Languages

PythonWGSL (GPU shaders)

Frameworks

wgpu (WebGPU rendering)glfw (windowing)IPython (interactive embed)matplotlibnumpyscipysympy

Infrastructure

GitHub Actions (docs workflow badge)FFmpeg (external binary for video encoding)LaTeX (external binary for TeX rendering)Pango / ManimPango (text layout)

Major components

manimlib.animation

Defines Animation classes (transform, fading, growing, rotation, composition, etc.) that interpolate mobject state over time.

manimlib.mobject

The mathematical object model: geometry, coordinate systems, vector fields, 3D surfaces, SVG/TeX/text mobjects, and point-cloud/surface types.

manimlib.renderer

GPU rendering layer managing wgpu pipelines, shader source assembly, uniform blocks, shared buffers, and drawing of mobjects.

manimlib.scene

Scene orchestration including the base Scene, InteractiveScene, embedded IPython REPL workflow, and writing output to files.

manimlib.camera

Camera and CameraFrame handling resolution, framing, and projection of scenes.

manimlib.shaders

WGSL shader programs (fill, stroke, surface, fractals, etc.) plus reusable shader inserts for color, clipping, and uniforms.

manimlib.utils

Support utilities: bezier math, colors, file/directory ops, caching, LaTeX file writing, sounds, SVG export, and rate functions.

CLI/config entry (config.py, extract_scene.py, window.py)

Parses CLI args and layered YAML config, discovers and instantiates Scene classes from user files, and manages the interactive window loop.

Over the past month, the manim project has been dominated by a major overhaul of its rendering engine, porting it to a modern graphics system (wgpu) that batches drawing work together for speed, followed by a week of cleanup and bug fixes around animation timing and documentation. The most recent weeks shifted to polishing: fixing visual glitches like stale separators and mis-rotated shapes, improving installation docs across macOS, Linux, and Windows, and patching edge cases in animations and graph plotting.

Week by week

2026-08-17A quieter week focused on fixing visual glitches, animation timing bugs, and cleaning up the installation docs.latest6 changes

Fix

Fixed stale separator records between merged mobjects

Objects combined into groups no longer leave behind leftover internal boundaries that could cause odd rendering artifacts.

Fix

Fixed LaggedStart time spans

Animations that stagger their start times now keep correct timing so they play when they should.

Fix

Fixed batched 2D vector rotation

Rotating many flat shapes at once now produces the correct result instead of a wrong orientation.

Fix

Fixed graph point lookup outside unit x ranges

Looking up points on plotted graphs now works correctly even for values beyond the default range.

Fix

Handled dvisvgm conversion failures

When the tool that converts math formulas to drawings fails, the program now handles it gracefully rather than crashing.

Docs

Made macOS install snippet runnable and fixed broken headings

The README's Mac setup commands can now be copied and run as-is, and the installation page's headings and FFmpeg instructions were corrected.

2026-08-10A busy week of renderer improvements (including z-indexing support), performance fixes, and housekeeping like updated docs and license.6 changes

Feature

Added z-indexing to the renderer

You can now control which objects draw on top of others by giving them depth priorities.

Feature

Added zoom scroll inversion option

Users can flip which direction scrolling zooms in or out via a settings option.

Refactor

Fixed pegged CPU core issue

The program no longer keeps one processor core running at full tilt unnecessarily.

Fix

Honor stroke widths declared in SVG files

Imported SVG images now respect the line thicknesses specified within the file itself.

Fix

Fixed LaTeX compilation check on Windows

On Windows, successful math-formula builds are no longer mistaken for failures due to exit-code quirks.

Docs

Modernized docs build and added Linux install instructions

The documentation tooling was brought up to date, and Linux users got clear setup instructions; the license copyright year was also refreshed.

2026-08-03The biggest week of the period: a large-scale port of the rendering engine to wgpu, reorganizing it to batch draws into shared buffers for speed.6 changes

Refactor

Ported the renderer to wgpu

The core drawing engine was rebuilt on a modern graphics library, reorganized around how that library actually works.

Refactor

Gathered all uniforms and records into shared buffers per frame

Instead of sending each object's data separately, everything is packed into shared buffers once per frame, cutting overhead.

Refactor

Draw more fills together

Shapes whose fills don't overlap can now be drawn as a group, reducing the number of separate drawing operations.

Refactor

One shader file per drawing type

Each kind of thing drawn (fills, strokes, etc.) now has its own clearly named shader file, making the code easier to navigate.

Chore

Tested window display and recorded port soundness

New tests confirm scenes shown in a window actually reach the screen, and notes record that the new rendering pipeline is verified correct.

Refactor

Hand frames over as they come off the GPU

Finished frames are delivered immediately rather than waiting, with reads scheduled a frame behind so nothing stalls.

2026-07-27A small week with three targeted fixes to updaters, frame formatting, and stroke-width documentation.3 changes

Fix

Fixed time-based updaters

Animations that change objects based on elapsed time now behave correctly.

Fix

Made copied frame orientation formatting more universal

Copying camera/frame orientation data now works consistently across different situations.

Docs

Clarified stroke width and anti-alias width conversion

Documentation now explains exactly how line thickness settings translate into what gets drawn on screen.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 scanned dependencies.

No known advisories in the scanned dependencies.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required