Manim v0.21.0 发布
See [our rendered changelog](https://docs.manim.community/en/stable/changelog/0.21.0-changelog.html).
## What's Changed
### Breaking Changes 🚨
* Delegate color handling in `Code` to Pygments and document custom styles by @Helbronner in https://github.com/manimcommunity/manim/pull/4816
`Code` no longer honors foreground color overrides passed through
`paragraph_config={"color": ...}` or `Code.default_paragraph_config["color"]`;
syntax and line-number colors now come from the selected Pygments
`formatter_style`. To customize them, pass a custom Pygments `Style` subclass
through `formatter_style` and configure its token styles and
`line_number_color`. Background colors can still be overridden with
`background_config={"fill_color": ...}`; otherwise, the selected Pygments
style provides the background. See the note in the documentation of `Code`
for 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()`: the `convert_from_floats` argument has
been removed, and the method now always converts floats to the camera's pixel
format. Omit the argument if it was previously `True`; use
`np.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 `Typst` and `TypstMath` mobjects 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 with `pip 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