googleprojectzero / googleprojectzero/fuzzilli

Build Failure on Linux (Swift 5.10.1): [[ Missing Darwin APIs sequence counting and type errors

Open
#539 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
2.3k
Forks
367
Avg merge
23h 53m
Merged PRs (30d)
1

Description

Environment
OS: Kali Linux (x86_64)
Swift Toolchain: 5.10.1
Build Command: swift build -c release
Fuzzilli Revision: (current main, as of November 2025)

Fuzzilli fails to compile on Linux using Swift 5.10.1 due to Darwin specific APIs operator overloading conflicts and sequence counting syntax that differs from macOS Swift Foundation implementations

Steps to Reproduce::::

git clone https://github.com/googleprojectzero/fuzzilli.git
cd fuzzilli
# get swift if not available in the system
swift build -c release

Representative errors::::
/Fuzzilli/Environment/JavaScriptEnvironment.swift:3224:125: error: type 'Locale' has no member 'NumberingSystem'
/Fuzzilli/Environment/JavaScriptEnvironment.swift:3240:117: error: type 'Locale' has no member 'Currency'
/Fuzzilli/Lifting/WasmLifter.swift:716:52: error: cannot call value of non-function type 'Int'
temp += Leb128.unsignedEncode(self.exports.count { $0.getImport() != nil })
...
/Fuzzilli/Lifting/WasmLifter.swift:833:18: error: operator function '+=' requires that 'Data' conform to 'AttributedStringProtocol'

note:::
/FuzzIL/WasmOperations.swift:1353:13: error: the compiler is unable to type check this expression in reasonable time

Causes::

  1. Darwin only locale extensions
    Locale.NumberingSystem and Locale.Currency are ( unavailable ) on linux Foundation.
  2. Sequence counting syntax differences
    Linux Swift requires .count(where:) or .filter(...).count instead of .count { predicate }
  3. Type mismatch with data and operator +=
    += operator on data conflicts with AttributedStringProtocol overloads
  4. Complex chained expressions causing type check timeouts.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce with Swift 5.10.1 on Linux using swift build -c release. Inspect the reported locations in Environment/JavaScriptEnvironment.swift, Lifting/WasmLifter.swift, and FuzzIL/WasmOperations.swift, then compare the failing Foundation APIs, sequence expressions, Data operations, and type-checking expression with Linux-compatible usage. Done means the release build completes successfully on Linux.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
build-system, compilers, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.