3b1b/manim
Animation engine for explanatory math videos
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
Frameworks
Infrastructure
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.
A quieter week focused on fixing visual glitches, animation timing bugs, and cleaning up the installation docs.
4 weeksWeek of 2026-08-17
Week of 2026-08-17latest
A quieter week focused on fixing visual glitches, animation timing bugs, and cleaning up the installation docs.
Week of 2026-08-10
A busy week of renderer improvements (including z-indexing support), performance fixes, and housekeeping like updated docs and license.
Week of 2026-08-03
The 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.
Week of 2026-07-27
A small week with three targeted fixes to updaters, frame formatting, and stroke-width documentation.
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.
Dependencies and code review
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