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: swiftwasm/JavaScriptKit
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.50.2
Choose a base ref
...
head repository: swiftwasm/JavaScriptKit
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.51.0
Choose a head ref
  • 10 commits
  • 158 files changed
  • 6 contributors

Commits on Apr 14, 2026

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

Commits on Apr 21, 2026

  1. JavaScriptKit: import Android module for non-Wasm Android targets (#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 (#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 #723 from swiftwasm/feat/identity-mode-upstream

    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 (#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 (#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 (#709) (#727)
    
    * [BridgeJS] Synthesize typed-closure init access from declaration surface
    
    Resolves #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
    
    #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
Loading