Build Information
Failed to build Phoenix, reference main (7f5019), with Swift 6.2 for Wasm on 13 Jul 2026 16:14:52 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-53886770-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.2-latest swift build --swift-sdk swift-6.2-RELEASE_wasm 2>&1Build Log
========================================
RunAll
========================================
Builder version: ee7f7f69ffe4e79de74a2a3c774eb39d565d38f4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/shareup/phoenix-apple.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/shareup/phoenix-apple
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 7f50194 Update JSON (#53)
Cloned https://github.com/shareup/phoenix-apple.git
Revision (git rev-parse @):
7f50194c19dd6ab3caa7d210da65c92abc9d6360
SUCCESS checkout https://github.com/shareup/phoenix-apple.git at main
========================================
Build
========================================
Selected platform: wasm
Swift version: 6.2
Building package at path: $PWD
https://github.com/shareup/phoenix-apple.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-53886770-0":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.2-latest swift build --swift-sdk swift-6.2-RELEASE_wasm 2>&1
wasm-6.2-latest: Pulling from saguaro1/spi-images
Digest: sha256:dc8dffc38f1d92eca7ee5312617822470123661393ed20672e77964f9dcaaffb
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.2-latest
Fetching https://github.com/shareup/dispatch-timer.git
Fetching https://github.com/apple/swift-collections.git
Fetching https://github.com/shareup/websocket-apple.git
Fetching https://github.com/shareup/async-extensions.git
Fetching https://github.com/shareup/json-apple.git
Fetching https://github.com/shareup/synchronized.git
[1/737] Fetching websocket-apple
[193/856] Fetching websocket-apple, dispatch-timer
[688/1343] Fetching websocket-apple, dispatch-timer, async-extensions
[861/1569] Fetching websocket-apple, dispatch-timer, async-extensions, synchronized
Fetched https://github.com/shareup/dispatch-timer.git from cache (0.36s)
[918/1450] Fetching websocket-apple, async-extensions, synchronized
[1451/27435] Fetching websocket-apple, async-extensions, synchronized, swift-collections
[3270/27592] Fetching websocket-apple, async-extensions, synchronized, swift-collections, json-apple
Fetched https://github.com/shareup/synchronized.git from cache (1.04s)
Fetched https://github.com/shareup/async-extensions.git from cache (1.04s)
Fetched https://github.com/shareup/websocket-apple.git from cache (1.04s)
Fetched https://github.com/shareup/json-apple.git from cache (1.04s)
Fetched https://github.com/apple/swift-collections.git from cache (1.05s)
Computing version for https://github.com/shareup/synchronized.git
Computed https://github.com/shareup/synchronized.git at 4.0.1 (1.91s)
Computing version for https://github.com/shareup/json-apple.git
Computed https://github.com/shareup/json-apple.git at 2.0.0 (0.13s)
Computing version for https://github.com/shareup/websocket-apple.git
Computed https://github.com/shareup/websocket-apple.git at 4.1.2 (0.13s)
Computing version for https://github.com/shareup/dispatch-timer.git
Computed https://github.com/shareup/dispatch-timer.git at 3.0.2 (0.16s)
Computing version for https://github.com/shareup/async-extensions.git
Computed https://github.com/shareup/async-extensions.git at 4.4.0 (0.13s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.6.0 (0.24s)
Creating working copy for https://github.com/shareup/dispatch-timer.git
Working copy of https://github.com/shareup/dispatch-timer.git resolved at 3.0.2
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.6.0
Creating working copy for https://github.com/shareup/websocket-apple.git
Working copy of https://github.com/shareup/websocket-apple.git resolved at 4.1.2
Creating working copy for https://github.com/shareup/json-apple.git
Working copy of https://github.com/shareup/json-apple.git resolved at 2.0.0
Creating working copy for https://github.com/shareup/async-extensions.git
Working copy of https://github.com/shareup/async-extensions.git resolved at 4.4.0
Creating working copy for https://github.com/shareup/synchronized.git
Working copy of https://github.com/shareup/synchronized.git resolved at 4.0.1
Building for debugging...
[0/16] Write sources
[15/16] Write swift-version-24593BA9C3E375BF.txt
[17/41] Compiling InternalCollectionsUtilities UnsafeMutableRawBufferPointer+Extras.swift
[18/41] Compiling InternalCollectionsUtilities UnsafeRawBufferPointer+Extras.swift
[19/43] Compiling InternalCollectionsUtilities _SortedCollection.swift
[20/43] Compiling InternalCollectionsUtilities _UniqueCollection.swift
[21/43] Compiling InternalCollectionsUtilities LifetimeOverride.swift
[22/43] Compiling InternalCollectionsUtilities RandomAccessCollection+Offsets.swift
[23/43] Compiling InternalCollectionsUtilities Span+Extras.swift
[24/43] Compiling InternalCollectionsUtilities Integer rank.swift
[25/43] Compiling InternalCollectionsUtilities UInt+first and last set bit.swift
[26/43] Compiling InternalCollectionsUtilities UInt+reversed.swift
[27/43] Compiling InternalCollectionsUtilities _UnsafeBitSet+_Word.swift
[28/43] Compiling InternalCollectionsUtilities _UnsafeBitSet.swift
[29/43] Compiling InternalCollectionsUtilities UnsafeBufferPointer+Extras.swift
[30/43] Compiling InternalCollectionsUtilities UnsafeMutableBufferPointer+Extras.swift
[31/43] Emitting module InternalCollectionsUtilities
[32/43] Compiling InternalCollectionsUtilities Debugging.swift
[33/43] Compiling InternalCollectionsUtilities Descriptions.swift
[34/43] Compiling InternalCollectionsUtilities FixedWidthInteger+roundUpToPowerOfTwo.swift
[35/43] Compiling InternalCollectionsUtilities String+Padding.swift
[36/43] Compiling InternalCollectionsUtilities _UnsafeBitSet+Index.swift
[38/185] Compiling BitCollections BitSet+Extras.swift
[39/185] Compiling BitCollections BitSet+Hashable.swift
[40/185] Compiling BitCollections BitSet+SetAlgebra formUnion.swift
[41/185] Compiling BitCollections BitSet+SetAlgebra intersection.swift
[42/185] Compiling BitCollections BitSet+SetAlgebra isDisjoint.swift
[43/202] Compiling BitCollections BitSet+CustomDebugStringConvertible.swift
[44/202] Compiling BitCollections BitSet+CustomReflectable.swift
[45/202] Compiling BitCollections BitSet+CustomStringConvertible.swift
[46/202] Compiling BitCollections BitSet+Equatable.swift
[47/202] Compiling BitCollections BitSet+ExpressibleByArrayLiteral.swift
[48/202] Compiling BitCollections BitArray+Hashable.swift
[49/202] Compiling BitCollections BitArray+Initializers.swift
[50/202] Compiling BitCollections BitArray+Invariants.swift
[51/202] Compiling BitCollections BinaryInteger extensions.swift
[52/202] Compiling BitCollections BitArray+BitwiseOperations.swift
[53/207] Compiling HeapModule Heap+Descriptions.swift
[54/252] Compiling _RopeModule BigString+Chunk+RopeElement.swift
[55/252] Compiling HashTreeCollections _HashNode+Subtree Removals.swift
[56/252] Compiling HashTreeCollections _HashNode+UnsafeHandle.swift
[57/252] Compiling HashTreeCollections _HashNode.swift
[58/252] Compiling HashTreeCollections _HashNodeHeader.swift
[59/252] Compiling _RopeModule BigString+Chunk+Breaks.swift
[60/252] Compiling _RopeModule BigString+Chunk+Character.swift
[61/252] Compiling _RopeModule BigString+Chunk+Counts.swift
[62/252] Compiling _RopeModule BigString+Chunk+Description.swift
[63/252] Compiling _RopeModule BigString+Chunk+Index.swift
[64/270] Compiling _RopeModule BigString+Chunk.swift
[65/270] Compiling _RopeModule BigString+BidirectionalCollection.swift
[66/270] Compiling HashTreeCollections _HashTreeIterator.swift
[67/270] Compiling HashTreeCollections _HashTreeStatistics.swift
[68/270] Compiling HashTreeCollections _RawHashNode+UnsafeHandle.swift
[69/348] Compiling _RopeModule BigString+Managing Breaks.swift
[70/348] Compiling _RopeModule BigString+RemoveSubrange.swift
[71/348] Compiling _RopeModule BigString+ReplaceSubrange.swift
[72/348] Compiling _RopeModule BigString+Split.swift
[73/348] Compiling HeapModule _HeapNode.swift
[74/348] Compiling HeapModule Heap.swift
[75/348] Emitting module ContainersPreview
[76/348] Compiling _RopeModule BigString+Builder.swift
[77/348] Compiling HashTreeCollections _Bitmap.swift
[78/348] Compiling _RopeModule BigString+Debugging.swift
[79/348] Compiling _RopeModule BigString+Index.swift
[80/348] Compiling _RopeModule BigString+Ingester.swift
[82/349] Emitting module HeapModule
[83/349] Compiling Synchronized RecursiveLock.swift
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:11:15: error: cannot find 'pthread_mutexattr_init' in scope
9 |
10 | var attributes = pthread_mutexattr_t()
11 | guard pthread_mutexattr_init(&attributes) == 0
| `- error: cannot find 'pthread_mutexattr_init' in scope
12 | else { preconditionFailure() }
13 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:14:15: error: cannot find 'pthread_mutexattr_settype' in scope
12 | else { preconditionFailure() }
13 |
14 | guard pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE) == 0
| `- error: cannot find 'pthread_mutexattr_settype' in scope
15 | else { preconditionFailure() }
16 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:14:54: error: cannot find 'PTHREAD_MUTEX_RECURSIVE' in scope
12 | else { preconditionFailure() }
13 |
14 | guard pthread_mutexattr_settype(&attributes, PTHREAD_MUTEX_RECURSIVE) == 0
| `- error: cannot find 'PTHREAD_MUTEX_RECURSIVE' in scope
15 | else { preconditionFailure() }
16 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:17:15: error: cannot find 'pthread_mutex_init' in scope
15 | else { preconditionFailure() }
16 |
17 | guard pthread_mutex_init(backing, &attributes) == 0
| `- error: cannot find 'pthread_mutex_init' in scope
18 | else { preconditionFailure() }
19 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:20:9: error: cannot find 'pthread_mutexattr_destroy' in scope
18 | else { preconditionFailure() }
19 |
20 | pthread_mutexattr_destroy(&attributes)
| `- error: cannot find 'pthread_mutexattr_destroy' in scope
21 | }
22 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:24:9: error: cannot find 'pthread_mutex_destroy' in scope
22 |
23 | deinit {
24 | pthread_mutex_destroy(backing)
| `- error: cannot find 'pthread_mutex_destroy' in scope
25 | backing.deinitialize(count: 1)
26 | backing.deallocate()
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:30:19: error: cannot find 'pthread_mutex_lock' in scope
28 |
29 | public func locked<T>(_ block: () throws -> T) rethrows -> T {
30 | let ret = pthread_mutex_lock(backing)
| `- error: cannot find 'pthread_mutex_lock' in scope
31 | // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/pthread_mutex_lock.3.html
32 | precondition(ret == 0, "Could not acquire lock: '\(ret)'")
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:33:17: error: cannot find 'pthread_mutex_unlock' in scope
31 | // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/pthread_mutex_lock.3.html
32 | precondition(ret == 0, "Could not acquire lock: '\(ret)'")
33 | defer { pthread_mutex_unlock(backing) }
| `- error: cannot find 'pthread_mutex_unlock' in scope
34 | return try block()
35 | }
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:39:12: error: cannot find 'pthread_mutex_trylock' in scope
37 | public func tryLocked(_ block: () throws -> Void) rethrows -> Bool {
38 | // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/pthread_mutex_trylock.3.html#//apple_ref/doc/man/3/pthread_mutex_trylock
39 | if pthread_mutex_trylock(backing) == 0 {
| `- error: cannot find 'pthread_mutex_trylock' in scope
40 | defer { pthread_mutex_unlock(backing) }
41 | try block()
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/RecursiveLock.swift:40:21: error: cannot find 'pthread_mutex_unlock' in scope
38 | // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/pthread_mutex_trylock.3.html#//apple_ref/doc/man/3/pthread_mutex_trylock
39 | if pthread_mutex_trylock(backing) == 0 {
40 | defer { pthread_mutex_unlock(backing) }
| `- error: cannot find 'pthread_mutex_unlock' in scope
41 | try block()
42 | return true
[84/349] Compiling HeapModule Heap+Invariants.swift
[85/349] Compiling HeapModule Heap+UnsafeHandle.swift
[86/349] Compiling HeapModule Heap+ExpressibleByArrayLiteral.swift
[92/350] Compiling _RopeModule BigString+Invariants.swift
[93/350] Compiling _RopeModule BigString+Metrics.swift
[94/350] Compiling _RopeModule BigString+Summary.swift
[95/350] Compiling Synchronized Locked.swift
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:4:54: error: cannot find type 'os_unfair_lock' in scope
2 |
3 | public struct Locked<Element> {
4 | private final class Lock: ManagedBuffer<Element, os_unfair_lock> {
| `- error: cannot find type 'os_unfair_lock' in scope
5 | deinit {
6 | withUnsafeMutablePointerToElements { lock in
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:12:48: error: cannot find type 'os_unfair_lock' in scope
10 | }
11 |
12 | private let buffer: ManagedBuffer<Element, os_unfair_lock>
| `- error: cannot find type 'os_unfair_lock' in scope
13 |
14 | public init(_ element: Element) {
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:6:13: error: type of expression is ambiguous without a type annotation
4 | private final class Lock: ManagedBuffer<Element, os_unfair_lock> {
5 | deinit {
6 | withUnsafeMutablePointerToElements { lock in
| `- error: type of expression is ambiguous without a type annotation
7 | _ = lock.deinitialize(count: 1)
8 | }
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:17:35: error: cannot find 'os_unfair_lock' in scope
15 | buffer = Lock.create(minimumCapacity: 1) { buffer in
16 | buffer.withUnsafeMutablePointerToElements {
17 | $0.initialize(to: os_unfair_lock())
| `- error: cannot find 'os_unfair_lock' in scope
18 | }
19 | return element
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:15:16: error: type of expression is ambiguous without a type annotation
13 |
14 | public init(_ element: Element) {
15 | buffer = Lock.create(minimumCapacity: 1) { buffer in
| `- error: type of expression is ambiguous without a type annotation
16 | buffer.withUnsafeMutablePointerToElements {
17 | $0.initialize(to: os_unfair_lock())
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:25:13: error: cannot find 'os_unfair_lock_lock' in scope
23 | public func access<Return>(_ block: (inout Element) throws -> Return) rethrows -> Return {
24 | try buffer.withUnsafeMutablePointers { element, lock in
25 | os_unfair_lock_lock(lock)
| `- error: cannot find 'os_unfair_lock_lock' in scope
26 | defer { os_unfair_lock_unlock(lock) }
27 | return try block(&element.pointee)
[96/357] Compiling JSON JSON.swift
/host/spi-builder-workspace/.build/checkouts/json-apple/Sources/JSON/JSON.swift:685:9: error: cannot find 'CFBooleanGetTypeID' in scope
683 | private extension NSNumber {
684 | var isBool: Bool {
685 | CFBooleanGetTypeID() == CFGetTypeID(self)
| `- error: cannot find 'CFBooleanGetTypeID' in scope
686 | }
687 | }
/host/spi-builder-workspace/.build/checkouts/json-apple/Sources/JSON/JSON.swift:685:33: error: cannot find 'CFGetTypeID' in scope
683 | private extension NSNumber {
684 | var isBool: Bool {
685 | CFBooleanGetTypeID() == CFGetTypeID(self)
| `- error: cannot find 'CFGetTypeID' in scope
686 | }
687 | }
[97/357] Compiling JSON Dictionary+JSON.swift
/host/spi-builder-workspace/.build/checkouts/json-apple/Sources/JSON/Dictionary+JSON.swift:73:9: error: cannot find 'CFBooleanGetTypeID' in scope
71 | private extension NSNumber {
72 | var isBool: Bool {
73 | CFBooleanGetTypeID() == CFGetTypeID(self)
| `- error: cannot find 'CFBooleanGetTypeID' in scope
74 | }
75 | }
/host/spi-builder-workspace/.build/checkouts/json-apple/Sources/JSON/Dictionary+JSON.swift:73:33: error: cannot find 'CFGetTypeID' in scope
71 | private extension NSNumber {
72 | var isBool: Bool {
73 | CFBooleanGetTypeID() == CFGetTypeID(self)
| `- error: cannot find 'CFGetTypeID' in scope
74 | }
75 | }
[98/357] Emitting module JSON
error: emit-module command failed with exit code 1 (use -v to see invocation)
[100/357] Emitting module Synchronized
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:4:47: error: cannot find type 'os_unfair_lock' in scope
2 |
3 | public final class Lock {
4 | private var backing: UnsafeMutablePointer<os_unfair_lock>
| `- error: cannot find type 'os_unfair_lock' in scope
5 |
6 | public init() {
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:4:54: error: cannot find type 'os_unfair_lock' in scope
2 |
3 | public struct Locked<Element> {
4 | private final class Lock: ManagedBuffer<Element, os_unfair_lock> {
| `- error: cannot find type 'os_unfair_lock' in scope
5 | deinit {
6 | withUnsafeMutablePointerToElements { lock in
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Locked.swift:12:48: error: cannot find type 'os_unfair_lock' in scope
10 | }
11 |
12 | private let buffer: ManagedBuffer<Element, os_unfair_lock>
| `- error: cannot find type 'os_unfair_lock' in scope
13 |
14 | public init(_ element: Element) {
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:4:47: error: cannot find type 'os_unfair_lock' in scope
2 |
3 | public final class Lock {
4 | private var backing: UnsafeMutablePointer<os_unfair_lock>
| `- error: cannot find type 'os_unfair_lock' in scope
5 |
6 | public init() {
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:7:40: error: cannot find type 'os_unfair_lock' in scope
5 |
6 | public init() {
7 | backing = UnsafeMutablePointer<os_unfair_lock>.allocate(capacity: 1)
| `- error: cannot find type 'os_unfair_lock' in scope
8 | backing.initialize(to: os_unfair_lock())
9 | }
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:8:32: error: cannot find 'os_unfair_lock' in scope
6 | public init() {
7 | backing = UnsafeMutablePointer<os_unfair_lock>.allocate(capacity: 1)
8 | backing.initialize(to: os_unfair_lock())
| `- error: cannot find 'os_unfair_lock' in scope
9 | }
10 |
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:18:9: error: cannot find 'os_unfair_lock_lock' in scope
16 | public func locked<T>(_ block: () throws -> T) rethrows -> T {
17 | // https://developer.apple.com/documentation/os/1646466-os_unfair_lock_lock
18 | os_unfair_lock_lock(backing)
| `- error: cannot find 'os_unfair_lock_lock' in scope
19 | defer { os_unfair_lock_unlock(backing) }
20 | return try block()
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:19:17: error: cannot find 'os_unfair_lock_unlock' in scope
17 | // https://developer.apple.com/documentation/os/1646466-os_unfair_lock_lock
18 | os_unfair_lock_lock(backing)
19 | defer { os_unfair_lock_unlock(backing) }
| `- error: cannot find 'os_unfair_lock_unlock' in scope
20 | return try block()
21 | }
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:25:12: error: cannot find 'os_unfair_lock_trylock' in scope
23 | public func tryLocked(_ block: () throws -> Void) rethrows -> Bool {
24 | // https://developer.apple.com/documentation/os/1646469-os_unfair_lock_trylock
25 | if os_unfair_lock_trylock(backing) {
| `- error: cannot find 'os_unfair_lock_trylock' in scope
26 | defer { os_unfair_lock_unlock(backing) }
27 | try block()
/host/spi-builder-workspace/.build/checkouts/synchronized/Sources/Synchronized/Lock.swift:26:21: error: cannot find 'os_unfair_lock_unlock' in scope
24 | // https://developer.apple.com/documentation/os/1646469-os_unfair_lock_trylock
25 | if os_unfair_lock_trylock(backing) {
26 | defer { os_unfair_lock_unlock(backing) }
| `- error: cannot find 'os_unfair_lock_unlock' in scope
27 | try block()
28 | return true
BUILD FAILURE 6.2 wasm