MAX Nightly 26.8.0.dev2026103021 (Mojo 1.3.0.dev2026103021) Released

:astronaut: A new nightly version has been released! :astronaut:

See the quickstart guide for installation instructions: Quickstart | MAX

MAX changelog updates:

  • Added support for
    LiquidAI/LFM3-1.7B and
    LiquidAI/LFM3-1.7B-Base
    on the new Lfm3ForCausalLM architecture.

  • Added support for
    LiquidAI/LFM3-VL-2B on the
    Lfm3VlForConditionalGeneration architecture, with image and video input.

  • Added support for
    LiquidAI/LFM3-Omni-2B on
    the Lfm3OmniForConditionalGeneration architecture, with text, image and
    video input.

  • Added ops.allreduce_rms_norm and max.functional.allreduce_rms_norm, a
    fused allreduce + RMSNorm collective for bfloat16 2-D tensors: every device
    ends up with the RMS norm of the summed tensor, computed in one launch. The
    norm runs on the unrounded float32 sum, so it is not bit-identical to
    allreduce_sum followed by rms_norm, which reads the sum rounded back to
    bfloat16. The max.functional form falls back to that two-launch path for
    inputs that are not 2-D bfloat16 and for meshes without signal buffers.

  • ops.resize_bicubic() and its max.functional counterpart
    take an antialias keyword argument. With antialias=True, the resize
    uses the filter of Pillow’s BICUBIC and matches PyTorch’s
    interpolate(mode="bicubic", antialias=True) to float32 rounding. The
    antialiased resize runs on the CPU, on a float32 input, or on a uint8 input
    that it resizes to uint8, rounding and clamping once at the end.
    ops.resize_bicubic() also takes its output size as a runtime int64
    tensor, with out_dims declaring the output’s dimensions.

  • DeviceContext.enqueue_function() accepts a GridBlockLaunchConfig (grid,
    block, dynamic shared memory) or ClusterLaunchConfig (plus thread block
    clusters) from max.gpu.host as its first argument. A cluster launch on a
    GPU without clusters fails to compile; generic code checks
    conforms_to(DeviceContext.ExecutionConfigType, ClusterExecutionConfig).

  • Loading a model on a device that reports no free memory now fails with a
    “Model size exceeds available memory” error. Memory planning used to treat
    0 as unmeasured and size against the device’s total memory, so a full host
    could crash during loading instead.

Mojo changelog updates:

  • [stdlib] Raise IOError from FileDescriptor methods

Raw MAX diff: https://github.com/modular/modular/compare/8ed65fc6ac15950ce62da1f8e8d50c2c7c528065...27a2106cb450292f63d5e35c05282cb66264331c
Current Mojo changelog: https://github.com/modular/modular/blob/main/Mojo/docs/site/nightly-changelog.md