Build Information
Successful build of mlx-swift, reference 0.31.3 (61b9e0), with Swift 6.2 for macOS (SPM) on 2 Apr 2026 00:41:15 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.69.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ml-explore/mlx-swift.git
Reference: 0.31.3
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/ml-explore/mlx-swift
* tag 0.31.3 -> FETCH_HEAD
HEAD is now at 61b9e01 hold evalLock during mlx_save_safetensors etc (#379)
Submodule path 'Source/Cmlx/mlx': checked out 'ce45c52505c8158ea48d2a54e8caae05efd86bfe'
Submodule path 'Source/Cmlx/mlx-c': checked out '0726ca922fc902c4c61ef9c27d94132be418e945'
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 @):
61b9e011e09a62b489f6bd647958f1555bdf2896
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/ml-explore/mlx-swift.git at 0.31.3
Fetching https://github.com/apple/swift-numerics
[1/6416] Fetching swift-numerics
Fetched https://github.com/apple/swift-numerics from cache (1.02s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (1.57s)
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/13882] Fetching mlx-swift
Fetched https://github.com/ml-explore/mlx-swift.git from cache (1.55s)
Fetching https://github.com/apple/swift-numerics from cache
Fetched https://github.com/apple/swift-numerics from cache (0.53s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (0.58s)
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 0.31.3 (61b9e01)
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/211] Write swift-version-49B95AFC49DCD68C.txt
[1/211] Compiling _NumericsShims _NumericsShims.c
[2/211] Write sources
[3/211] Write Tutorial-entitlement.plist
[4/211] Write sources
[7/222] Compiling RealModule RealFunctions.swift
[8/222] Compiling RealModule Real.swift
[9/222] Compiling RealModule Float80+Real.swift
[10/223] Compiling RealModule Float16+Real.swift
[11/223] Compiling RealModule ElementaryFunctions.swift
[12/223] Compiling RealModule Float+Real.swift
[13/223] Compiling RealModule AlgebraicField.swift
[14/223] Compiling RealModule ApproximateEquality.swift
[15/223] Emitting module RealModule
[16/223] Compiling RealModule AugmentedArithmetic.swift
[17/223] Compiling RealModule Double+Real.swift
[18/223] Compiling RealModule RelaxedArithmetic.swift
[18/223] Write sources
[26/223] Write Example1-entitlement.plist
[27/223] Write sources
[28/223] Write CustomFunctionExampleSimple-entitlement.plist
[29/223] Write sources
[30/223] Write CustomFunctionExample-entitlement.plist
[31/223] Write sources
[32/223] Compiling version.cpp
[34/234] Compiling ComplexModule Complex+Hashable.swift
[35/235] Compiling ComplexModule Polar.swift
[36/235] Compiling ComplexModule Complex+StringConvertible.swift
[37/235] Compiling ComplexModule Complex+Numeric.swift
[38/235] Compiling ComplexModule Complex+IntegerLiteral.swift
[39/235] Compiling ComplexModule Complex.swift
[40/235] Compiling ComplexModule Scale.swift
[41/235] Compiling ComplexModule Complex+AdditiveArithmetic.swift
[42/235] Compiling ComplexModule Complex+AlgebraicField.swift
[43/235] Compiling ComplexModule Complex+Codable.swift
[44/235] Compiling ComplexModule Complex+ElementaryFunctions.swift
[45/235] Emitting module ComplexModule
[45/235] Compiling error.cpp
[47/237] Compiling Numerics Numerics.swift
[48/237] Emitting module Numerics
[48/237] Compiling fft.cpp
[49/237] Compiling compile.cpp
[50/237] Compiling export.cpp
[50/237] Compiling cuda.cpp
[52/237] Compiling device.cpp
[53/237] Compiling fast.cpp
[54/237] Compiling utils.cpp
[55/237] Compiling closure.cpp
[56/237] Compiling array.cpp
[57/237] Compiling scheduler.cpp
[58/237] Compiling no_gguf.cpp
[59/237] Compiling linalg.cpp
[60/237] Compiling random.cpp
[61/237] Compiling load.cpp
[62/237] Compiling graph_utils.cpp
[63/237] Compiling transforms.cpp
[64/237] Compiling fft.cpp
[65/237] Compiling primitives.cpp
[66/237] Compiling dtype_utils.cpp
[67/237] Compiling safetensors.cpp
[68/237] Compiling dtype.cpp
[69/237] Compiling utils.cpp
[70/237] Compiling fast.cpp
[71/237] Compiling no_ring.cpp
[72/237] Compiling einsum.cpp
[73/237] Compiling no_nccl.cpp
[74/237] Compiling no_mpi.cpp
[75/237] Compiling no_jaccl.cpp
[76/237] Compiling device.cpp
[77/237] Compiling primitives.cpp
[78/237] Compiling ops.cpp
[80/237] Compiling distributed.cpp
[81/237] Compiling utils.cpp
[82/237] Compiling compile.cpp
[83/237] Compiling unary.cpp
[84/237] Compiling sort.cpp
[85/237] Compiling softmax.cpp
[86/237] Compiling ternary.cpp
[87/237] Compiling slicing.cpp
[88/237] Compiling scan.cpp
[89/237] Compiling scaled_dot_product_attention.cpp
[90/237] Compiling resident.cpp
[91/237] Compiling rope.cpp
[92/237] Compiling reduce.cpp
[93/237] Compiling metal.cpp
[94/237] Compiling primitives.cpp
[95/237] Compiling normalization.cpp
[96/237] Compiling quantized.cpp
[97/237] Compiling logsumexp.cpp
[98/237] Compiling matmul.cpp
[99/237] Compiling export.cpp
[100/237] Compiling event.cpp
[101/237] Compiling fence.cpp
[102/237] Compiling jit_kernels.cpp
[103/237] Compiling hadamard.cpp
[104/237] Compiling indexing.cpp
[105/237] Compiling eval.cpp
[106/237] Compiling device_info.cpp
[107/237] Compiling distributed.cpp
[108/237] Compiling fft.cpp
[109/237] Compiling slicing.cpp
[110/237] Compiling primitives.cpp
[111/237] Compiling device.cpp
[112/237] Compiling copy.cpp
[113/237] Compiling threefry.cpp
[114/237] Compiling allocator.cpp
[115/237] Compiling binary.cpp
[116/237] Compiling compiled.cpp
[117/237] Compiling conv.cpp
[118/237] Compiling copy.cpp
[119/237] Compiling no_cuda.cpp
[120/237] Compiling custom_kernel.cpp
[121/237] Compiling softmax.cpp
[122/237] Compiling select.cpp
[123/237] Compiling scan.cpp
[124/237] Compiling quantized.cpp
[125/237] Compiling primitives.cpp
[126/237] Compiling sort.cpp
[127/237] Compiling qrf.cpp
[128/237] Compiling svd.cpp
[129/237] Compiling unary.cpp
[130/237] Compiling jit_compiler.cpp
[131/237] Compiling matmul.cpp
[132/237] Compiling masked_mm.cpp
[133/237] Compiling logsumexp.cpp
[134/237] Compiling hadamard.cpp
[135/237] Compiling luf.cpp
[136/237] Compiling inverse.cpp
[137/237] Compiling encoder.cpp
[138/237] Compiling reduce.cpp
[139/237] Compiling cblas.cpp
[140/237] Compiling bnns.cpp
[141/237] Compiling eval.cpp
[142/237] Compiling fft.cpp
[143/237] Compiling device_info.cpp
[144/237] Compiling distributed.cpp
[145/237] Compiling indexing.cpp
[146/237] Compiling eigh.cpp
[147/237] Compiling eig.cpp
[148/237] Compiling utils.cpp
[149/237] Compiling slicing.cpp
[150/237] Compiling arg_reduce.cpp
[151/237] Compiling reduce.cpp
[152/237] Compiling utils.cpp
[153/237] Compiling unary_ops.cpp
[154/237] Compiling unary.cpp
[155/237] Compiling ternary_ops.cpp
[156/237] Compiling ternary.cpp
[157/237] Compiling steel_gemm_splitk_nax.cpp
[158/237] Compiling steel_gemm_splitk.cpp
[159/237] Compiling steel_gemm_segmented.cpp
[160/237] Compiling steel_gemm_masked.cpp
[161/237] Compiling steel_gemm_gather_nax.cpp
[162/237] Compiling cholesky.cpp
[163/237] Compiling steel_gemm_gather.cpp
[164/237] Compiling steel_gemm_fused_nax.cpp
[165/237] Compiling steel_gemm_fused.cpp
[166/237] Compiling steel_conv_general.cpp
[167/237] Compiling steel_conv.cpp
[167/237] Compiling steel_conv_3d.cpp
[169/237] Compiling steel_attention.cpp
[170/237] Compiling steel_attention_nax.cpp
[171/237] Compiling sort.cpp
[172/237] Compiling softmax.cpp
[173/237] Compiling scatter_axis.cpp
[174/237] Compiling scatter.cpp
[175/237] Compiling reduce_utils.cpp
[175/237] Compiling scan.cpp
[177/237] Compiling reduce.cpp
[178/237] Compiling quantized_utils.cpp
[179/237] Compiling quantized_nax.cpp
[180/237] Compiling quantized.cpp
[181/237] Compiling masked_scatter.cpp
[182/237] Compiling logsumexp.cpp
[183/237] Compiling hadamard.cpp
[184/237] Compiling gemv_masked.cpp
[185/237] Compiling gemm_nax.cpp
[186/237] Compiling gemm.cpp
[187/237] Compiling gather_front.cpp
[188/237] Compiling gather_axis.cpp
[189/237] Compiling gather.cpp
[190/237] Compiling fp_quantized_nax.cpp
[191/237] Compiling fp_quantized.cpp
[192/237] Compiling fft.cpp
[193/237] Compiling conv.cpp
[194/237] Compiling copy.cpp
[195/237] Compiling compiled_preamble.cpp
[196/237] Compiling binary_two.cpp
[197/237] Compiling binary.cpp
[198/237] Compiling binary_ops.cpp
[199/237] Compiling load.cpp
[200/237] Compiling common.cpp
[201/237] Compiling compiled.cpp
[202/237] Compiling arange.cpp
[203/237] Compiling broadcasting.cpp
[204/237] Compiling conv.cpp
[205/237] Compiling copy.cpp
[206/237] Compiling array.cpp
[207/237] Compiling version.cpp
[208/237] Compiling transforms_impl.cpp
[209/237] Compiling stream.cpp
[210/237] Compiling string.cpp
[211/237] Compiling transforms.cpp
[212/237] Compiling vector.cpp
[213/237] Compiling compiled_conditional.cpp
[214/237] Compiling random.cpp
[215/237] Compiling ops.cpp
[216/237] Compiling metal.cpp
[217/237] Compiling memory.cpp
[218/237] Compiling io_types.cpp
[219/237] Compiling linalg.cpp
[220/237] Compiling map.cpp
[221/237] Compiling io.cpp
[222/237] Compiling format.cc
[223/237] Compiling Cmlx.m
[224/237] Compiling binary.cpp
[226/273] Emitting module MLX
[227/276] Compiling MLX Transforms+Eval.swift
[228/276] Compiling MLX Transforms+Grad.swift
[229/276] Compiling MLX Transforms+Internal.swift
[230/276] Compiling MLX MLXFast.swift
[231/276] Compiling MLX MLXFastKernel.swift
[232/276] Compiling MLX Memory.swift
[233/276] Compiling MLX Nested.swift
[234/276] Compiling MLX Random.swift
[235/276] Compiling MLX State.swift
[236/276] Compiling MLX Stream.swift
[237/276] Compiling MLX Transforms+Compile.swift
[238/276] Compiling MLX ArrayAt.swift
[239/276] Compiling MLX Cmlx+Util.swift
[240/276] Compiling MLX DType.swift
[241/276] Compiling MLX Device.swift
[242/276] Compiling MLX ErrorHandler.swift
[243/276] Compiling MLX Export.swift
[244/276] Compiling MLX FFT.swift
[245/276] Compiling MLX Factory.swift
[246/276] Compiling MLX MLXArray+Normalizer.swift
[247/276] Compiling MLX MLXArray+Ops.swift
[248/276] Compiling MLX MLXArray.swift
[249/276] Compiling MLX MLXCustomFunction.swift
[250/276] Compiling MLX Ops+Array.swift
[251/276] Compiling MLX Ops.swift
[252/276] Compiling MLX ParameterTypes.swift
[253/276] Compiling MLX Protocols.swift
[254/276] Compiling MLX Transforms+Vmap.swift
[255/276] Compiling MLX Transforms.swift
[256/276] Compiling MLX WiredMemory.swift
[257/276] Compiling MLX Foundation+Util.swift
/Users/admin/builder/spi-builder-workspace/Source/MLX/IO.swift:290:5: warning: using '_' to ignore the result of a Void-returning function is redundant
288 | defer { mlx_io_writer_free(writer) }
289 |
290 | _ = evalLock.withLock {
| `- warning: using '_' to ignore the result of a Void-returning function is redundant
291 | _ = evalLock.withLock {
292 | mlx_save_safetensors_writer(writer, mlx_arrays, mlx_metadata)
[258/276] Compiling MLX GPU+Metal.swift
/Users/admin/builder/spi-builder-workspace/Source/MLX/IO.swift:290:5: warning: using '_' to ignore the result of a Void-returning function is redundant
288 | defer { mlx_io_writer_free(writer) }
289 |
290 | _ = evalLock.withLock {
| `- warning: using '_' to ignore the result of a Void-returning function is redundant
291 | _ = evalLock.withLock {
292 | mlx_save_safetensors_writer(writer, mlx_arrays, mlx_metadata)
[259/276] Compiling MLX IO.swift
/Users/admin/builder/spi-builder-workspace/Source/MLX/IO.swift:290:5: warning: using '_' to ignore the result of a Void-returning function is redundant
288 | defer { mlx_io_writer_free(writer) }
289 |
290 | _ = evalLock.withLock {
| `- warning: using '_' to ignore the result of a Void-returning function is redundant
291 | _ = evalLock.withLock {
292 | mlx_save_safetensors_writer(writer, mlx_arrays, mlx_metadata)
[260/276] Compiling MLX Linalg.swift
/Users/admin/builder/spi-builder-workspace/Source/MLX/IO.swift:290:5: warning: using '_' to ignore the result of a Void-returning function is redundant
288 | defer { mlx_io_writer_free(writer) }
289 |
290 | _ = evalLock.withLock {
| `- warning: using '_' to ignore the result of a Void-returning function is redundant
291 | _ = evalLock.withLock {
292 | mlx_save_safetensors_writer(writer, mlx_arrays, mlx_metadata)
[261/276] Compiling MLX MLXArray+Bytes.swift
[262/276] Compiling MLX MLXArray+Indexing.swift
[263/276] Compiling MLX MLXArray+Init.swift
[264/276] Compiling MLX MLXArray+Metal.swift
[265/311] Compiling MLXFast MLXFastKernel.swift
[266/311] Compiling MLXFFT FFT.swift
[267/311] Emitting module MLXFFT
[268/311] Compiling MLXFast MLXFast.swift
[269/311] Emitting module MLXFast
[270/311] Emitting module MLXLinalg
[271/311] Compiling MLXLinalg Linalg.swift
[272/311] Emitting module MLXRandom
[273/311] Compiling MLXRandom Random.swift
[274/311] Compiling CustomFunctionExampleSimple CustomFunctionExampleSimple.swift
[275/311] Emitting module CustomFunctionExampleSimple
[275/311] Write Objects.LinkFileList
[277/311] Compiling CustomFunctionExample CustomFunctionExample.swift
[278/311] Emitting module CustomFunctionExample
[279/311] Emitting module Tutorial
[280/311] Compiling Tutorial Tutorial.swift
[281/311] Compiling Example1 Example1.swift
[282/311] Emitting module Example1
[282/311] Write Objects.LinkFileList
[286/311] Compiling MLXNN ConvolutionTransposed.swift
[287/311] Compiling MLXNN Dropout.swift
[288/311] Compiling MLXNN Containers.swift
[289/311] Compiling MLXNN Convolution.swift
[290/312] Compiling MLXNN Upsample.swift
[291/312] Compiling MLXNN ValueAndGrad.swift
[292/312] Emitting module MLXNN
[293/312] Compiling MLXNN Activations.swift
[294/312] Compiling MLXNN Cache.swift
[295/312] Compiling MLXNN Recurrent.swift
[296/312] Compiling MLXNN Transformer.swift
[297/312] Compiling MLXNN PositionalEncoding.swift
[298/312] Compiling MLXNN Quantized.swift
[299/312] Compiling MLXNN Normalization.swift
[300/312] Compiling MLXNN Pooling.swift
[301/312] Compiling MLXNN Embedding.swift
[302/312] Compiling MLXNN Linear.swift
[303/312] Compiling MLXNN Losses.swift
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1407:34: warning: conditional downcast from 'T?' to 'T' does nothing
1405 | // note: this gives a warning but it does in fact do something
1406 | // in the case where this is e.g. ParameterInfo<MLXArray?>
1407 | if let value = value as? T {
| `- warning: conditional downcast from 'T?' to 'T' does nothing
1408 | return value
1409 | } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1520:36: warning: conditional downcast from 'T?' to 'T' does nothing
1518 | // note: this gives a warning but it does in fact do something
1519 | // in the case where this is e.g. ModuleInfo<Linear?>
1520 | if let module = module as? T {
| `- warning: conditional downcast from 'T?' to 'T' does nothing
1521 | return module
1522 | } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:293:13: warning: default will never be executed
291 | return isAllNone ? .none : .array(result)
292 |
293 | default:
| `- warning: default will never be executed
294 | fatalError("Unexpected leaf \(vk) = \(v)")
295 | }
[304/312] Compiling MLXNN Module.swift
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1407:34: warning: conditional downcast from 'T?' to 'T' does nothing
1405 | // note: this gives a warning but it does in fact do something
1406 | // in the case where this is e.g. ParameterInfo<MLXArray?>
1407 | if let value = value as? T {
| `- warning: conditional downcast from 'T?' to 'T' does nothing
1408 | return value
1409 | } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:1520:36: warning: conditional downcast from 'T?' to 'T' does nothing
1518 | // note: this gives a warning but it does in fact do something
1519 | // in the case where this is e.g. ModuleInfo<Linear?>
1520 | if let module = module as? T {
| `- warning: conditional downcast from 'T?' to 'T' does nothing
1521 | return module
1522 | } else {
/Users/admin/builder/spi-builder-workspace/Source/MLXNN/Module.swift:293:13: warning: default will never be executed
291 | return isAllNone ? .none : .array(result)
292 |
293 | default:
| `- warning: default will never be executed
294 | fatalError("Unexpected leaf \(vk) = \(v)")
295 | }
[305/314] Emitting module MLXOptimizers
[306/314] Compiling MLXOptimizers Optimizers.swift
[306/314] Linking Tutorial
[307/314] Linking CustomFunctionExample
[308/314] Linking Example1
[309/314] Linking CustomFunctionExampleSimple
[310/314] Applying Tutorial
[311/314] Applying CustomFunctionExample
[312/314] Applying Example1
[313/314] Applying CustomFunctionExampleSimple
Build complete! (41.33s)
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/CustomFunctionExample.swift
/Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.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/Tutorial.swift
/Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExample.swift
/Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.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/Tutorial.swift
/Users/admin/builder/spi-builder-workspace/Source/Examples/CustomFunctionExampleSimple.swift
/Users/admin/builder/spi-builder-workspace/Source/Examples/Example1.swift
Build complete.
{
"cxx_language_standard" : "gnu++20",
"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+NormlizerTests.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",
"WiredMemoryTests.swift"
],
"target_dependencies" : [
"MLX",
"MLXNN",
"MLXOptimizers"
],
"type" : "test"
},
{
"c99name" : "MLXRandom",
"module_type" : "SwiftTarget",
"name" : "MLXRandom",
"path" : "Source/MLXRandom",
"product_memberships" : [
"MLXRandom"
],
"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"
],
"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" : [
"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+Normalizer.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",
"WiredMemory.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",
"framework/Cmlx.m",
"mlx-c/mlx/c/array.cpp",
"mlx-c/mlx/c/closure.cpp",
"mlx-c/mlx/c/compile.cpp",
"mlx-c/mlx/c/cuda.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/fp_quantized_nax.cpp",
"mlx-generated/gather.cpp",
"mlx-generated/gather_axis.cpp",
"mlx-generated/gather_front.cpp",
"mlx-generated/gemm.cpp",
"mlx-generated/gemm_nax.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_nax.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_attention.cpp",
"mlx-generated/steel_attention_nax.cpp",
"mlx-generated/steel_conv.cpp",
"mlx-generated/steel_conv_3d.cpp",
"mlx-generated/steel_conv_general.cpp",
"mlx-generated/steel_gemm_fused.cpp",
"mlx-generated/steel_gemm_fused_nax.cpp",
"mlx-generated/steel_gemm_gather.cpp",
"mlx-generated/steel_gemm_gather_nax.cpp",
"mlx-generated/steel_gemm_masked.cpp",
"mlx-generated/steel_gemm_segmented.cpp",
"mlx-generated/steel_gemm_splitk.cpp",
"mlx-generated/steel_gemm_splitk_nax.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/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/binary.cpp",
"mlx/mlx/backend/cpu/cholesky.cpp",
"mlx/mlx/backend/cpu/conv.cpp",
"mlx/mlx/backend/cpu/copy.cpp",
"mlx/mlx/backend/cpu/device_info.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/device_info.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/jaccl/no_jaccl.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/distributed/utils.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/0.31.3
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.59s)
Building documentation for 'MLX'...
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)' doesn't exist at '/MLX/MLX'
--> Articles/converting-python.md:176:22-176:84
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:dtype:stream:)``
177 | `divide` | ``MLX/divide(_:_:stream:)``
178 | `equal` | ``MLX/equal(_:_:stream:)``
warning: 'quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/MLX'
--> Articles/converting-python.md:218:16-218:76
216 | `power` | ``MLX/pow(_:_:stream:)-(MLXArray,MLXArray,_)``
217 | `prod` | ``MLX/product(_:axes:keepDims:stream:)``
218 + `qqmm` | ``MLX/quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)``
219 | `quantize` | ``MLX/quantized(_:groupSize:bits:mode:stream:)``
220 | `quantized_matmul` | ``MLX/quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
warning: 'quantized(_:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/MLX'
--> Articles/converting-python.md:219:20-219:60
217 | `prod` | ``MLX/product(_:axes:keepDims:stream:)``
218 | `qqmm` | ``MLX/quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)``
219 + `quantize` | ``MLX/quantized(_:groupSize:bits:mode:stream:)``
220 | `quantized_matmul` | ``MLX/quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
221 | `reciprocal` | ``MLX/reciprocal(_: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: some Sequence<Optional<Int>> = [0], outAxes: some Sequence<Optional<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: some Sequence<Optional<Int>> = [0], outAxes: some Sequence<Optional<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: some Sequence<Optional<Int>> = [0], outAxes: some Sequence<Optional<Int>> = [0]) -> ([MLXArray]) -> [MLXArray]'
warning: 'quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/arithmetic'
--> Organization/arithmetic.md:218:5-218:65
216 | - ``quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
217 | - ``gatherQuantizedMM(_:_:scales:biases:lhsIndices:rhsIndices:transpose:groupSize:bits:mode:sortedIndices:stream:)``
218 + - ``quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)``
219 | - ``inner(_:_:stream:)``
220 | - ``outer(_:_:stream:)``
warning: 'quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/free-functions'
--> free-functions.md:197:5-197:65
195 | ### Quantization
196 |
197 + - ``quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)``
198 | - ``quantized(_:groupSize:bits:mode:stream:)``
199 | - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
warning: 'quantized(_:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/free-functions'
--> free-functions.md:198:5-198:45
196 |
197 | - ``quantizedQuantizedMM(_:_:scales:groupSize:bits:mode:stream:)``
198 + - ``quantized(_:groupSize:bits:mode:stream:)``
199 | - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
200 | - ``dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)``
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)' doesn't exist at '/MLX/free-functions'
--> free-functions.md:200:5-200:67
198 | - ``quantized(_:groupSize:bits:mode:stream:)``
199 | - ``quantizedMatmul(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
200 + - ``dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)``
201 |
202 | ### Evaluation and Transformation
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: 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: '8zljj' isn't a disambiguation for 'norm(_:ord:axes:keepDims:stream:)' at '/MLX/MLXLinalg'
--> ../Linalg.swift:12:46-12:52
10 | /// ### See Also
11 | /// - ``norm(_:ord:axes:keepDims:stream:)``
12 + /// - ``norm(_:ord:axes:keepDims:stream:)-8zljj``
| ├─suggestion: Replace '8zljj' with '(_,Double,_,_,_)' for 'static func norm(_ array: MLXArray, ord: Double, axes: some Collection<Int>, keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
| ╰─suggestion: Replace '8zljj' with '(_,MLXLinalg.NormKind?,_,_,_)' for 'static func norm(_ array: MLXArray, ord: MLXLinalg.NormKind? = nil, axes: some Collection<Int>, keepDims: Bool = false, stream: StreamOrDevice = .default) -> MLXArray'
13 | /// - ``MLXLinalg``
14 | public enum NormKind: String, Sendable {
warning: 'subscript(indices:stream:)' doesn't exist at '/MLX/MLXArray/at'
--> ../MLXArray.swift:605:13-605:39
603 | ///
604 | /// ### See Also
605 + /// - ``subscript(indices:stream:)``
606 | /// - ``ArrayAtIndices``
607 | public var at: ArrayAt { ArrayAt(array: self) }
warning: 'quantized(_:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/dequantized(_:scales:biases:groupSize:bits:mode:globalScale:dtype:stream:)'
--> ../Ops.swift:1144:9-1144:49
1142 | ///
1143 | /// ### See Also
1144 + /// - ``quantized(_:groupSize:bits:mode:stream:)``
1145 | /// - ``quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
1146 | public func dequantized(
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)' doesn't exist at '/MLX/quantized(_:groupSize:bits:mode:globalScale:stream:)'
--> ../Ops.swift:2351:9-2351:71
2349 | ///
2350 | /// ### See Also
2351 + /// - ``dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)``
2352 | /// - ``quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)``
2353 | public func quantized(
warning: 'dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)' doesn't exist at '/MLX/quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)'
--> ../Ops.swift:2410:9-2410:71
2408 | ///
2409 | /// ### See Also
2410 + /// - ``dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)``
2411 | /// - ``quantized(_:groupSize:bits:mode:stream:)``
2412 | public func quantizedMM(
warning: 'quantized(_:groupSize:bits:mode:stream:)' doesn't exist at '/MLX/quantizedMM(_:_:scales:biases:transpose:groupSize:bits:mode:stream:)'
--> ../Ops.swift:2411:9-2411:49
2409 | /// ### See Also
2410 | /// - ``dequantized(_:scales:biases:groupSize:bits:mode:dtype:stream:)``
2411 + /// - ``quantized(_:groupSize:bits:mode:stream:)``
2412 | public func quantizedMM(
2413 | _ x: MLXArray, _ w: MLXArray, scales: MLXArray, biases: MLXArray?,
warning: Parameter 'precise' is missing documentation
--> ../Ops.swift:2648:5-2648:5
2646 | /// - axes: axes to compute the softmax over
2647 | /// - stream: stream or device to evaluate on
| ╰─suggestion: Document 'precise' parameter
2648 + ///
2649 | /// ### See Also
2650 | /// - <doc:arithmetic>
warning: Parameter 'precise' is missing documentation
--> ../Ops.swift:2682:5-2682:5
2680 | /// - axis: axis to compute the softmax over
2681 | /// - stream: stream or device to evaluate on
| ╰─suggestion: Document 'precise' parameter
2682 + ///
2683 | /// ### See Also
2684 | /// - <doc:arithmetic>
warning: Parameter 'precise' is missing documentation
--> ../Ops.swift:2714:5-2714:5
2712 | /// - array: input array
2713 | /// - stream: stream or device to evaluate on
| ╰─suggestion: Document 'precise' parameter
2714 + ///
2715 | /// ### See Also
2716 | /// - ``softmax(_:axes:precise:stream:)``
warning: Parameter 'key' is missing documentation
--> ../Random.swift:768:49-768:49
766 | /// - dtype: type of the output
767 | /// - loc: mean of the distribution
768 + /// - scale: scale "b" of the distribution
| ╰─suggestion: Document 'key' parameter
769 | public static func laplace(
770 | _ shape: some Collection<Int> = [], dtype: DType, loc: Float = 0, scale: Float = 1,
warning: Parameter 'stream' is missing documentation
--> ../Random.swift:768:49-768:49
766 | /// - dtype: type of the output
767 | /// - loc: mean of the distribution
768 + /// - scale: scale "b" of the distribution
| ╰─suggestion: Document 'stream' parameter
769 | public static func laplace(
770 | _ shape: some Collection<Int> = [], dtype: DType, loc: Float = 0, scale: Float = 1,
warning: Parameter 'policyOnlyWhenUnsupported' is missing documentation
--> ../WiredMemory.swift:211:79-211:79
209 | /// - Parameters:
210 | /// - shrinkThresholdRatio: Minimum fractional drop to allow shrinking.
211 + /// - shrinkCooldown: Minimum time between shrink attempts while active.
| ╰─suggestion: Document 'policyOnlyWhenUnsupported' parameter
212 | public init(
213 | shrinkThresholdRatio: Double = 0.25,
warning: Parameter 'useRecommendedWorkingSetWhenUnsupported' is missing documentation
--> ../WiredMemory.swift:211:79-211:79
209 | /// - Parameters:
210 | /// - shrinkThresholdRatio: Minimum fractional drop to allow shrinking.
211 + /// - shrinkCooldown: Minimum time between shrink attempts while active.
| ╰─suggestion: Document 'useRecommendedWorkingSetWhenUnsupported' parameter
212 | public init(
213 | shrinkThresholdRatio: Double = 0.25,
warning: Parameter 'baselineOverride' is missing documentation
--> ../WiredMemory.swift:211:79-211:79
209 | /// - Parameters:
210 | /// - shrinkThresholdRatio: Minimum fractional drop to allow shrinking.
211 + /// - shrinkCooldown: Minimum time between shrink attempts while active.
| ╰─suggestion: Document 'baselineOverride' parameter
212 | public init(
213 | shrinkThresholdRatio: Double = 0.25,
Finished building documentation for 'MLX' (0.96s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/0.31.3
Fetching https://github.com/apple/swift-docc-plugin
Updating https://github.com/apple/swift-numerics
Updated https://github.com/apple/swift-numerics (0.47s)
[1/2171] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (1.19s)
Computing version for https://github.com/apple/swift-numerics
Computed https://github.com/apple/swift-numerics at 1.1.1 (1.77s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.6 (2.21s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3671] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.14s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.85s)
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.6
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 Snippets Snippet.swift
[7/53] Compiling Snippets SnippetParser.swift
[8/53] Emitting module Snippets
[9/53] Compiling SymbolKit Identifier.swift
[10/53] Compiling SymbolKit KindIdentifier.swift
[11/53] Compiling SymbolKit Location.swift
[12/53] Compiling SymbolKit Mutability.swift
[13/57] Compiling SymbolKit GenericConstraint.swift
[14/57] Compiling SymbolKit GenericParameter.swift
[15/57] Compiling SymbolKit Generics.swift
[16/57] Compiling SymbolKit Namespace.swift
[17/57] Compiling SymbolKit SemanticVersion.swift
[18/57] Compiling SymbolKit AccessControl.swift
[19/57] Compiling SymbolKit Availability.swift
[20/57] Compiling SymbolKit AvailabilityItem.swift
[21/57] Compiling SymbolKit Domain.swift
[22/57] Compiling SymbolKit Mixin+Equals.swift
[23/57] Compiling SymbolKit Mixin+Hash.swift
[24/57] Compiling SymbolKit Mixin.swift
[25/57] Compiling SymbolKit LineList.swift
[26/57] Compiling SymbolKit Position.swift
[27/57] Compiling SymbolKit Symbol.swift
[28/57] Compiling SymbolKit SymbolKind.swift
[29/57] Compiling SymbolKit SymbolGraph.swift
[30/57] Compiling SymbolKit GraphCollector.swift
[31/57] Compiling SymbolKit Names.swift
[32/57] Compiling SymbolKit SPI.swift
[33/57] Compiling SymbolKit Snippet.swift
[34/57] Compiling SymbolKit Extension.swift
[35/57] Compiling SymbolKit SourceRange.swift
[36/57] Compiling SymbolKit Metadata.swift
[37/57] Compiling SymbolKit Module.swift
[38/57] Compiling SymbolKit OperatingSystem.swift
[39/57] Compiling SymbolKit Platform.swift
[40/57] Compiling SymbolKit DeclarationFragments.swift
[41/57] Compiling SymbolKit Fragment.swift
[42/57] Compiling SymbolKit FragmentKind.swift
[43/57] Compiling SymbolKit FunctionParameter.swift
[44/57] Compiling SymbolKit FunctionSignature.swift
[45/57] Compiling SymbolKit Relationship.swift
[46/57] Compiling SymbolKit RelationshipKind.swift
[47/57] Compiling SymbolKit SourceOrigin.swift
[48/57] Compiling SymbolKit GenericConstraints.swift
[49/57] Compiling SymbolKit Swift.swift
[50/57] Emitting module SymbolKit
[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 SymbolGraph+Snippet.swift
[56/61] Compiling snippet_extract URL+Status.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.14s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLX' complete! (0.66s)
Target: MLXRandom
Extracting symbol information for 'MLXRandom'...
Finished extracting symbol information for 'MLXRandom'. (0.73s)
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 '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 '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 '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 '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 '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 '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 '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 '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 '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
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
Finished building documentation for 'MLXRandom' (0.06s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.57s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXRandom' complete! (0.64s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
Target: MLXNN
Extracting symbol information for 'MLXNN'...
Finished extracting symbol information for 'MLXNN'. (0.75s)
Building documentation for 'MLXNN'...
warning: 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' doesn't exist at '/MLXNN/ConvTransposed1d'
--> ../ConvolutionTransposed.swift:11:9-11:91
9 | /// - ``ConvTransposed2d``
10 | /// - ``ConvTransposed3d``
11 + /// - ``init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)``
| ╰─suggestion: Replace 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' with 'init(inputChannels:outputChannels:kernelSize:stride:padding:outputPadding:dilation:groups:bias:)'
12 | open class ConvTransposed1d: Module, UnaryLayer {
13 |
warning: 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' doesn't exist at '/MLXNN/ConvTransposed2d'
--> ../ConvolutionTransposed.swift:86:9-86:91
84 | /// - ``ConvTransposed1d``
85 | /// - ``ConvTransposed3d``
86 + /// - ``init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)``
| ╰─suggestion: Replace 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' with 'init(inputChannels:outputChannels:kernelSize:stride:padding:outputPadding:dilation:groups:bias:)'
87 | open class ConvTransposed2d: Module, UnaryLayer {
88 |
warning: 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' doesn't exist at '/MLXNN/ConvTransposed3d'
--> ../ConvolutionTransposed.swift:161:9-161:91
159 | /// - ``ConvTransposed1d``
160 | /// - ``ConvTransposed2d``
161 + /// - ``init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)``
| ╰─suggestion: Replace 'init(inputChannels:outputChannels:kernelSize:stride:padding:dilation:groups:bias:)' with 'init(inputChannels:outputChannels:kernelSize:stride:padding:outputPadding:dilation:groups:bias:)'
162 | open class ConvTransposed3d: Module, UnaryLayer {
163 |
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:382:33-382:59
380 | }
381 |
382 + /// Options for verifying ``update(parameters:verify:)`` and ``update(modules:verify:)``.
| ╰─suggestion: Replace 'update(parameters:verify:)' with 'update(with:)'
383 | public struct VerifyUpdate: OptionSet, Sendable {
384 | public init(rawValue: Int) {
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/VerifyUpdate'
--> ../Module.swift:382:68-382:91
380 | }
381 |
382 + /// Options for verifying ``update(parameters:verify:)`` and ``update(modules:verify:)``.
| ╰─suggestion: Replace 'update(modules:verify:)' with 'update(with:)'
383 | public struct VerifyUpdate: OptionSet, Sendable {
384 | public init(rawValue: Int) {
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module/update(parameters:)'
--> ../Module.swift:401:37-401:63
399 | }
400 |
401 + /// A non-throwing version of ``update(parameters:verify:)``.
402 | ///
403 | /// This passes `verify: .none`. Note that there may still be `fatalErrors()` if
warning: Parameter 'path' is missing documentation
--> ../Module.swift:437:9-437:9
435 | /// or ``mapParameters(map:isLeaf:)`` provides
436 | /// - verify: options for verifying parameters
437 + ///
| ╰─suggestion: Document 'path' parameter
438 | /// ### See Also
439 | /// - <doc:custom-layers>
warning: Parameter 'modulePath' is missing documentation
--> ../Module.swift:437:9-437:9
435 | /// or ``mapParameters(map:isLeaf:)`` provides
436 | /// - verify: options for verifying parameters
437 + ///
| ╰─suggestion: Document 'modulePath' parameter
438 | /// ### See Also
439 | /// - <doc:custom-layers>
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/update(parameters:verify:path:modulePath:)'
--> ../Module.swift:444:13-444:36
442 | /// - ``parameters()``
443 | /// - ``mapParameters(map:isLeaf:)``
444 + /// - ``update(modules:verify:)``
445 | @discardableResult
446 | open func update(
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module/update(modules:)'
--> ../Module.swift:590:37-590:60
588 | }
589 |
590 + /// A non-throwing version of ``update(modules:verify:)``.
591 | ///
592 | /// This passes `verify: .none`. Note that there may still be `fatalErrors()` if
warning: Parameter 'path' is missing documentation
--> ../Module.swift:633:9-633:9
631 | /// - modules: replacement modules in the same format as ``children()`` or ``leafModules()``
632 | /// - verify: options for verifying parameters
633 + ///
| ╰─suggestion: Document 'path' parameter
634 | /// ### See Also
635 | /// - <doc:custom-layers>
warning: Parameter 'modulePath' is missing documentation
--> ../Module.swift:633:9-633:9
631 | /// - modules: replacement modules in the same format as ``children()`` or ``leafModules()``
632 | /// - verify: options for verifying parameters
633 + ///
| ╰─suggestion: Document 'modulePath' parameter
634 | /// ### See Also
635 | /// - <doc:custom-layers>
warning: 'update(parameters:verify:)' doesn't exist at '/MLXNN/Module/update(modules:verify:path:modulePath:)'
--> ../Module.swift:637:13-637:39
635 | /// - <doc:custom-layers>
636 | /// - ``update(modules:)``
637 + /// - ``update(parameters:verify:)``
638 | /// - ``children()``
639 | /// - ``leafModules()``
warning: 'update(modules:verify:)' doesn't exist at '/MLXNN/Module'
--> ../Module.swift:1457:31-1457:54
1455 |
1456 | /// ModuleInfo can provde information about child modules and act as an
1457 + /// 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:)'
1458 | ///
1459 | /// 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:1506:75-1506:98
1504 | /// ```
1505 | ///
1506 + /// 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:)'
1507 | /// replace the contents of `w1`, etc. with a new compatible `Model` after it is created.
1508 | ///
Finished building documentation for 'MLXNN' (0.41s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.54s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXNN' complete! (0.63s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
Target: MLXOptimizers
Extracting symbol information for 'MLXOptimizers'...
Finished extracting symbol information for 'MLXOptimizers'. (0.78s)
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/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.57s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXOptimizers' complete! (0.67s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
Target: MLXFFT
Extracting symbol information for 'MLXFFT'...
Finished extracting symbol information for 'MLXFFT'. (0.73s)
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 '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 '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 '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 '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 | ///
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 | ///
Finished building documentation for 'MLXFFT' (0.05s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.56s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXFFT' complete! (0.65s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
Target: MLXLinalg
Extracting symbol information for 'MLXLinalg'...
Finished extracting symbol information for 'MLXLinalg'. (0.75s)
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/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.54s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXLinalg' complete! (0.66s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
Target: MLXFast
Extracting symbol information for 'MLXFast'...
Finished extracting symbol information for 'MLXFast'. (0.76s)
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/0.31.3
Building for debugging...
[0/3] Write swift-version-49B95AFC49DCD68C.txt
Build of product 'snippet-extract' complete! (0.63s)
Building for debugging...
[0/1] Write swift-version-49B95AFC49DCD68C.txt
Build of target: 'MLXFast' complete! (0.66s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/ml-explore/mlx-swift/0.31.3/linkable-paths.json
4170
34 /Users/admin/builder/spi-builder-workspace/.docs/ml-explore/mlx-swift/0.31.3
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/ml-explore/mlx-swift/0.31.3
File count: 4170
Doc size: 34.0MB
Preparing doc bundle ...
Uploading prod-ml-explore-mlx-swift-0.31.3-ddd313b5.zip to s3://spi-docs-inbox/prod-ml-explore-mlx-swift-0.31.3-ddd313b5.zip
Copying... [11%]
Copying... [20%]
Copying... [31%]
Copying... [41%]
Copying... [50%]
Copying... [61%]
Copying... [71%]
Copying... [80%]
Copying... [91%]
Copying... [100%]
Done.