The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of mlx-swift, reference main (62de22), with Swift 6.2 for macOS (SPM) on 10 Dec 2025 05:51:49 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.68.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ml-explore/mlx-swift.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/ml-explore/mlx-swift
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 62de22d add .arrays back to ScaledDotProductAttentionMaskMode (#314)
Submodule path 'Source/Cmlx/mlx': checked out '54f1cc6e3e398a1274fb3bcd73cb543eea643da2'
Submodule path 'Source/Cmlx/mlx-c': checked out '0fd809867528589daba11c6a0b9ec26426067be9'
Submodule 'submodules/mlx' (https://github.com/ml-explore/mlx) registered for path 'Source/Cmlx/mlx'
Submodule 'submodules/mlx-c' (https://github.com/ml-explore/mlx-c) registered for path 'Source/Cmlx/mlx-c'
Cloning into '/Users/admin/builder/spi-builder-workspace/Source/Cmlx/mlx'...
Cloning into '/Users/admin/builder/spi-builder-workspace/Source/Cmlx/mlx-c'...
Cloned https://github.com/ml-explore/mlx-swift.git
Revision (git rev-parse @):
62de22dc0d706d4158f84b6e83e74958727dcc49
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/ml-explore/mlx-swift.git at main
Fetching https://github.com/apple/swift-numerics
[1/6384] Fetching swift-numerics
Fetched https://github.com/apple/swift-numerics from cache (1.44s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (2.02s)
Creating working copy for https://github.com/apple/swift-numerics
Working copy of https://github.com/apple/swift-numerics resolved at 1.1.1
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "mlx-swift",
      "name": "mlx-swift",
      "url": "https://github.com/ml-explore/mlx-swift.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/mlx-swift",
      "dependencies": [
        {
          "identity": "swift-numerics",
          "name": "swift-numerics",
          "url": "https://github.com/apple/swift-numerics",
          "version": "1.1.1",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swift-numerics",
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/ml-explore/mlx-swift.git
[1/12225] Fetching mlx-swift
Fetched https://github.com/ml-explore/mlx-swift.git from cache (1.60s)
Fetching https://github.com/apple/swift-numerics from cache
Fetched https://github.com/apple/swift-numerics from cache (0.46s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (0.51s)
Creating working copy for https://github.com/ml-explore/mlx-swift.git
Working copy of https://github.com/ml-explore/mlx-swift.git resolved at main (62de22d)
Creating working copy for https://github.com/apple/swift-numerics
Working copy of https://github.com/apple/swift-numerics resolved at 1.1.1
warning: '.resolve-product-dependencies': dependency 'mlx-swift' is not used by any target
Found 1 product dependencies
  - swift-numerics
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/ml-explore/mlx-swift.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64
Building for debugging...
[0/198] Compiling version.cpp
[1/198] Write swift-version-49B95AFC49DCD68C.txt
[2/198] Compiling _NumericsShims _NumericsShims.c
[3/198] Write sources
[4/198] Write Tutorial-entitlement.plist
[5/198] Write sources
[8/209] Compiling RealModule RealFunctions.swift
[9/210] Compiling RealModule Float80+Real.swift
[10/210] Compiling RealModule Float16+Real.swift
[11/210] Compiling RealModule Real.swift
[12/210] Compiling RealModule ElementaryFunctions.swift
[13/210] Compiling RealModule Double+Real.swift
[14/210] Emitting module RealModule
[15/210] Compiling RealModule AlgebraicField.swift
[16/210] Compiling RealModule ApproximateEquality.swift
[17/210] Compiling RealModule AugmentedArithmetic.swift
[18/210] Compiling RealModule Float+Real.swift
[19/210] Compiling RealModule RelaxedArithmetic.swift
[19/210] Write sources
[27/210] Write Example1-entitlement.plist
[28/210] Write sources
[29/210] Write CustomFunctionExampleSimple-entitlement.plist
[30/210] Write sources
[31/210] Write CustomFunctionExample-entitlement.plist
[32/210] Write sources
[33/210] Compiling error.cpp
[34/210] Compiling utils.cpp
[36/221] Compiling ComplexModule Complex+Numeric.swift
[37/221] Compiling ComplexModule Polar.swift
[38/221] Compiling ComplexModule Complex+Hashable.swift
[39/221] Compiling ComplexModule Complex+IntegerLiteral.swift
[40/221] Compiling ComplexModule Complex.swift
[41/221] Compiling ComplexModule Complex+StringConvertible.swift
[41/222] Compiling scheduler.cpp
[43/222] Compiling ComplexModule Scale.swift
[44/222] Compiling ComplexModule Complex+ElementaryFunctions.swift
[45/222] Compiling ComplexModule Complex+Codable.swift
[46/222] Compiling ComplexModule Complex+AdditiveArithmetic.swift
[47/222] Compiling ComplexModule Complex+AlgebraicField.swift
[48/222] Emitting module ComplexModule
[48/222] Compiling compile.cpp
[49/222] Compiling export.cpp
[50/222] Compiling fft.cpp
[51/224] Compiling fast.cpp
[53/224] Compiling Numerics Numerics.swift
[54/224] Emitting module Numerics
[54/224] Compiling eval.cpp
[55/224] Compiling no_gguf.cpp
[56/224] Compiling random.cpp
[57/224] Compiling transforms.cpp
[58/224] Compiling graph_utils.cpp
[59/224] Compiling linalg.cpp
[60/224] Compiling load.cpp
[61/224] Compiling fft.cpp
[62/224] Compiling dtype.cpp
[63/224] Compiling primitives.cpp
[64/224] Compiling dtype_utils.cpp
[65/224] Compiling no_ring.cpp
[66/224] Compiling safetensors.cpp
[67/224] Compiling device.cpp
[68/224] Compiling fast.cpp
[69/224] Compiling no_nccl.cpp
[70/224] Compiling no_mpi.cpp
[71/224] Compiling einsum.cpp
[72/224] Compiling primitives.cpp
[73/224] Compiling distributed.cpp
[74/224] Compiling ops.cpp
[76/224] Compiling utils.cpp
[77/224] Compiling unary.cpp
[78/224] Compiling ternary.cpp
[79/224] Compiling sort.cpp
[80/224] Compiling softmax.cpp
[81/224] Compiling compile.cpp
[82/224] Compiling slicing.cpp
[83/224] Compiling scan.cpp
[84/224] Compiling scaled_dot_product_attention.cpp
[85/224] Compiling resident.cpp
[86/224] Compiling rope.cpp
[87/224] Compiling reduce.cpp
[88/224] Compiling metal.cpp
[89/224] Compiling primitives.cpp
[90/224] Compiling normalization.cpp
[91/224] Compiling quantized.cpp
[92/224] Compiling matmul.cpp
[93/224] Compiling logsumexp.cpp
[94/224] Compiling fence.cpp
[95/224] Compiling indexing.cpp
[96/224] Compiling event.cpp
[97/224] Compiling jit_kernels.cpp
[98/224] Compiling distributed.cpp
[99/224] Compiling hadamard.cpp
[100/224] Compiling export.cpp
[101/224] Compiling slicing.cpp
[102/224] Compiling fft.cpp
[103/224] Compiling device.cpp
[104/224] Compiling primitives.cpp
[105/224] Compiling threefry.cpp
[106/224] Compiling allocator.cpp
[107/224] Compiling binary.cpp
[108/224] Compiling copy.cpp
[109/224] Compiling no_cuda.cpp
[110/224] Compiling compiled.cpp
[111/224] Compiling conv.cpp
[112/224] Compiling custom_kernel.cpp
[113/224] Compiling copy.cpp
[114/224] Compiling select.cpp
[115/224] Compiling softmax.cpp
[116/224] Compiling scan.cpp
[117/224] Compiling quantized.cpp
[118/224] Compiling primitives.cpp
[119/224] Compiling qrf.cpp
[120/224] Compiling svd.cpp
[121/224] Compiling sort.cpp
[122/224] Compiling jit_compiler.cpp
[123/224] Compiling unary.cpp
[124/224] Compiling matmul.cpp
[125/224] Compiling logsumexp.cpp
[126/224] Compiling hadamard.cpp
[127/224] Compiling masked_mm.cpp
[128/224] Compiling luf.cpp
[129/224] Compiling inverse.cpp
[130/224] Compiling cblas.cpp
[131/224] Compiling encoder.cpp
[132/224] Compiling eval.cpp
[133/224] Compiling bnns.cpp
[134/224] Compiling reduce.cpp
[135/224] Compiling available.cpp
[136/224] Compiling fft.cpp
[137/224] Compiling distributed.cpp
[138/224] Compiling indexing.cpp
[139/224] Compiling eigh.cpp
[140/224] Compiling eig.cpp
[141/224] Compiling slicing.cpp
[142/224] Compiling utils.cpp
[143/224] Compiling reduce.cpp
[144/224] Compiling arg_reduce.cpp
[145/224] Compiling cholesky.cpp
[146/224] Compiling utils.cpp
[147/224] Compiling unary_ops.cpp
[148/224] Compiling unary.cpp
[149/224] Compiling broadcasting.cpp
[150/224] Compiling ternary_ops.cpp
[151/224] Compiling ternary.cpp
[152/224] Compiling steel_gemm_splitk.cpp
[153/224] Compiling steel_gemm_segmented.cpp
[154/224] Compiling steel_gemm_masked.cpp
[155/224] Compiling steel_gemm_gather.cpp
[156/224] Compiling load.cpp
[157/224] Compiling allocator.cpp
[158/224] Compiling steel_gemm_fused.cpp
[159/224] Compiling steel_conv_general.cpp
[160/224] Compiling compiled.cpp
[161/224] Compiling steel_conv.cpp
[162/224] Compiling softmax.cpp
[162/224] Compiling sort.cpp
[164/224] Compiling scatter_axis.cpp
[165/224] Compiling reduce_utils.cpp
[166/224] Compiling scan.cpp
[166/224] Compiling scatter.cpp
[168/224] Compiling reduce.cpp
[169/224] Compiling quantized_utils.cpp
[170/224] Compiling logsumexp.cpp
[171/224] Compiling quantized.cpp
[172/224] Compiling masked_scatter.cpp
[173/224] Compiling gemv_masked.cpp
[174/224] Compiling hadamard.cpp
[175/224] Compiling gather_axis.cpp
[175/224] Compiling gemm.cpp
[177/224] Compiling gather_front.cpp
[178/224] Compiling common.cpp
[179/224] Compiling gather.cpp
[180/224] Compiling fp_quantized.cpp
[181/224] Compiling conv.cpp
[182/224] Compiling fft.cpp
[183/224] Compiling copy.cpp
[184/224] Compiling conv.cpp
[185/224] Compiling compiled_preamble.cpp
[186/224] Compiling binary_two.cpp
[187/224] Compiling binary_ops.cpp
[188/224] Compiling binary.cpp
[189/224] Compiling arange.cpp
[190/224] Compiling copy.cpp
[191/224] Compiling array.cpp
[192/224] Compiling version.cpp
[193/224] Compiling string.cpp
[194/224] Compiling stream.cpp
[195/224] Compiling transforms_impl.cpp
[196/224] Compiling transforms.cpp
[197/224] Compiling vector.cpp
[198/224] Compiling random.cpp
[199/224] Compiling compiled_conditional.cpp
[200/224] Compiling ops.cpp
[201/224] Compiling memory.cpp
[202/224] Compiling metal.cpp
[203/224] Compiling linalg.cpp
[204/224] Compiling io_types.cpp
[205/224] Compiling map.cpp
[206/224] Compiling io.cpp
[207/224] Compiling device.cpp
[208/224] Compiling format.cc
[209/224] Compiling closure.cpp
[210/224] Compiling array.cpp
[211/224] Compiling binary.cpp
[213/258] Emitting module MLX
[214/261] Compiling MLX Transforms+Internal.swift
[215/261] Compiling MLX Transforms+Vmap.swift
[216/261] Compiling MLX Transforms.swift
[217/261] Compiling MLX ArrayAt.swift
[218/261] Compiling MLX Cmlx+Util.swift
[219/261] Compiling MLX DType.swift
[220/261] Compiling MLX Device.swift
[221/261] Compiling MLX ErrorHandler.swift
[222/261] Compiling MLX Export.swift
[223/261] Compiling MLX FFT.swift
[224/261] Compiling MLX Factory.swift
[225/261] Compiling MLX MLXFastKernel.swift
[226/261] Compiling MLX Memory.swift
[227/261] Compiling MLX Nested.swift
[228/261] Compiling MLX Ops+Array.swift
[229/261] Compiling MLX MLXArray+Ops.swift
/Users/admin/builder/spi-builder-workspace/Source/Cmlx/include/mlx/c/array.h:325:1: note: built-in type 'Complex' not supported
323 |  * Array must be evaluated, otherwise returns NULL.
324 |  */
325 | const float _Complex* mlx_array_data_complex64(const mlx_array arr);
    | `- note: built-in type 'Complex' not supported
326 |
327 | #ifdef HAS_FLOAT16
[230/261] Compiling MLX MLXArray.swift
/Users/admin/builder/spi-builder-workspace/Source/Cmlx/include/mlx/c/array.h:325:1: note: built-in type 'Complex' not supported
323 |  * Array must be evaluated, otherwise returns NULL.
324 |  */
325 | const float _Complex* mlx_array_data_complex64(const mlx_array arr);
    | `- note: built-in type 'Complex' not supported
326 |
327 | #ifdef HAS_FLOAT16
[231/261] Compiling MLX MLXCustomFunction.swift
/Users/admin/builder/spi-builder-workspace/Source/Cmlx/include/mlx/c/array.h:325:1: note: built-in type 'Complex' not supported
323 |  * Array must be evaluated, otherwise returns NULL.
324 |  */
325 | const float _Complex* mlx_array_data_complex64(const mlx_array arr);
    | `- note: built-in type 'Complex' not supported
326 |
327 | #ifdef HAS_FLOAT16
[232/261] Compiling MLX MLXFast.swift
/Users/admin/builder/spi-builder-workspace/Source/Cmlx/include/mlx/c/array.h:325:1: note: built-in type 'Complex' not supported
323 |  * Array must be evaluated, otherwise returns NULL.
324 |  */
325 | const float _Complex* mlx_array_data_complex64(const mlx_array arr);
    | `- note: built-in type 'Complex' not supported
326 |
327 | #ifdef HAS_FLOAT16
[233/261] Compiling MLX Random.swift
[234/261] Compiling MLX State.swift
[235/261] Compiling MLX Stream.swift
[236/261] Compiling MLX Foundation+Util.swift
[237/261] Compiling MLX GPU+Metal.swift
[238/261] Compiling MLX IO.swift
[239/261] Compiling MLX Linalg.swift
[240/261] Compiling MLX Ops.swift
[241/261] Compiling MLX ParameterTypes.swift
[242/261] Compiling MLX Protocols.swift
[243/261] Compiling MLX Transforms+Compile.swift
[244/261] Compiling MLX Transforms+Eval.swift
[245/261] Compiling MLX Transforms+Grad.swift
[246/261] Compiling MLX MLXArray+Bytes.swift
[247/261] Compiling MLX MLXArray+Indexing.swift
[248/261] Compiling MLX MLXArray+Init.swift
[249/261] Compiling MLX MLXArray+Metal.swift
[250/278] Compiling MLXLinalg Linalg.swift
[251/278] Emitting module MLXFast
[252/278] Compiling MLXFast MLXFast.swift
[253/278] Compiling MLXFast MLXFastKernel.swift
[254/278] Emitting module MLXLinalg
[255/278] Compiling MLXFFT FFT.swift
[256/278] Emitting module MLXFFT
[257/278] Compiling CustomFunctionExampleSimple CustomFunctionExampleSimple.swift
[258/278] Emitting module CustomFunctionExampleSimple
[259/278] Compiling Example1 Example1.swift
[260/278] Emitting module Example1
[260/278] Write Objects.LinkFileList
[263/278] Compiling MLXRandom Random.swift
[264/278] Emitting module MLXRandom
[265/278] Compiling CustomFunctionExample CustomFunctionExample.swift
[266/278] Emitting module CustomFunctionExample
[266/278] Write Objects.LinkFileList
[268/278] Compiling Tutorial Tutorial.swift
[269/278] Emitting module Tutorial
[269/278] Write Objects.LinkFileList
[271/296] Compiling MLXNN Containers.swift
[272/296] Compiling MLXNN Convolution.swift
[273/296] Compiling MLXNN ConvolutionTransposed.swift
[274/296] Compiling MLXNN Dropout.swift
[275/297] Compiling MLXNN Upsample.swift
[276/297] Emitting module MLXNN
[277/297] Compiling MLXNN Activations.swift
[278/297] Compiling MLXNN Cache.swift
[279/297] Compiling MLXNN ValueAndGrad.swift
[280/297] Compiling MLXNN Recurrent.swift
[281/297] Compiling MLXNN Transformer.swift
[282/297] Compiling MLXNN PositionalEncoding.swift
[283/297] Compiling MLXNN Quantized.swift
[284/297] Compiling MLXNN Normalization.swift
[285/297] Compiling MLXNN Pooling.swift
[286/297] Compiling MLXNN Embedding.swift
[287/297] Compiling MLXNN Linear.swift
[288/297] Compiling MLXNN Losses.swift
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1377:34: warning: conditional downcast from 'T?' to 'T' does nothing
1375 |             // note: this gives a warning but it does in fact do something
1376 |             // in the case where this is e.g. ParameterInfo<MLXArray?>
1377 |             if let value = value as? T {
     |                                  `- warning: conditional downcast from 'T?' to 'T' does nothing
1378 |                 return value
1379 |             } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1490:36: warning: conditional downcast from 'T?' to 'T' does nothing
1488 |             // note: this gives a warning but it does in fact do something
1489 |             // in the case where this is e.g. ModuleInfo<Linear?>
1490 |             if let module = module as? T {
     |                                    `- warning: conditional downcast from 'T?' to 'T' does nothing
1491 |                 return module
1492 |             } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:288:13: warning: default will never be executed
 286 |                 return isAllNone ? .none : .array(result)
 287 |
 288 |             default:
     |             `- warning: default will never be executed
 289 |                 fatalError("Unexpected leaf \(vk) = \(v)")
 290 |             }
[289/297] Compiling MLXNN Module.swift
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1377:34: warning: conditional downcast from 'T?' to 'T' does nothing
1375 |             // note: this gives a warning but it does in fact do something
1376 |             // in the case where this is e.g. ParameterInfo<MLXArray?>
1377 |             if let value = value as? T {
     |                                  `- warning: conditional downcast from 'T?' to 'T' does nothing
1378 |                 return value
1379 |             } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1490:36: warning: conditional downcast from 'T?' to 'T' does nothing
1488 |             // note: this gives a warning but it does in fact do something
1489 |             // in the case where this is e.g. ModuleInfo<Linear?>
1490 |             if let module = module as? T {
     |                                    `- warning: conditional downcast from 'T?' to 'T' does nothing
1491 |                 return module
1492 |             } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:288:13: warning: default will never be executed
 286 |                 return isAllNone ? .none : .array(result)
 287 |
 288 |             default:
     |             `- warning: default will never be executed
 289 |                 fatalError("Unexpected leaf \(vk) = \(v)")
 290 |             }
[290/299] Compiling MLXOptimizers Optimizers.swift
[291/299] Emitting module MLXOptimizers
[291/299] Linking CustomFunctionExample
[292/299] Linking Example1
[293/299] Linking Tutorial
[294/299] Linking CustomFunctionExampleSimple
[295/299] Applying Example1
[296/299] Applying CustomFunctionExample
[297/299] Applying Tutorial
[298/299] Applying CustomFunctionExampleSimple
Build complete! (33.63s)
warning: 'spi-builder-workspace': found 3 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExample.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Example1.swift
warning: 'spi-builder-workspace': found 3 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExample.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Tutorial.swift
warning: 'spi-builder-workspace': found 3 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Tutorial.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExample.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Example1.swift
warning: 'spi-builder-workspace': found 3 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Example1.swift
    /Users/admin/builder/spi-builder-workspace/Source/Examples/Tutorial.swift
Build complete.
{
  "cxx_language_standard" : "gnu++17",
  "dependencies" : [
    {
      "identity" : "swift-numerics",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-numerics"
    }
  ],
  "manifest_display_name" : "mlx-swift",
  "name" : "mlx-swift",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "14.0"
    },
    {
      "name" : "ios",
      "version" : "17.0"
    },
    {
      "name" : "tvos",
      "version" : "17.0"
    },
    {
      "name" : "visionos",
      "version" : "1.0"
    }
  ],
  "products" : [
    {
      "name" : "MLX",
      "targets" : [
        "MLX"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXRandom",
      "targets" : [
        "MLXRandom"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXNN",
      "targets" : [
        "MLXNN"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXOptimizers",
      "targets" : [
        "MLXOptimizers"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXFFT",
      "targets" : [
        "MLXFFT"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXLinalg",
      "targets" : [
        "MLXLinalg"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MLXFast",
      "targets" : [
        "MLXFast"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Tutorial",
      "targets" : [
        "Tutorial"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "Example1",
      "targets" : [
        "Example1"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "CustomFunctionExampleSimple",
      "targets" : [
        "CustomFunctionExampleSimple"
      ],
      "type" : {
        "executable" : null
      }
    },
    {
      "name" : "CustomFunctionExample",
      "targets" : [
        "CustomFunctionExample"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Tutorial",
      "module_type" : "SwiftTarget",
      "name" : "Tutorial",
      "path" : "Source/Examples",
      "product_memberships" : [
        "Tutorial"
      ],
      "sources" : [
        "Tutorial.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "MLXTests",
      "module_type" : "SwiftTarget",
      "name" : "MLXTests",
      "path" : "Tests/MLXTests",
      "sources" : [
        "ArrayAtTests.swift",
        "DTypeTests.swift",
        "ErrorTests.swift",
        "ExportTests.swift",
        "IntegrationTests.swift",
        "LinalgTests.swift",
        "LossTests.swift",
        "MLXArray+IndexingTests.swift",
        "MLXArray+InitTests.swift",
        "MLXArray+OpsTests.swift",
        "MLXArrayTests.swift",
        "MLXFastKernelTests.swift",
        "MLXRandomTests.swift",
        "MemoryTests.swift",
        "ModuleTests.swift",
        "NestedTests.swift",
        "OpsTests.swift",
        "OptimizerTests.swift",
        "PoolingTests.swift",
        "QuantizationTests.swift",
        "SaveTests.swift",
        "StreamTests.swift",
        "SubclassTests.swift",
        "TransformTests.swift",
        "UpsampleTests.swift",
        "Utils.swift"
      ],
      "target_dependencies" : [
        "MLX",
        "MLXRandom",
        "MLXNN",
        "MLXOptimizers",
        "MLXFFT",
        "MLXLinalg",
        "MLXFast"
      ],
      "type" : "test"
    },
    {
      "c99name" : "MLXRandom",
      "module_type" : "SwiftTarget",
      "name" : "MLXRandom",
      "path" : "Source/MLXRandom",
      "product_memberships" : [
        "MLXRandom",
        "MLXNN",
        "MLXOptimizers"
      ],
      "sources" : [
        "Random.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLXOptimizers",
      "module_type" : "SwiftTarget",
      "name" : "MLXOptimizers",
      "path" : "Source/MLXOptimizers",
      "product_memberships" : [
        "MLXOptimizers"
      ],
      "sources" : [
        "Optimizers.swift"
      ],
      "target_dependencies" : [
        "MLX",
        "MLXNN"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLXNN",
      "module_type" : "SwiftTarget",
      "name" : "MLXNN",
      "path" : "Source/MLXNN",
      "product_memberships" : [
        "MLXNN",
        "MLXOptimizers"
      ],
      "sources" : [
        "Activations.swift",
        "Cache.swift",
        "Containers.swift",
        "Convolution.swift",
        "ConvolutionTransposed.swift",
        "Dropout.swift",
        "Embedding.swift",
        "Linear.swift",
        "Losses.swift",
        "Module.swift",
        "Normalization.swift",
        "Pooling.swift",
        "PositionalEncoding.swift",
        "Quantized.swift",
        "Recurrent.swift",
        "Transformer.swift",
        "Upsample.swift",
        "ValueAndGrad.swift"
      ],
      "target_dependencies" : [
        "MLX",
        "MLXRandom",
        "MLXFast"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLXLinalg",
      "module_type" : "SwiftTarget",
      "name" : "MLXLinalg",
      "path" : "Source/MLXLinalg",
      "product_memberships" : [
        "MLXLinalg"
      ],
      "sources" : [
        "Linalg.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLXFast",
      "module_type" : "SwiftTarget",
      "name" : "MLXFast",
      "path" : "Source/MLXFast",
      "product_memberships" : [
        "MLXNN",
        "MLXOptimizers",
        "MLXFast"
      ],
      "sources" : [
        "MLXFast.swift",
        "MLXFastKernel.swift"
      ],
      "target_dependencies" : [
        "MLX",
        "Cmlx"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLXFFT",
      "module_type" : "SwiftTarget",
      "name" : "MLXFFT",
      "path" : "Source/MLXFFT",
      "product_memberships" : [
        "MLXFFT"
      ],
      "sources" : [
        "FFT.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MLX",
      "module_type" : "SwiftTarget",
      "name" : "MLX",
      "path" : "Source/MLX",
      "product_dependencies" : [
        "Numerics"
      ],
      "product_memberships" : [
        "MLX",
        "MLXRandom",
        "MLXNN",
        "MLXOptimizers",
        "MLXFFT",
        "MLXLinalg",
        "MLXFast",
        "Tutorial",
        "Example1",
        "CustomFunctionExampleSimple",
        "CustomFunctionExample"
      ],
      "sources" : [
        "ArrayAt.swift",
        "Cmlx+Util.swift",
        "DType.swift",
        "Device.swift",
        "ErrorHandler.swift",
        "Export.swift",
        "FFT.swift",
        "Factory.swift",
        "Foundation+Util.swift",
        "GPU+Metal.swift",
        "IO.swift",
        "Linalg.swift",
        "MLXArray+Bytes.swift",
        "MLXArray+Indexing.swift",
        "MLXArray+Init.swift",
        "MLXArray+Metal.swift",
        "MLXArray+Ops.swift",
        "MLXArray.swift",
        "MLXCustomFunction.swift",
        "MLXFast.swift",
        "MLXFastKernel.swift",
        "Memory.swift",
        "Nested.swift",
        "Ops+Array.swift",
        "Ops.swift",
        "ParameterTypes.swift",
        "Protocols.swift",
        "Random.swift",
        "State.swift",
        "Stream.swift",
        "Transforms+Compile.swift",
        "Transforms+Eval.swift",
        "Transforms+Grad.swift",
        "Transforms+Internal.swift",
        "Transforms+Vmap.swift",
        "Transforms.swift"
      ],
      "target_dependencies" : [
        "Cmlx"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Example1",
      "module_type" : "SwiftTarget",
      "name" : "Example1",
      "path" : "Source/Examples",
      "product_memberships" : [
        "Example1"
      ],
      "sources" : [
        "Example1.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "CustomFunctionExampleSimple",
      "module_type" : "SwiftTarget",
      "name" : "CustomFunctionExampleSimple",
      "path" : "Source/Examples",
      "product_memberships" : [
        "CustomFunctionExampleSimple"
      ],
      "sources" : [
        "CustomFunctionExampleSimple.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "CustomFunctionExample",
      "module_type" : "SwiftTarget",
      "name" : "CustomFunctionExample",
      "path" : "Source/Examples",
      "product_memberships" : [
        "CustomFunctionExample"
      ],
      "sources" : [
        "CustomFunctionExample.swift"
      ],
      "target_dependencies" : [
        "MLX"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "CmlxTests",
      "module_type" : "SwiftTarget",
      "name" : "CmlxTests",
      "path" : "Tests/CmlxTests",
      "sources" : [
        "CmlxTests.swift"
      ],
      "target_dependencies" : [
        "Cmlx"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Cmlx",
      "module_type" : "ClangTarget",
      "name" : "Cmlx",
      "path" : "Source/Cmlx",
      "product_memberships" : [
        "MLX",
        "MLXRandom",
        "MLXNN",
        "MLXOptimizers",
        "MLXFFT",
        "MLXLinalg",
        "MLXFast",
        "Tutorial",
        "Example1",
        "CustomFunctionExampleSimple",
        "CustomFunctionExample"
      ],
      "sources" : [
        "fmt/src/format.cc",
        "mlx-c/mlx/c/array.cpp",
        "mlx-c/mlx/c/closure.cpp",
        "mlx-c/mlx/c/compile.cpp",
        "mlx-c/mlx/c/device.cpp",
        "mlx-c/mlx/c/error.cpp",
        "mlx-c/mlx/c/export.cpp",
        "mlx-c/mlx/c/fast.cpp",
        "mlx-c/mlx/c/fft.cpp",
        "mlx-c/mlx/c/io.cpp",
        "mlx-c/mlx/c/io_types.cpp",
        "mlx-c/mlx/c/linalg.cpp",
        "mlx-c/mlx/c/map.cpp",
        "mlx-c/mlx/c/memory.cpp",
        "mlx-c/mlx/c/metal.cpp",
        "mlx-c/mlx/c/ops.cpp",
        "mlx-c/mlx/c/random.cpp",
        "mlx-c/mlx/c/stream.cpp",
        "mlx-c/mlx/c/string.cpp",
        "mlx-c/mlx/c/transforms.cpp",
        "mlx-c/mlx/c/transforms_impl.cpp",
        "mlx-c/mlx/c/vector.cpp",
        "mlx-c/mlx/c/version.cpp",
        "mlx-conditional/compiled_conditional.cpp",
        "mlx-generated/arange.cpp",
        "mlx-generated/binary.cpp",
        "mlx-generated/binary_ops.cpp",
        "mlx-generated/binary_two.cpp",
        "mlx-generated/compiled_preamble.cpp",
        "mlx-generated/conv.cpp",
        "mlx-generated/copy.cpp",
        "mlx-generated/fft.cpp",
        "mlx-generated/fp_quantized.cpp",
        "mlx-generated/gather.cpp",
        "mlx-generated/gather_axis.cpp",
        "mlx-generated/gather_front.cpp",
        "mlx-generated/gemm.cpp",
        "mlx-generated/gemv_masked.cpp",
        "mlx-generated/hadamard.cpp",
        "mlx-generated/logsumexp.cpp",
        "mlx-generated/masked_scatter.cpp",
        "mlx-generated/quantized.cpp",
        "mlx-generated/quantized_utils.cpp",
        "mlx-generated/reduce.cpp",
        "mlx-generated/reduce_utils.cpp",
        "mlx-generated/scan.cpp",
        "mlx-generated/scatter.cpp",
        "mlx-generated/scatter_axis.cpp",
        "mlx-generated/softmax.cpp",
        "mlx-generated/sort.cpp",
        "mlx-generated/steel_conv.cpp",
        "mlx-generated/steel_conv_general.cpp",
        "mlx-generated/steel_gemm_fused.cpp",
        "mlx-generated/steel_gemm_gather.cpp",
        "mlx-generated/steel_gemm_masked.cpp",
        "mlx-generated/steel_gemm_segmented.cpp",
        "mlx-generated/steel_gemm_splitk.cpp",
        "mlx-generated/ternary.cpp",
        "mlx-generated/ternary_ops.cpp",
        "mlx-generated/unary.cpp",
        "mlx-generated/unary_ops.cpp",
        "mlx-generated/utils.cpp",
        "mlx/mlx/allocator.cpp",
        "mlx/mlx/array.cpp",
        "mlx/mlx/backend/common/broadcasting.cpp",
        "mlx/mlx/backend/common/common.cpp",
        "mlx/mlx/backend/common/compiled.cpp",
        "mlx/mlx/backend/common/load.cpp",
        "mlx/mlx/backend/common/reduce.cpp",
        "mlx/mlx/backend/common/slicing.cpp",
        "mlx/mlx/backend/common/utils.cpp",
        "mlx/mlx/backend/cpu/arg_reduce.cpp",
        "mlx/mlx/backend/cpu/available.cpp",
        "mlx/mlx/backend/cpu/binary.cpp",
        "mlx/mlx/backend/cpu/cholesky.cpp",
        "mlx/mlx/backend/cpu/conv.cpp",
        "mlx/mlx/backend/cpu/copy.cpp",
        "mlx/mlx/backend/cpu/distributed.cpp",
        "mlx/mlx/backend/cpu/eig.cpp",
        "mlx/mlx/backend/cpu/eigh.cpp",
        "mlx/mlx/backend/cpu/encoder.cpp",
        "mlx/mlx/backend/cpu/eval.cpp",
        "mlx/mlx/backend/cpu/fft.cpp",
        "mlx/mlx/backend/cpu/gemms/bnns.cpp",
        "mlx/mlx/backend/cpu/gemms/cblas.cpp",
        "mlx/mlx/backend/cpu/hadamard.cpp",
        "mlx/mlx/backend/cpu/indexing.cpp",
        "mlx/mlx/backend/cpu/inverse.cpp",
        "mlx/mlx/backend/cpu/jit_compiler.cpp",
        "mlx/mlx/backend/cpu/logsumexp.cpp",
        "mlx/mlx/backend/cpu/luf.cpp",
        "mlx/mlx/backend/cpu/masked_mm.cpp",
        "mlx/mlx/backend/cpu/matmul.cpp",
        "mlx/mlx/backend/cpu/primitives.cpp",
        "mlx/mlx/backend/cpu/qrf.cpp",
        "mlx/mlx/backend/cpu/quantized.cpp",
        "mlx/mlx/backend/cpu/reduce.cpp",
        "mlx/mlx/backend/cpu/scan.cpp",
        "mlx/mlx/backend/cpu/select.cpp",
        "mlx/mlx/backend/cpu/softmax.cpp",
        "mlx/mlx/backend/cpu/sort.cpp",
        "mlx/mlx/backend/cpu/svd.cpp",
        "mlx/mlx/backend/cpu/threefry.cpp",
        "mlx/mlx/backend/cpu/unary.cpp",
        "mlx/mlx/backend/cuda/no_cuda.cpp",
        "mlx/mlx/backend/gpu/copy.cpp",
        "mlx/mlx/backend/gpu/primitives.cpp",
        "mlx/mlx/backend/gpu/slicing.cpp",
        "mlx/mlx/backend/metal/allocator.cpp",
        "mlx/mlx/backend/metal/binary.cpp",
        "mlx/mlx/backend/metal/compiled.cpp",
        "mlx/mlx/backend/metal/conv.cpp",
        "mlx/mlx/backend/metal/copy.cpp",
        "mlx/mlx/backend/metal/custom_kernel.cpp",
        "mlx/mlx/backend/metal/device.cpp",
        "mlx/mlx/backend/metal/distributed.cpp",
        "mlx/mlx/backend/metal/eval.cpp",
        "mlx/mlx/backend/metal/event.cpp",
        "mlx/mlx/backend/metal/fence.cpp",
        "mlx/mlx/backend/metal/fft.cpp",
        "mlx/mlx/backend/metal/hadamard.cpp",
        "mlx/mlx/backend/metal/indexing.cpp",
        "mlx/mlx/backend/metal/jit_kernels.cpp",
        "mlx/mlx/backend/metal/logsumexp.cpp",
        "mlx/mlx/backend/metal/matmul.cpp",
        "mlx/mlx/backend/metal/metal.cpp",
        "mlx/mlx/backend/metal/normalization.cpp",
        "mlx/mlx/backend/metal/primitives.cpp",
        "mlx/mlx/backend/metal/quantized.cpp",
        "mlx/mlx/backend/metal/reduce.cpp",
        "mlx/mlx/backend/metal/resident.cpp",
        "mlx/mlx/backend/metal/rope.cpp",
        "mlx/mlx/backend/metal/scaled_dot_product_attention.cpp",
        "mlx/mlx/backend/metal/scan.cpp",
        "mlx/mlx/backend/metal/slicing.cpp",
        "mlx/mlx/backend/metal/softmax.cpp",
        "mlx/mlx/backend/metal/sort.cpp",
        "mlx/mlx/backend/metal/ternary.cpp",
        "mlx/mlx/backend/metal/unary.cpp",
        "mlx/mlx/backend/metal/utils.cpp",
        "mlx/mlx/compile.cpp",
        "mlx/mlx/device.cpp",
        "mlx/mlx/distributed/distributed.cpp",
        "mlx/mlx/distributed/mpi/no_mpi.cpp",
        "mlx/mlx/distributed/nccl/no_nccl.cpp",
        "mlx/mlx/distributed/ops.cpp",
        "mlx/mlx/distributed/primitives.cpp",
        "mlx/mlx/distributed/ring/no_ring.cpp",
        "mlx/mlx/dtype.cpp",
        "mlx/mlx/dtype_utils.cpp",
        "mlx/mlx/einsum.cpp",
        "mlx/mlx/export.cpp",
        "mlx/mlx/fast.cpp",
        "mlx/mlx/fft.cpp",
        "mlx/mlx/graph_utils.cpp",
        "mlx/mlx/io/load.cpp",
        "mlx/mlx/io/no_gguf.cpp",
        "mlx/mlx/io/safetensors.cpp",
        "mlx/mlx/linalg.cpp",
        "mlx/mlx/ops.cpp",
        "mlx/mlx/primitives.cpp",
        "mlx/mlx/random.cpp",
        "mlx/mlx/scheduler.cpp",
        "mlx/mlx/transforms.cpp",
        "mlx/mlx/utils.cpp",
        "mlx/mlx/version.cpp"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.12"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/ml-explore/mlx-swift/main
Repository:               ml-explore/mlx-swift
Swift version used:       6.2
        .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.3.0")
Target:                   MLX
Extracting symbol information for 'MLX'...
Finished extracting symbol information for 'MLX'. (2.64s)
Building documentation for 'MLX'...
warning: 'Double.ulpOfOne' doesn't exist at '/MLX/DType/FInfo/eps'
   --> ../DType.swift:127:37-127:52
125 |         /// The difference between 1.0 and the next smallest representable float larger than 1.0
126 |         ///
127 +         /// In Swift this is e.g. ``Double.ulpOfOne``
128 |         public var eps: Double {
129 |             switch dtype {
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/MLX'
   --> Articles/converting-python.md:176:22-176:78
174 | `cumprod` | ``MLX/cumprod(_:axis:reverse:inclusive:stream:)``
175 | `cumsum` | ``MLX/cumsum(_:axis:reverse:inclusive:stream:)``
176 + `dequantize` | ``MLX/dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
177 | `divide` | ``MLX/divide(_:_:stream:)``
178 | `equal` | ``MLX/equal(_:_:stream:)``
warning: 'vmap(_:inAxes:outAxes:)' is ambiguous at '/MLX'
 --> Articles/vmap.md:3:32-3:55
1 | # Vectorization
2 |
3 + Automatic vectorization with ``vmap(_:inAxes:outAxes:)``.
  |                                                       ├─suggestion: Insert '->(MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray) -> MLXArray, inAxes: Int? = 0, outAxes: Int? = 0) -> (MLXArray) -> MLXArray'
  |                                                       ├─suggestion: Insert '->(MLXArray,MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray, MLXArray) -> MLXArray, inAxes: (Int?, Int?) = (0, 0), outAxes: Int? = 0) -> (MLXArray, MLXArray) -> MLXArray'
  |                                                       ╰─suggestion: Insert '->([MLXArray])->[MLXArray]' for 'func vmap(_ f: @escaping ([MLXArray]) -> [MLXArray], inAxes: [Int?] = [0], outAxes: [Int?] = [0]) -> ([MLXArray]) -> [MLXArray]'
4 |
5 | `vmap` transforms a function so that it operates independently over a batch
warning: 'vmap(_:inAxes:outAxes:)' is ambiguous at '/MLX'
  --> Articles/vmap.md:44:25-44:48
42 | ## Nested Mapping
43 |
44 + You can nest calls to ``vmap(_:inAxes:outAxes:)`` to map over multiple axes.
   |                                                ├─suggestion: Insert '->(MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray) -> MLXArray, inAxes: Int? = 0, outAxes: Int? = 0) -> (MLXArray) -> MLXArray'
   |                                                ├─suggestion: Insert '->(MLXArray,MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray, MLXArray) -> MLXArray, inAxes: (Int?, Int?) = (0, 0), outAxes: Int? = 0) -> (MLXArray, MLXArray) -> MLXArray'
   |                                                ╰─suggestion: Insert '->([MLXArray])->[MLXArray]' for 'func vmap(_ f: @escaping ([MLXArray]) -> [MLXArray], inAxes: [Int?] = [0], outAxes: [Int?] = [0]) -> ([MLXArray]) -> [MLXArray]'
45 | Each nested `vmap` introduces another batch dimension in the result.
46 |
warning: 'vmap(_:inAxes:outAxes:)' is ambiguous at '/MLX'
  --> Articles/vmap.md:51:5-51:28
49 | ### Functions
50 |
51 + - ``vmap(_:inAxes:outAxes:)``
   |                            ├─suggestion: Insert '->(MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray) -> MLXArray, inAxes: Int? = 0, outAxes: Int? = 0) -> (MLXArray) -> MLXArray'
   |                            ├─suggestion: Insert '->(MLXArray,MLXArray)->MLXArray' for 'func vmap(_ f: @escaping (MLXArray, MLXArray) -> MLXArray, inAxes: (Int?, Int?) = (0, 0), outAxes: Int? = 0) -> (MLXArray, MLXArray) -> MLXArray'
   |                            ╰─suggestion: Insert '->([MLXArray])->[MLXArray]' for 'func vmap(_ f: @escaping ([MLXArray]) -> [MLXArray], inAxes: [Int?] = [0], outAxes: [Int?] = [0]) -> ([MLXArray]) -> [MLXArray]'
warning: 'convTransposed1d(_:_:stride:padding:dilation:groups:stream:)' doesn't exist at '/MLX/convolution'
  --> Organization/convolution.md:16:5-16:65
14 | - ``convGeneral(_:_:strides:padding:kernelDilation:inputDilation:groups:flip:stream:)-9t1sj``
15 | - ``convGeneral(_:_:strides:padding:kernelDilation:inputDilation:groups:flip:stream:)-6j1nr``
16 + - ``convTransposed1d(_:_:stride:padding:dilation:groups:stream:)``
17 | - ``convTransposed2d(_:_:stride:padding:dilation:groups:stream:)``
18 | - ``convTransposed3d(_:_:stride:padding:dilation:groups:stream:)``
warning: 'convTransposed2d(_:_:stride:padding:dilation:groups:stream:)' doesn't exist at '/MLX/convolution'
  --> Organization/convolution.md:17:5-17:65
15 | - ``convGeneral(_:_:strides:padding:kernelDilation:inputDilation:groups:flip:stream:)-6j1nr``
16 | - ``convTransposed1d(_:_:stride:padding:dilation:groups:stream:)``
17 + - ``convTransposed2d(_:_:stride:padding:dilation:groups:stream:)``
18 | - ``convTransposed3d(_:_:stride:padding:dilation:groups:stream:)``
19 | - ``convolve(_:_:mode:stream:)``
warning: 'convTransposed3d(_:_:stride:padding:dilation:groups:stream:)' doesn't exist at '/MLX/convolution'
  --> Organization/convolution.md:18:5-18:65
16 | - ``convTransposed1d(_:_:stride:padding:dilation:groups:stream:)``
17 | - ``convTransposed2d(_:_:stride:padding:dilation:groups:stream:)``
18 + - ``convTransposed3d(_:_:stride:padding:dilation:groups:stream:)``
19 | - ``convolve(_:_:mode:stream:)``
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/free-functions'
   --> free-functions.md:200:5-200:61
198 | - ``quantized(_:groupSize:bits:mode:stream:)``
199 | - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
200 + - ``dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
201 |
202 | ### Evaluation and Transformation
warning: Parameter 'dtor' is missing documentation
 --> ../ErrorHandler.swift:7:102-7:102
5 | /// - Parameters:
6 | ///   - handler: An error handler. Pass nil to reset to the default error handler. Pass
7 + ///   ``fatalErrorHandler`` to make the error handler call `fatalError` for improved Xcode debugging.
  |                                                                                                      ╰─suggestion: Document 'dtor' parameter
8 | @available(*, deprecated, message: "please use withErrorHandler() or withError()")
9 | public func setErrorHandler(
warning: Parameter 'data' is missing documentation
 --> ../ErrorHandler.swift:7:102-7:102
5 | /// - Parameters:
6 | ///   - handler: An error handler. Pass nil to reset to the default error handler. Pass
7 + ///   ``fatalErrorHandler`` to make the error handler call `fatalError` for improved Xcode debugging.
  |                                                                                                      ╰─suggestion: Document 'data' parameter
8 | @available(*, deprecated, message: "please use withErrorHandler() or withError()")
9 | public func setErrorHandler(
warning: 'peakMemory' doesn't exist at '/MLX/GPU/Snapshot'
   --> ../GPU+Metal.swift:198:24-198:34
196 |     /// Reset the peak memory to zero.
197 |     ///
198 +     /// See ``Snapshot/peakMemory``.
199 |     public static func resetPeakMemory() {
200 |         mlx_reset_peak_memory()
warning: '8zljj' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLX'
   --> ../Linalg.swift:509:42-509:48
507 | ///
508 | /// ### See Also
509 + /// - ``norm(_:ord:axes:keepDims:stream:)-8zljj``
    |                                          ╰─suggestion: Remove '-8zljj' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
510 | public func norm(
511 |     _ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axis: Int, keepDims: Bool = false,
warning: '8zljj' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLX'
   --> ../Linalg.swift:529:44-529:50
527 | /// Matrix or vector norm.
528 | ///
529 + /// See ``norm(_:ord:axes:keepDims:stream:)-8zljj``
    |                                            ╰─suggestion: Remove '-8zljj' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
530 | public func norm(
531 |     _ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axis: IntOrArray? = nil,
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:1804:9-1804:9
1802 |     ///     - start: first dimension to flatten
1803 |     ///     - end: last dimension to flatten
1804 +     ///
     |         ╰─suggestion: Document 'stream' parameter
1805 |     /// ### See Also
1806 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2504:9-2504:9
2502 |     ///     - parts: array is split into that many sections of equal size. It is a fatal error if this is not possible
2503 |     ///     - axis: axis to split along
2504 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2505 |     /// ### See Also
2506 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2529:9-2529:9
2527 |     /// - Parameters:
2528 |     ///     - axis: axis to split along
2529 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2530 |     /// ### See Also
2531 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2548:9-2548:9
2546 |     ///     - indices: the indices of the start of each subarray along the given axis
2547 |     ///     - axis: axis to split along
2548 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2549 |     /// ### See Also
2550 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2588:9-2588:9
2586 |     /// - Parameters:
2587 |     ///     - axes: axes to remove
2588 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2589 |     /// ### See Also
2590 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2604:9-2604:9
2602 |     /// - Parameters:
2603 |     ///     - axis: axis to remove
2604 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2605 |     /// ### See Also
2606 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2760:9-2760:9
2758 |     /// - Parameters:
2759 |     ///     - axes: Specifies the source axis for each axis in the new array
2760 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2761 |     /// ### See Also
2762 |     /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2821:9-2821:9
2819 |     ///     - keepDims: if `true` keep the reduces axes as singleton dimensions
2820 |     ///     - ddof: the divisor to compute the variance is `N - ddof`
2821 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2822 |     /// ### See Also
2823 |     /// - <doc:reduction>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2841:9-2841:9
2839 |     ///     - keepDims: if `true` keep the reduces axis as singleton dimensions
2840 |     ///     - ddof: the divisor to compute the variance is `N - ddof`
2841 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2842 |     /// ### See Also
2843 |     /// - <doc:reduction>
warning: Parameter 'stream' is missing documentation
    --> ../MLXArray+Ops.swift:2861:9-2861:9
2859 |     ///     - ddof: the divisor to compute the variance is `N - ddof`
2860 |     ///
2861 +     ///
     |         ╰─suggestion: Document 'stream' parameter
2862 |     /// ### See Also
2863 |     /// - <doc:reduction>
warning: 'subscript(indices:stream:)' doesn't exist at '/MLX/MLXArray/at'
   --> ../MLXArray.swift:604:13-604:39
602 |     ///
603 |     /// ### See Also
604 +     /// - ``subscript(indices:stream:)``
605 |     /// - ``ArrayAtIndices``
606 |     public var at: ArrayAt { ArrayAt(array: self) }
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1492:5-1492:5
1490 | ///     - parts: array is split into that many sections of equal size. It is a fatal error if this is not possible
1491 | ///     - axis: axis to split along
1492 + ///
     |     ╰─suggestion: Document 'stream' parameter
1493 | /// ### See Also
1494 | /// - <doc:shapes>
warning: Parameter 'parts' not found in function declaration
    --> ../Ops+Array.swift:1519:9-1519:115
1517 | /// - Parameters:
1518 | ///     - array: input array
1519 + ///     - parts: array is split into that many sections of equal size. It is a fatal error if this is not possible
     |         ╰─suggestion: Remove 'parts' parameter documentation
1520 | ///     - axis: axis to split along
1521 | ///
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1521:5-1521:5
1519 | ///     - parts: array is split into that many sections of equal size. It is a fatal error if this is not possible
1520 | ///     - axis: axis to split along
1521 + ///
     |     ╰─suggestion: Document 'stream' parameter
1522 | /// ### See Also
1523 | /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1543:5-1543:5
1541 | ///     - indices: the indices of the start of each subarray along the given axis
1542 | ///     - axis: axis to split along
1543 + ///
     |     ╰─suggestion: Document 'stream' parameter
1544 | /// ### See Also
1545 | /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1584:5-1584:5
1582 | ///     - array: input array
1583 | ///     - axes: axes to remove
1584 + ///
     |     ╰─suggestion: Document 'stream' parameter
1585 | /// ### See Also
1586 | /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1602:5-1602:5
1600 | ///     - array: input array
1601 | ///     - axis: axis to remove
1602 + ///
     |     ╰─suggestion: Document 'stream' parameter
1603 | /// ### See Also
1604 | /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1767:5-1767:5
1765 | ///     - array: input array
1766 | ///     - axes: Specifies the source axis for each axis in the new array
1767 + ///
     |     ╰─suggestion: Document 'stream' parameter
1768 | /// ### See Also
1769 | /// - <doc:shapes>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1834:5-1834:5
1832 | ///     - keepDims: if `true` keep the reduces axes as singleton dimensions
1833 | ///     - ddof: the divisor to compute the variance is `N - ddof`
1834 + ///
     |     ╰─suggestion: Document 'stream' parameter
1835 | /// ### See Also
1836 | /// - <doc:reduction>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1856:5-1856:5
1854 | ///     - keepDims: if `true` keep the reduces axis as singleton dimensions
1855 | ///     - ddof: the divisor to compute the variance is `N - ddof`
1856 + ///
     |     ╰─suggestion: Document 'stream' parameter
1857 | /// ### See Also
1858 | /// - <doc:reduction>
warning: Parameter 'stream' is missing documentation
    --> ../Ops+Array.swift:1877:5-1877:5
1875 | ///     - keepDims: if `true` keep the reduces axes as singleton dimensions
1876 | ///     - ddof: the divisor to compute the variance is `N - ddof`
1877 + ///
     |     ╰─suggestion: Document 'stream' parameter
1878 | /// ### See Also
1879 | /// - <doc:reduction>
warning: Parameter 'array' is missing documentation
    --> ../Ops+Array.swift:1903:5-1903:5
1901 | ///   - dtype: type to change to
     |       ╰─suggestion: Document 'array' parameter
1902 | ///   - stream: stream or device to evaluate on
1903 + ///
1904 | /// ### See Also
1905 | ///- ``MLXArray/view(dtype:stream:)``
warning: Parameter 'strides' is missing documentation
   --> ../Ops.swift:358:5-358:5
356 | ///     - shape: shape of the resulting array.  If not specified it will keep the same shape
357 | ///     - stream: stream or device to evaluate on
    |         ╰─suggestion: Document 'strides' parameter
358 + ///
359 | /// ### See Also
360 | /// - <doc:shapes>
warning: Parameter 'offset' is missing documentation
   --> ../Ops.swift:358:5-358:5
356 | ///     - shape: shape of the resulting array.  If not specified it will keep the same shape
357 | ///     - stream: stream or device to evaluate on
    |         ╰─suggestion: Document 'offset' parameter
358 + ///
359 | /// ### See Also
360 | /// - <doc:shapes>
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/QuantizationMode/affine'
    --> ../Ops.swift:1019:13-1019:69
1017 |     ///
1018 |     /// ### See Also
1019 +     /// - ``dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
1020 |     /// - ``quantized(_:groupSize:bits:mode:stream:)``
1021 |     /// - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/QuantizationMode/mxfp4'
    --> ../Ops.swift:1033:13-1033:69
1031 |     ///
1032 |     /// ### See Also
1033 +     /// - ``dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
1034 |     /// - ``quantized(_:groupSize:bits:mode:stream:)``
1035 |     /// - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
warning: Parameter 'dtype' is missing documentation
    --> ../Ops.swift:1053:5-1053:5
1051 | ///   - mode: The quantization mode used. Either `.affine` for standard affine quantization or `.mxfp4` for MXFP4 format. Default is `.affine`
1052 | ///   - stream: Stream or device to evaluate on
     |       ╰─suggestion: Document 'dtype' parameter
1053 + ///
1054 | /// ### See Also
1055 | /// - ``quantized(_:groupSize:bits:mode:stream:)``
warning: Parameter 'stream' is missing documentation
    --> ../Ops.swift:1271:5-1271:5
1269 | ///   - array: input array
1270 | ///     - stream: stream or device to evaluate on
1271 + ///
     |     ╰─suggestion: Document 'stream' parameter
1272 | /// ### See Also
1273 | /// - <doc:arithmetic>
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/quantized(_:groupSize:bits:mode:stream:)'
    --> ../Ops.swift:2185:9-2185:65
2183 | ///
2184 | /// ### See Also
2185 + /// - ``dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
2186 | /// - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
2187 | public func quantized(
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)'
    --> ../Ops.swift:2224:9-2224:65
2222 | ///
2223 | /// ### See Also
2224 + /// - ``dequantized(_:scales:biases:groupSize:bits:mode:stream:)``
2225 | /// - ``quantized(_:groupSize:bits:mode:stream:)``
2226 | public func quantizedMatmul(
warning: Parameter 'precise' is missing documentation
    --> ../Ops.swift:2404:5-2404:5
2402 | ///     - array: input array
2403 | ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'precise' parameter
2404 + ///
2405 | /// ### See Also
2406 | /// - <doc:arithmetic>
warning: Parameter 'axes' is missing documentation
    --> ../Ops.swift:2404:5-2404:5
2402 | ///     - array: input array
2403 | ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'axes' parameter
2404 + ///
2405 | /// ### See Also
2406 | /// - <doc:arithmetic>
warning: Parameter 'axis' is missing documentation
    --> ../Ops.swift:2436:5-2436:5
2434 | ///     - array: input array
2435 | ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'axis' parameter
2436 + ///
2437 | /// ### See Also
2438 | /// - <doc:arithmetic>
warning: Parameter 'precise' is missing documentation
    --> ../Ops.swift:2436:5-2436:5
2434 | ///     - array: input array
2435 | ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'precise' parameter
2436 + ///
2437 | /// ### See Also
2438 | /// - <doc:arithmetic>
warning: Parameter 'precise' is missing documentation
    --> ../Ops.swift:2468:5-2468:5
2466 | ///     - array: input array
2467 | ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'precise' parameter
2468 + ///
2469 | /// ### See Also
2470 | /// - ``softmax(_:axes:precise:stream:)``
warning: Parameter 'start_axis' not found in function declaration
    --> ../Ops.swift:2969:11-2969:21
2967 | /// - Parameters:
2968 | ///     - a: input array
2969 + ///     - start_axis: first dim to flatten
     |           ╰─suggestion: Replace 'start_axis' with 'startAxis'
2970 | ///     - end_axis: last dim to flatten
2971 | ///     - stream: stream or device to evaluate on
warning: Parameter 'end_axis' not found in function declaration
    --> ../Ops.swift:2970:11-2970:19
2968 | ///     - a: input array
2969 | ///     - start_axis: first dim to flatten
2970 + ///     - end_axis: last dim to flatten
     |           ╰─suggestion: Replace 'end_axis' with 'endAxis'
2971 | ///     - stream: stream or device to evaluate on
2972 | public func flatten(
warning: Parameter 'startAxis' is missing documentation
    --> ../Ops.swift:2971:50-2971:50
2969 | ///     - start_axis: first dim to flatten
2970 | ///     - end_axis: last dim to flatten
2971 + ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'startAxis' parameter
2972 | public func flatten(
2973 |     _ a: MLXArray, startAxis: Int, endAxis: Int = -1, stream: StreamOrDevice = .default
warning: Parameter 'endAxis' is missing documentation
    --> ../Ops.swift:2971:50-2971:50
2969 | ///     - start_axis: first dim to flatten
2970 | ///     - end_axis: last dim to flatten
2971 + ///     - stream: stream or device to evaluate on
     |         ╰─suggestion: Document 'endAxis' parameter
2972 | public func flatten(
2973 |     _ a: MLXArray, startAxis: Int, endAxis: Int = -1, stream: StreamOrDevice = .default
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:272:26-272:26
270 |     ///   - loc: mean of the distribution
271 |     ///   - scale: standard deviation of the distribution
272 +     ///   - key: PRNG key
    |                          ╰─suggestion: Document 'stream' parameter
273 |     public static func normal<T>(
274 |         _ shape: [Int] = [], type: T.Type = Float.self, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:307:26-307:26
305 |     ///   - loc: mean of the distribution
306 |     ///   - scale: standard deviation of the distribution
307 +     ///   - key: PRNG key
    |                          ╰─suggestion: Document 'stream' parameter
308 |     public static func normal(
309 |         _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:337:26-337:26
335 |     /// shapes of `mean` and `covariance`.
336 |     ///   - dtype: DType of the result
337 +     ///   - key: PRNG key
    |                          ╰─suggestion: Document 'stream' parameter
338 |     public static func multivariateNormal(
339 |         mean: MLXArray, covariance: MLXArray, shape: [Int] = [], dtype: DType = .float32,
warning: Parameter 'key' is missing documentation
   --> ../Random.swift:690:70-690:70
688 |     ///
689 |     /// - Parameters:
690 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'key' parameter
691 |     public static func categorical(
692 |         _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'shape' is missing documentation
   --> ../Random.swift:690:70-690:70
688 |     ///
689 |     /// - Parameters:
690 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'shape' parameter
691 |     public static func categorical(
692 |         _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:690:70-690:70
688 |     ///
689 |     /// - Parameters:
690 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'stream' parameter
691 |     public static func categorical(
692 |         _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'axis' is missing documentation
   --> ../Random.swift:690:70-690:70
688 |     ///
689 |     /// - Parameters:
690 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'axis' parameter
691 |     public static func categorical(
692 |         _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'axis' is missing documentation
   --> ../Random.swift:726:70-726:70
724 |     ///
725 |     /// - Parameters:
726 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'axis' parameter
727 |     public static func categorical(
728 |         _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'key' is missing documentation
   --> ../Random.swift:726:70-726:70
724 |     ///
725 |     /// - Parameters:
726 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'key' parameter
727 |     public static func categorical(
728 |         _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:726:70-726:70
724 |     ///
725 |     /// - Parameters:
726 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'stream' parameter
727 |     public static func categorical(
728 |         _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'count' is missing documentation
   --> ../Random.swift:726:70-726:70
724 |     ///
725 |     /// - Parameters:
726 +     ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                      ╰─suggestion: Document 'count' parameter
727 |     public static func categorical(
728 |         _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:746:49-746:49
744 |     ///   - dtype: type of the output
745 |     ///   - loc: mean of the distribution
746 +     ///   - scale: scale "b" of the distribution
    |                                                 ╰─suggestion: Document 'stream' parameter
747 |     public static func laplace(
748 |         _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: Parameter 'key' is missing documentation
   --> ../Random.swift:746:49-746:49
744 |     ///   - dtype: type of the output
745 |     ///   - loc: mean of the distribution
746 +     ///   - scale: scale "b" of the distribution
    |                                                 ╰─suggestion: Document 'key' parameter
747 |     public static func laplace(
748 |         _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:895:22-895:22
893 | ///   - loc: mean of the distribution
894 | ///   - scale: standard deviation of the distribution
895 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
896 | public func normal<T>(
897 |     _ shape: [Int] = [], type: T.Type = Float.self, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:924:22-924:22
922 | ///   - loc: mean of the distribution
923 | ///   - scale: standard deviation of the distribution
924 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
925 | public func normal(
926 |     _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
   --> ../Random.swift:948:22-948:22
946 | /// shapes of `mean` and `covariance`.
947 | ///   - dtype: DType of the result
948 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
949 | public func multivariateNormal(
950 |     mean: MLXArray, covariance: MLXArray, shape: [Int] = [], dtype: DType = .float32,
warning: Parameter 'key' is missing documentation
    --> ../Random.swift:1209:66-1209:66
1207 | ///
1208 | /// - Parameters:
1209 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'key' parameter
1210 | public func categorical(
1211 |     _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
    --> ../Random.swift:1209:66-1209:66
1207 | ///
1208 | /// - Parameters:
1209 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'stream' parameter
1210 | public func categorical(
1211 |     _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'axis' is missing documentation
    --> ../Random.swift:1209:66-1209:66
1207 | ///
1208 | /// - Parameters:
1209 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'axis' parameter
1210 | public func categorical(
1211 |     _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'shape' is missing documentation
    --> ../Random.swift:1209:66-1209:66
1207 | ///
1208 | /// - Parameters:
1209 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'shape' parameter
1210 | public func categorical(
1211 |     _ logits: MLXArray, axis: Int = -1, shape: [Int]? = nil, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
    --> ../Random.swift:1232:66-1232:66
1230 | ///
1231 | /// - Parameters:
1232 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'stream' parameter
1233 | public func categorical(
1234 |     _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'count' is missing documentation
    --> ../Random.swift:1232:66-1232:66
1230 | ///
1231 | /// - Parameters:
1232 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'count' parameter
1233 | public func categorical(
1234 |     _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'key' is missing documentation
    --> ../Random.swift:1232:66-1232:66
1230 | ///
1231 | /// - Parameters:
1232 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'key' parameter
1233 | public func categorical(
1234 |     _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'axis' is missing documentation
    --> ../Random.swift:1232:66-1232:66
1230 | ///
1231 | /// - Parameters:
1232 + ///     - logits: The *unnormalized* categorical distribution(s).
     |                                                                  ╰─suggestion: Document 'axis' parameter
1233 | public func categorical(
1234 |     _ logits: MLXArray, axis: Int = -1, count: Int, key: RandomStateOrKey? = nil,
warning: Parameter 'stream' is missing documentation
    --> ../Random.swift:1246:45-1246:45
1244 | ///   - dtype: type of the output
1245 | ///   - loc: mean of the distribution
1246 + ///   - scale: scale "b" of the distribution
     |                                             ╰─suggestion: Document 'stream' parameter
1247 | public func laplace(
1248 |     _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: Parameter 'key' is missing documentation
    --> ../Random.swift:1246:45-1246:45
1244 | ///   - dtype: type of the output
1245 | ///   - loc: mean of the distribution
1246 + ///   - scale: scale "b" of the distribution
     |                                             ╰─suggestion: Document 'key' parameter
1247 | public func laplace(
1248 |     _ shape: [Int] = [], dtype: DType = .float32, loc: Float = 0, scale: Float = 1,
warning: 'withNewDefaultStream(device:_:)' is ambiguous at '/MLX/Stream'
   --> ../Stream.swift:128:20-128:51
126 |     /// New stream on the given device.
127 |     ///
128 +     /// See also ``withNewDefaultStream(device:_:)``
    |                                                   ├─suggestion: Insert '-5bwc3' for 'static func withNewDefaultStream<R>(device: Device? = nil, _ body: () async throws -> R) async rethrows -> R'
    |                                                   ╰─suggestion: Insert '-7pvrv' for 'static func withNewDefaultStream<R>(device: Device? = nil, _ body: () throws -> R) rethrows -> R'
129 |     public init(_ device: Device) {
130 |         self.ctx = evalLock.withLock {
Finished building documentation for 'MLX' (0.90s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Fetching https://github.com/apple/swift-docc-plugin
Updating https://github.com/apple/swift-numerics
Updated https://github.com/apple/swift-numerics (0.55s)
[1/2158] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.21s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (1.65s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.5 (2.09s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3594] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.26s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.92s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.4.5
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Building for debugging...
[0/7] Write snippet-extract-tool-entitlement.plist
[1/8] Write sources
[4/8] Write swift-version-49B95AFC49DCD68C.txt
[6/53] Compiling SymbolKit SourceRange.swift
[7/53] Compiling SymbolKit Metadata.swift
[8/53] Compiling SymbolKit Module.swift
[9/53] Compiling SymbolKit OperatingSystem.swift
[10/53] Compiling SymbolKit Platform.swift
[11/57] Compiling SymbolKit Mixin+Equals.swift
[12/57] Compiling SymbolKit Mixin+Hash.swift
[13/57] Compiling SymbolKit Mixin.swift
[14/57] Compiling SymbolKit LineList.swift
[15/57] Compiling SymbolKit Position.swift
[16/57] Compiling SymbolKit SemanticVersion.swift
[17/57] Compiling SymbolKit AccessControl.swift
[18/57] Compiling SymbolKit Availability.swift
[19/57] Compiling SymbolKit AvailabilityItem.swift
[20/57] Compiling SymbolKit Domain.swift
[21/57] Compiling SymbolKit Identifier.swift
[22/57] Compiling SymbolKit KindIdentifier.swift
[23/57] Compiling SymbolKit Location.swift
[24/57] Compiling SymbolKit Mutability.swift
[25/57] Compiling Snippets Snippet.swift
[26/57] Emitting module Snippets
[27/57] Compiling Snippets SnippetParser.swift
[28/57] Emitting module SymbolKit
[29/57] Compiling SymbolKit Symbol.swift
[30/57] Compiling SymbolKit SymbolKind.swift
[31/57] Compiling SymbolKit SymbolGraph.swift
[32/57] Compiling SymbolKit GraphCollector.swift
[33/57] Compiling SymbolKit Names.swift
[34/57] Compiling SymbolKit SPI.swift
[35/57] Compiling SymbolKit Snippet.swift
[36/57] Compiling SymbolKit Extension.swift
[37/57] Compiling SymbolKit Relationship.swift
[38/57] Compiling SymbolKit RelationshipKind.swift
[39/57] Compiling SymbolKit SourceOrigin.swift
[40/57] Compiling SymbolKit GenericConstraints.swift
[41/57] Compiling SymbolKit Swift.swift
[42/57] Compiling SymbolKit GenericConstraint.swift
[43/57] Compiling SymbolKit GenericParameter.swift
[44/57] Compiling SymbolKit Generics.swift
[45/57] Compiling SymbolKit Namespace.swift
[46/57] Compiling SymbolKit DeclarationFragments.swift
[47/57] Compiling SymbolKit Fragment.swift
[48/57] Compiling SymbolKit FragmentKind.swift
[49/57] Compiling SymbolKit FunctionParameter.swift
[50/57] Compiling SymbolKit FunctionSignature.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Emitting module snippet_extract
[57/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.94s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLX' complete! (0.63s)
Target:                   MLXRandom
Extracting symbol information for 'MLXRandom'...
Finished extracting symbol information for 'MLXRandom'. (0.70s)
Building documentation for 'MLXRandom'...
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:160:22-160:22
158 | ///   - loc: mean of the distribution
159 | ///   - scale: standard deviation of the distribution
160 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
161 | @available(*, deprecated, message: "normal is now available in the main MLX module")
162 | @_disfavoredOverload
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:191:22-191:22
189 | ///   - loc: mean of the distribution
190 | ///   - scale: standard deviation of the distribution
191 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
192 | @available(*, deprecated, message: "normal is now available in the main MLX module")
193 | @_disfavoredOverload
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:217:22-217:22
215 | /// shapes of `mean` and `covariance`.
216 | ///   - dtype: DType of the result
217 + ///   - key: PRNG key
    |                      ╰─suggestion: Document 'stream' parameter
218 | @available(*, deprecated, message: "multivariateNormal is now available in the main MLX module")
219 | @_disfavoredOverload
warning: Parameter 'key' is missing documentation
   --> Source/MLXRandom/Random.swift:498:66-498:66
496 | ///
497 | /// - Parameters:
498 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'key' parameter
499 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
500 | @_disfavoredOverload
warning: Parameter 'shape' is missing documentation
   --> Source/MLXRandom/Random.swift:498:66-498:66
496 | ///
497 | /// - Parameters:
498 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'shape' parameter
499 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
500 | @_disfavoredOverload
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:498:66-498:66
496 | ///
497 | /// - Parameters:
498 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'stream' parameter
499 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
500 | @_disfavoredOverload
warning: Parameter 'axis' is missing documentation
   --> Source/MLXRandom/Random.swift:498:66-498:66
496 | ///
497 | /// - Parameters:
498 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'axis' parameter
499 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
500 | @_disfavoredOverload
warning: Parameter 'axis' is missing documentation
   --> Source/MLXRandom/Random.swift:523:66-523:66
521 | ///
522 | /// - Parameters:
523 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'axis' parameter
524 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
525 | @_disfavoredOverload
warning: Parameter 'key' is missing documentation
   --> Source/MLXRandom/Random.swift:523:66-523:66
521 | ///
522 | /// - Parameters:
523 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'key' parameter
524 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
525 | @_disfavoredOverload
warning: Parameter 'count' is missing documentation
   --> Source/MLXRandom/Random.swift:523:66-523:66
521 | ///
522 | /// - Parameters:
523 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'count' parameter
524 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
525 | @_disfavoredOverload
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:523:66-523:66
521 | ///
522 | /// - Parameters:
523 + ///     - logits: The *unnormalized* categorical distribution(s).
    |                                                                  ╰─suggestion: Document 'stream' parameter
524 | @available(*, deprecated, message: "categorical is now available in the main MLX module")
525 | @_disfavoredOverload
warning: Parameter 'stream' is missing documentation
   --> Source/MLXRandom/Random.swift:539:45-539:45
537 | ///   - dtype: type of the output
538 | ///   - loc: mean of the distribution
539 + ///   - scale: scale "b" of the distribution
    |                                             ╰─suggestion: Document 'stream' parameter
540 | @available(*, deprecated, message: "laplace is now available in the main MLX module")
541 | @_disfavoredOverload
warning: Parameter 'key' is missing documentation
   --> Source/MLXRandom/Random.swift:539:45-539:45
537 | ///   - dtype: type of the output
538 | ///   - loc: mean of the distribution
539 + ///   - scale: scale "b" of the distribution
    |                                             ╰─suggestion: Document 'key' parameter
540 | @available(*, deprecated, message: "laplace is now available in the main MLX module")
541 | @_disfavoredOverload
Finished building documentation for 'MLXRandom' (0.07s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.52s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXRandom' complete! (0.61s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
Target:                   MLXNN
Extracting symbol information for 'MLXNN'...
Finished extracting symbol information for 'MLXNN'. (0.74s)
Building documentation for 'MLXNN'...
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module'
  --> Module.md:13:12-13:38
11 | - ``Module/trainableParameters()``
12 | - ``Module/update(parameters:)``
13 + - ``Module/update(parameters:verify:)``
   |            ├─suggestion: Replace 'update(parameters:verify:)' with 'update(parameters:verify:path:modulePath:)'
   |            ╰─suggestion: Replace 'update(parameters:verify:)' with 'update(parameters:)'
14 |
15 | ### Layers (sub-modules)
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
  --> Module.md:23:12-23:35
21 | - ``Module/namedModules()``
22 | - ``Module/update(modules:)``
23 + - ``Module/update(modules:verify:)``
   |            ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
   |            ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
24 | - ``Module/visit(modules:)``
25 |
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module'
  --> custom-layers.md:89:23-89:49
87 | MLX modules allow accessing and updating individual parameters. However, most
88 | times we need to update large subsets of a module's parameters. This action is
89 + performed by ``Module/update(parameters:verify:)``.
   |                       ├─suggestion: Replace 'update(parameters:verify:)' with 'update(parameters:verify:path:modulePath:)'
   |                       ╰─suggestion: Replace 'update(parameters:verify:)' with 'update(parameters:)'
90 |
91 | See also <doc:training>.
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
   --> custom-layers.md:143:38-143:61
141 |
142 | - both property wrappers allow replacement keys to be specified
143 + - the ``ModuleInfo`` allows ``Module/update(modules:verify:)`` to replace the module
    |                                      ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
    |                                      ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
144 |
145 | Replacement keys are important because many times models and weights are defined
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
   --> custom-layers.md:199:71-199:94
197 | ```
198 |
199 + The `ModuleInfo` provides a hook for ``QuantizedLinear`` and ``Module/update(modules:verify:)`` to
    |                                                                       ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
    |                                                                       ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
200 | replace the contents of `w1`, etc. with a new compatible `Model` after it is created.
201 |
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
  --> ../Linear.swift:34:77-34:100
32 | /// ## Using In A Module
33 | ///
34 + /// > Use `@ModuleInfo` with all your `Linear` module uses so that ``Module/update(modules:verify:)`` can
   |                                                                             ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
   |                                                                             ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
35 | /// replace the modules, e.g. via ``QuantizedLinear/quantize(model:groupSize:bits:predicate:)``.
36 | ///
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
  --> ../Module.swift:82:39-82:62
80 | /// > Please read <doc:custom-layers> for more information about implementing custom layers
81 | /// including how to override the module and parameter keys and allowing dynamic updates of the
82 + /// module structure to occur via ``update(modules:verify:)``.
   |                                       ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
   |                                       ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
83 | ///
84 | /// ### Training
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module/VerifyUpdate'
   --> ../Module.swift:377:33-377:59
375 |     }
376 |
377 +     /// Options for verifying ``update(parameters:verify:)`` and ``update(modules:verify:)``.
    |                                 ╰─suggestion: Replace 'update(parameters:verify:)' with 'update(with:)'
378 |     public struct VerifyUpdate: OptionSet, Sendable {
379 |         public init(rawValue: Int) {
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/VerifyUpdate'
   --> ../Module.swift:377:68-377:91
375 |     }
376 |
377 +     /// Options for verifying ``update(parameters:verify:)`` and ``update(modules:verify:)``.
    |                                                                    ╰─suggestion: Replace 'update(modules:verify:)' with 'update(with:)'
378 |     public struct VerifyUpdate: OptionSet, Sendable {
379 |         public init(rawValue: Int) {
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module/update(parameters:)'
   --> ../Module.swift:396:37-396:63
394 |     }
395 |
396 +     /// A non-throwing version of ``update(parameters:verify:)``.
397 |     ///
398 |     /// This passes `verify: .none`.  Note that there may still be `fatalErrors()` if
warning: Parameter 'modulePath' is missing documentation
   --> ../Module.swift:428:9-428:9
426 |     ///     or ``mapParameters(map:isLeaf:)`` provides
427 |     ///   - verify: options for verifying parameters
428 +     ///
    |         ╰─suggestion: Document 'modulePath' parameter
429 |     /// ### See Also
430 |     /// - <doc:custom-layers>
warning: Parameter 'path' is missing documentation
   --> ../Module.swift:428:9-428:9
426 |     ///     or ``mapParameters(map:isLeaf:)`` provides
427 |     ///   - verify: options for verifying parameters
428 +     ///
    |         ╰─suggestion: Document 'path' parameter
429 |     /// ### See Also
430 |     /// - <doc:custom-layers>
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/update(parameters:verify:path:modulePath:)'
   --> ../Module.swift:435:13-435:36
433 |     /// - ``parameters()``
434 |     /// - ``mapParameters(map:isLeaf:)``
435 +     /// - ``update(modules:verify:)``
436 |     @discardableResult
437 |     open func update(
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/update(modules:)'
   --> ../Module.swift:564:37-564:60
562 |     }
563 |
564 +     /// A non-throwing version of ``update(modules:verify:)``.
565 |     ///
566 |     /// This passes `verify: .none`.  Note that there may still be `fatalErrors()` if
warning: Parameter 'modulePath' is missing documentation
   --> ../Module.swift:607:9-607:9
605 |     ///   - modules: replacement modules in the same format as ``children()`` or ``leafModules()``
606 |     ///   - verify: options for verifying parameters
607 +     ///
    |         ╰─suggestion: Document 'modulePath' parameter
608 |     /// ### See Also
609 |     /// - <doc:custom-layers>
warning: Parameter 'path' is missing documentation
   --> ../Module.swift:607:9-607:9
605 |     ///   - modules: replacement modules in the same format as ``children()`` or ``leafModules()``
606 |     ///   - verify: options for verifying parameters
607 +     ///
    |         ╰─suggestion: Document 'path' parameter
608 |     /// ### See Also
609 |     /// - <doc:custom-layers>
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module/update(modules:verify:path:modulePath:)'
   --> ../Module.swift:611:13-611:39
609 |     /// - <doc:custom-layers>
610 |     /// - ``update(modules:)``
611 +     /// - ``update(parameters:verify:)``
612 |     /// - ``children()``
613 |     /// - ``leafModules()``
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
    --> ../Module.swift:1427:31-1427:54
1425 |
1426 | /// ModuleInfo can provde information about child modules and act as an
1427 + /// update point for ``Module/update(modules:verify:)``.
     |                               ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
     |                               ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
1428 | ///
1429 | /// The keys for modules and parameters are usually named after their instance variables,
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
    --> ../Module.swift:1476:75-1476:98
1474 | /// ```
1475 | ///
1476 + /// The `ModuleInfo` provides a hook for ``QuantizedLinear`` and ``Module/update(modules:verify:)`` /// to
     |                                                                           ├─suggestion: Replace 'update(modules:verify:)' with 'update(modules:verify:path:modulePath:)'
     |                                                                           ╰─suggestion: Replace 'update(modules:verify:)' with 'update(modules:)'
1477 | /// replace the contents of `w1`, etc. with a new compatible `Model` after it is created.
1478 | ///
warning: Parameter 'mode' is missing documentation
  --> ../Quantized.swift:53:125-53:125
51 | ///   - bits: bits per parameter
52 | ///   - filter: filter receiving path and module -- return `false` to skip a layer
   |       ╰─suggestion: Document 'mode' parameter
53 + ///   - apply: function to attempt the quantization -- the default implementation will quantize ``Linear`` and ``Embedding``
54 | /// ### See Also
55 | /// - ``quantize(model:filter:apply:)``
warning: 'quantize(model:filter:apply:)' is ambiguous at '/MLXNN'
  --> ../Quantized.swift:55:9-55:38
53 | ///   - apply: function to attempt the quantization -- the default implementation will quantize ``Linear`` and ``Embedding``
54 | /// ### See Also
55 + /// - ``quantize(model:filter:apply:)``
   |                                      ├─suggestion: Insert '-(_,_,(Module,Int,Int)->Module?)' for 'func quantize(model: Module, filter: (String, Module) -> (groupSize: Int, bits: Int)?, apply: (Module, Int, Int) -> Module? = { quantizeSingle(layer: $0, groupSize: $1, bits: $2, mode: .affine) })'
   |                                      ╰─suggestion: Insert '-(_,_,(Module,Int,Int,QuantizationMode)->Module?)' for 'func quantize(model: Module, filter: (String, Module) -> (groupSize: Int, bits: Int, mode: QuantizationMode)?, apply: (Module, Int, Int, QuantizationMode) -> Module? = quantizeSingle( layer:groupSize:bits:mode:))'
56 | public func quantize(
57 |     model: Module,
warning: 'init(weight:bias:groupSize:bits:)' doesn't exist at '/MLXNN/QuantizedLinear'
   --> ../Quantized.swift:236:9-236:42
234 | ///
235 | /// ### See Also
236 + /// - ``init(weight:bias:groupSize:bits:)``
    |         ├─suggestion: Replace 'init(weight:bias:groupSize:bits:)' with 'init(weight:bias:groupSize:bits:mode:)'
    |         ╰─suggestion: Replace 'init(weight:bias:groupSize:bits:)' with 'init(weight:bias:scales:biases:groupSize:bits:mode:)'
237 | open class QuantizedLinear: Linear, Quantized {
238 |
warning: Parameter 'mode' is missing documentation
   --> ../Quantized.swift:260:64-260:64
258 |     ///   - bias: if `true` this layer will apply a bias
259 |     ///   - groupSize: The group size to use for the quantized weight
260 +     ///   - bits: The bit width to use for the quantized weight
    |                                                                ╰─suggestion: Document 'mode' parameter
261 |     public convenience init(
262 |         _ inputDimensions: Int, _ outputDimensions: Int,
warning: Parameter 'mode' is missing documentation
   --> ../Quantized.swift:280:64-280:64
278 |     ///   - other: a `Linear` layer
279 |     ///   - groupSize: The group size to use for the quantized weight
280 +     ///   - bits: The bit width to use for the quantized weight
    |                                                                ╰─suggestion: Document 'mode' parameter
281 |     public convenience init(
282 |         _ other: Linear, groupSize: Int = 64, bits: Int = 4,
Finished building documentation for 'MLXNN' (0.40s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.51s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXNN' complete! (0.62s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
Target:                   MLXOptimizers
Extracting symbol information for 'MLXOptimizers'...
Finished extracting symbol information for 'MLXOptimizers'. (0.67s)
Building documentation for 'MLXOptimizers'...
Finished building documentation for 'MLXOptimizers' (0.09s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.51s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXOptimizers' complete! (0.59s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
Target:                   MLXFFT
Extracting symbol information for 'MLXFFT'...
Finished extracting symbol information for 'MLXFFT'. (0.69s)
Building documentation for 'MLXFFT'...
warning: Parameter 'n' not found in function declaration
   --> Source/MLXFFT/FFT.swift:207:7-208:83
205 | /// - Parameters:
206 | ///   - array: input array
207 + ///   - n: size of the transformed axis.  The corresponding axis in the input is truncated or padded with zeros to
    |       ╰─suggestion: Remove 'n' parameter documentation
208 + ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
209 | ///   - axis: axis along which to perform the FFT
210 | ///   - stream: stream or device to evaluate on
warning: Parameter 'axis' not found in function declaration
   --> Source/MLXFFT/FFT.swift:209:7-209:50
207 | ///   - n: size of the transformed axis.  The corresponding axis in the input is truncated or padded with zeros to
208 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
209 + ///   - axis: axis along which to perform the FFT
    |       ╰─suggestion: Remove 'axis' parameter documentation
210 | ///   - stream: stream or device to evaluate on
211 | /// - Returns: inverse of ``rfft2(_:s:axes:stream:)``
warning: Parameter 'axes' is missing documentation
   --> Source/MLXFFT/FFT.swift:210:48-210:48
208 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
209 | ///   - axis: axis along which to perform the FFT
210 + ///   - stream: stream or device to evaluate on
    |       ╰─suggestion: Document 'axes' parameter
211 | /// - Returns: inverse of ``rfft2(_:s:axes:stream:)``
212 | ///
warning: Parameter 's' is missing documentation
   --> Source/MLXFFT/FFT.swift:210:48-210:48
208 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
209 | ///   - axis: axis along which to perform the FFT
210 + ///   - stream: stream or device to evaluate on
    |       ╰─suggestion: Document 's' parameter
211 | /// - Returns: inverse of ``rfft2(_:s:axes:stream:)``
212 | ///
warning: Parameter 'n' not found in function declaration
   --> Source/MLXFFT/FFT.swift:256:7-257:83
254 | /// - Parameters:
255 | ///   - array: input array
256 + ///   - n: size of the transformed axis.  The corresponding axis in the input is truncated or padded with zeros to
    |       ╰─suggestion: Remove 'n' parameter documentation
257 + ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
258 | ///   - axis: axis along which to perform the FFT
259 | ///   - stream: stream or device to evaluate on
warning: Parameter 'axis' not found in function declaration
   --> Source/MLXFFT/FFT.swift:258:7-258:50
256 | ///   - n: size of the transformed axis.  The corresponding axis in the input is truncated or padded with zeros to
257 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
258 + ///   - axis: axis along which to perform the FFT
    |       ╰─suggestion: Remove 'axis' parameter documentation
259 | ///   - stream: stream or device to evaluate on
260 | /// - Returns: inverse of ``rfftn(_:s:axes:stream:)``
warning: Parameter 'axes' is missing documentation
   --> Source/MLXFFT/FFT.swift:259:48-259:48
257 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
258 | ///   - axis: axis along which to perform the FFT
259 + ///   - stream: stream or device to evaluate on
    |       ╰─suggestion: Document 'axes' parameter
260 | /// - Returns: inverse of ``rfftn(_:s:axes:stream:)``
261 | ///
warning: Parameter 's' is missing documentation
   --> Source/MLXFFT/FFT.swift:259:48-259:48
257 | ///   match `n / 2 + 1`.  If not specified `array.dim(axis) / 2 + 1` will be used.
258 | ///   - axis: axis along which to perform the FFT
259 + ///   - stream: stream or device to evaluate on
    |       ╰─suggestion: Document 's' parameter
260 | /// - Returns: inverse of ``rfftn(_:s:axes:stream:)``
261 | ///
Finished building documentation for 'MLXFFT' (0.06s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.52s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXFFT' complete! (0.60s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
Target:                   MLXLinalg
Extracting symbol information for 'MLXLinalg'...
Finished extracting symbol information for 'MLXLinalg'. (0.71s)
Building documentation for 'MLXLinalg'...
warning: '4dwwp' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLXLinalg'
   --> Source/MLXLinalg/Linalg.swift:103:42-103:48
101 | ///
102 | /// ### See Also
103 + /// - ``norm(_:ord:axes:keepDims:stream:)-4dwwp``
    |                                          ├─suggestion: Replace '4dwwp' with '(_,Double,_,_,_)' for 'func norm(_ array: MLXArray, ord: Double, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
    |                                          ╰─suggestion: Replace '4dwwp' with '(_,MLXLinalg.NormKind?,_,_,_)' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
104 | @available(*, deprecated, message: "norm is now available in the main MLX module")
105 | @_disfavoredOverload
warning: '4dwwp' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLXLinalg'
   --> Source/MLXLinalg/Linalg.swift:115:44-115:50
113 | /// Matrix or vector norm.
114 | ///
115 + /// See ``norm(_:ord:axes:keepDims:stream:)-4dwwp``
    |                                            ├─suggestion: Replace '4dwwp' with '(_,Double,_,_,_)' for 'func norm(_ array: MLXArray, ord: Double, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
    |                                            ╰─suggestion: Replace '4dwwp' with '(_,MLXLinalg.NormKind?,_,_,_)' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
116 | @available(*, deprecated, message: "norm is now available in the main MLX module")
117 | @_disfavoredOverload
warning: 'norm(_:ord:axes:keepDims:stream:)' is ambiguous at '/MLXLinalg'
   --> Source/MLXLinalg/Linalg.swift:127:11-127:44
125 | /// Matrix or vector norm.
126 | ///
127 + /// See ``norm(_:ord:axes:keepDims:stream:)``
    |                                            ├─suggestion: Insert '-(_,Double,_,_,_)' for 'func norm(_ array: MLXArray, ord: Double, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
    |                                            ╰─suggestion: Insert '-(_,MLXLinalg.NormKind?,_,_,_)' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
128 | @available(*, deprecated, message: "norm is now available in the main MLX module")
129 | @_disfavoredOverload
warning: '4dwwp' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLXLinalg'
   --> Source/MLXLinalg/Linalg.swift:139:44-139:50
137 | /// Matrix or vector norm.
138 | ///
139 + /// See ``norm(_:ord:axes:keepDims:stream:)-4dwwp``
    |                                            ├─suggestion: Replace '4dwwp' with '(_,Double,_,_,_)' for 'func norm(_ array: MLXArray, ord: Double, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
    |                                            ╰─suggestion: Replace '4dwwp' with '(_,MLXLinalg.NormKind?,_,_,_)' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
140 | @available(*, deprecated, message: "norm is now available in the main MLX module")
141 | @_disfavoredOverload
warning: 'norm(_:ord:axes:keepDims:stream:)' is ambiguous at '/MLXLinalg'
   --> Source/MLXLinalg/Linalg.swift:151:11-151:44
149 | /// Matrix or vector norm.
150 | ///
151 + /// See ``norm(_:ord:axes:keepDims:stream:)``
    |                                            ├─suggestion: Insert '-(_,Double,_,_,_)' for 'func norm(_ array: MLXArray, ord: Double, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
    |                                            ╰─suggestion: Insert '-(_,MLXLinalg.NormKind?,_,_,_)' for 'func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: [Int], keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
152 | @available(*, deprecated, message: "norm is now available in the main MLX module")
153 | @_disfavoredOverload
warning: 'A' doesn't exist at '/MLXLinalg/lu(_:stream:)'
   --> Source/MLXLinalg/Linalg.swift:289:56-289:57
287 | }
288 |
289 + /// Compute the LU factorization of the given matrix ``A``.
290 | ///
291 | /// Note, unlike the default behavior of ``scipy.linalg.lu``, the pivots
warning: 'scipy.linalg.lu' doesn't exist at '/MLXLinalg/lu(_:stream:)'
   --> Source/MLXLinalg/Linalg.swift:291:44-291:59
289 | /// Compute the LU factorization of the given matrix ``A``.
290 | ///
291 + /// Note, unlike the default behavior of ``scipy.linalg.lu``, the pivots
292 | /// are indices. To reconstruct the input use ``L[P] @ U`` for 2
293 | /// dimensions or ``takeAlong(L, P[.ellipsis, .newAxis], axis: -2) @ U``
warning: 'L[P] @ U' doesn't exist at '/MLXLinalg/lu(_:stream:)'
   --> Source/MLXLinalg/Linalg.swift:292:49-292:57
290 | ///
291 | /// Note, unlike the default behavior of ``scipy.linalg.lu``, the pivots
292 + /// are indices. To reconstruct the input use ``L[P] @ U`` for 2
293 | /// dimensions or ``takeAlong(L, P[.ellipsis, .newAxis], axis: -2) @ U``
294 | /// for more than 2 dimensions.
warning: 'takeAlong(L, P[.ellipsis, .newAxis], axis: -2) @ U' doesn't exist at '/MLXLinalg/lu(_:stream:)'
   --> Source/MLXLinalg/Linalg.swift:293:21-293:71
291 | /// Note, unlike the default behavior of ``scipy.linalg.lu``, the pivots
292 | /// are indices. To reconstruct the input use ``L[P] @ U`` for 2
293 + /// dimensions or ``takeAlong(L, P[.ellipsis, .newAxis], axis: -2) @ U``
294 | /// for more than 2 dimensions.
295 | ///
Finished building documentation for 'MLXLinalg' (0.06s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.53s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXLinalg' complete! (0.61s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
Target:                   MLXFast
Extracting symbol information for 'MLXFast'...
Finished extracting symbol information for 'MLXFast'. (0.69s)
Building documentation for 'MLXFast'...
warning: 'metalKernel(name:inputNames:outputNames:source:header:ensureRowContiguous:atomicOutputs:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:)' doesn't exist at '/MLXFast/MLXFastKernel'
 --> Source/MLXFast/MLXFastKernel.swift:7:7-7:166
5 |
6 | /// Container for a kernel created by
7 + /// ``metalKernel(name:inputNames:outputNames:source:header:ensureRowContiguous:atomicOutputs:template:grid:threadGroup:outputShapes:outputDTypes:initValue:verbose:)``
8 | ///
9 | /// The ``MLXFast/MLXFastKernel`` can be used to evaluate the kernel with inputs:
Finished building documentation for 'MLXFast' (0.05s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.53s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXFast' complete! (0.60s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/main/linkable-paths.json
    3818
31	/Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/ml-explore/mlx-swift/main
File count: 3818
Doc size:   31.0MB
Preparing doc bundle ...
Uploading prod-ml-explore-mlx-swift-main-db368d70.zip to s3://spi-docs-inbox/prod-ml-explore-mlx-swift-main-db368d70.zip
Copying... [11%]
Copying... [20%]
Copying... [31%]
Copying... [40%]
Copying... [51%]
Copying... [60%]
Copying... [71%]
Copying... [80%]
Copying... [91%]
Copying... [100%]
Done.