Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ken0nek/JavaScriptKit
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: swiftwasm/JavaScriptKit
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 17 commits
  • 164 files changed
  • 6 contributors

Commits on Apr 21, 2026

  1. JavaScriptKit: import Android module for non-Wasm Android targets (sw…

    …iftwasm#722)
    
    Building JavaScriptKit for the Swift 6.3 Android SDK triples
    (e.g. aarch64-unknown-linux-android28, x86_64-unknown-linux-android30)
    fails in ThreadLocal.swift with:
    
        error: cannot find 'pthread_key_create' in scope
        error: cannot find 'pthread_key_t' in scope
    
    Android uses Bionic, exposed to Swift as the `Android` module, rather
    than Glibc. The existing conditional falls through to
    `#error("Unsupported platform")` on Android.
    
    Add a `canImport(Android)` branch between the Darwin and Glibc
    branches, matching the pattern already used by Foundation and
    swift-corelibs-libdispatch. No Wasm, Darwin, or Glibc behavior
    changes.
    ken0nek authored Apr 21, 2026
    Configuration menu
    Copy the full SHA
    94f02c3 View commit details
    Browse the repository at this point in the history
  2. Bump actions/upload-pages-artifact from 4 to 5 (swiftwasm#721)

    Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
    - [Release notes](https://github.com/actions/upload-pages-artifact/releases)
    - [Commits](actions/upload-pages-artifact@v4...v5)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-pages-artifact
      dependency-version: '5'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    dependabot[bot] authored Apr 21, 2026
    Configuration menu
    Copy the full SHA
    f458fb6 View commit details
    Browse the repository at this point in the history

Commits on Apr 22, 2026

  1. Configuration menu
    Copy the full SHA
    d70aaff View commit details
    Browse the repository at this point in the history

Commits on Apr 24, 2026

  1. Configuration menu
    Copy the full SHA
    1f8710b View commit details
    Browse the repository at this point in the history
  2. Merge pull request swiftwasm#723 from swiftwasm/feat/identity-mode-up…

    …stream
    
    feat: Add opt-in pointer identity mode for SwiftHeapObject wrappers
    krodak authored Apr 24, 2026
    Configuration menu
    Copy the full SHA
    f3ce20c View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2026

  1. Add Utilities/setup-dev.sh for one-command contributor setup (swiftwa…

    …sm#726)
    
    Wraps the manual steps already documented in CONTRIBUTING.md:
    
      - Verifies required tools (swiftly, swift, jq, npm, make, curl).
      - If a .swift-version file is present, installs the pinned toolchain via
        swiftly.
      - Resolves and installs a matching Wasm SDK from swift-sdk-index
        (idempotent — skipped if already installed).
      - Runs `make bootstrap` to install JS deps.
      - Prints SWIFT_SDK_ID for use with `make unittest`.
    
    The script runs under bash via shebang; the export instructions it prints
    work unchanged in zsh and bash. The repo does not track .swift-version;
    contributors who want it ignored locally can add it to .git/info/exclude.
    The original manual instructions are kept in CONTRIBUTING.md as a fallback.
    matthewa26 authored Apr 26, 2026
    Configuration menu
    Copy the full SHA
    8d279a0 View commit details
    Browse the repository at this point in the history

Commits on Apr 28, 2026

  1. Configuration menu
    Copy the full SHA
    016fa5b View commit details
    Browse the repository at this point in the history

Commits on Apr 30, 2026

  1. BridgeJS: Use @JS types from other modules in the same package (swi…

    …ftwasm#730)
    
    * BridgeJS: Use `@JS` types from other modules in the same package
    
    * BridgeJS: Improve diagnostics with multi-module AOT
    
    * BridgeJS: Fix an issue where the skeleton was being treated as a resource
    
    * Fix typo
    
    * Documentation improvements
    wfltaylor authored Apr 30, 2026
    Configuration menu
    Copy the full SHA
    09b3f4e View commit details
    Browse the repository at this point in the history
  2. [BridgeJS] Synthesize typed-closure init access from declaration surf…

    …ace (swiftwasm#709) (swiftwasm#727)
    
    * [BridgeJS] Synthesize typed-closure init access from declaration surface
    
    Resolves swiftwasm#709: a public `@JSClass` exposing a
    `JSTypedClosure<...>` parameter could not be consumed from another target
    because the synthesized `extension JSTypedClosure { init(...) }` was always
    internal, leaving downstream callers no way to construct the closure value
    without hand-rolling a public wrapper.
    
    Imported skeleton entries now record the source access level
    (`public`/`package`/`internal`); the closure-signature collector takes the
    maximum across every surface that references a given signature, and
    `ClosureCodegen` prefixes the synthesized init with the resulting modifier
    (internal stays bare). This matches the pattern `JSClassMacro` already uses
    for `init(unsafelyWrapping:)`.
    
    * [BridgeJS] Address PR feedback and refresh generated artifacts
    
    - Make `accessLevel` decode-tolerant on imported skeleton structs
      (`ImportedFunctionSkeleton`, `ImportedConstructorSkeleton`,
      `ImportedGetterSkeleton`, `ImportedSetterSkeleton`,
      `ImportedTypeSkeleton`) by writing explicit `init(from:)` decoders
      that fall back to `.internal` when the key is missing. Without this,
      any pre-existing skeleton JSON without the new field fails decoding —
      the `build-examples` CI job hit `DecodingError.keyNotFound` for
      `accessLevel` against externally consumed skeletons.
    - Extract a private `recordSignature` helper so `visitClosure` and
      `recordInjectedSignature` share a single merge implementation.
    - Assert in `withAccessLevel(rawLevel:)` so unknown access strings
      ("open", "private", future schema additions) surface in debug
      builds instead of silently inheriting the outer level.
    - Document the `.internal` seeding assumption on
      `ClosureSignatureCollectorVisitor.init(moduleName:signatures:)`.
    - Regenerate the BridgeJS pre-generated artifacts under Benchmarks/,
      Examples/PlayBridgeJS/, Tests/BridgeJSIdentityTests/, and
      Tests/BridgeJSRuntimeTests/ via `./Utilities/bridge-js-generate.sh`,
      per CONTRIBUTING.md. The runtime-tests Swift output now emits
      `public init` on three `JSTypedClosure` extensions whose signatures
      surface through public exported types.
    
    * [BridgeJS] Refresh identity tests skeleton after merge with main
    
    swiftwasm#731 added the GC lifecycle test (with new imported function entries)
    to main while this branch was open. Re-running the BridgeJS regen
    against the merged tree fills in the `accessLevel` field on the new
    entries that were absent at merge time.
    
    * ci: retry flaky JSPromiseTests.testPromiseAndTimer
    matthewa26 authored Apr 30, 2026
    Configuration menu
    Copy the full SHA
    f483b91 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1c107ad View commit details
    Browse the repository at this point in the history
  4. Merge pull request swiftwasm#732 from swiftwasm/kr/swift-format-ignor…

    …e-generated
    
    BridgeJS: Add swift-format-ignore-file to generated Swift sources
    krodak authored Apr 30, 2026
    Configuration menu
    Copy the full SHA
    44ebc38 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    6eb6668 View commit details
    Browse the repository at this point in the history
  6. Merge pull request swiftwasm#735 from swiftwasm/kr/nested-type-diagno…

    …stic
    
    BridgeJS: Support nested @js types inside structs and classes
    krodak authored Apr 30, 2026
    Configuration menu
    Copy the full SHA
    2dd870e View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f90fe98 View commit details
    Browse the repository at this point in the history
  8. Merge pull request swiftwasm#733 from swiftwasm/kr/struct-init-diagno…

    …stic
    
    BridgeJS: Diagnose struct initializer parameter order mismatch
    krodak authored Apr 30, 2026
    Configuration menu
    Copy the full SHA
    824c051 View commit details
    Browse the repository at this point in the history

Commits on May 4, 2026

  1. BridgeJS: Fix optionals build error with Embedded Swift (swiftwasm#734)

    Remove @_spi(BridgeJS) from _BridgedAsOptional protocol and its
    Optional/JSUndefinedOr conformances so the conformances are visible
    in Embedded Swift mode. The underscore-prefixed protocol name already
    signals internal API, and all extension methods remain @_spi-gated.
    
    Fixes swiftwasm#689
    krodak authored May 4, 2026
    Configuration menu
    Copy the full SHA
    f8b2c96 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    43ed78f View commit details
    Browse the repository at this point in the history
Loading