Skip to content

Commit 21a5f02

Browse files
authored
Merge branch 'main' into main
2 parents be87290 + 5ff12b1 commit 21a5f02

File tree

239 files changed

+11851
-2042
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+11851
-2042
lines changed

.github/actions/prepare_env/action.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ runs:
1212
with:
1313
distribution: ${{ matrix.jdk_vendor }}
1414
java-version: |
15-
24
15+
25
1616
17
1717
cache: 'gradle'
1818
- name: Set JAVA_HOME_{N}
@@ -23,10 +23,10 @@ runs:
2323
elif [[ -n "$JAVA_HOME_21_ARM64" ]]; then
2424
echo "JAVA_HOME_21=$JAVA_HOME_21_ARM64" >> $GITHUB_ENV
2525
fi
26-
if [[ -n "$JAVA_HOME_24_X64" ]]; then
27-
echo "JAVA_HOME_24=$JAVA_HOME_24_X64" >> $GITHUB_ENV
28-
elif [[ -n "$JAVA_HOME_24_ARM64" ]]; then
29-
echo "JAVA_HOME_24=$JAVA_HOME_24_ARM64" >> $GITHUB_ENV
26+
if [[ -n "$JAVA_HOME_25_X64" ]]; then
27+
echo "JAVA_HOME_25=$JAVA_HOME_25_X64" >> $GITHUB_ENV
28+
elif [[ -n "$JAVA_HOME_25_ARM64" ]]; then
29+
echo "JAVA_HOME_25=$JAVA_HOME_25_ARM64" >> $GITHUB_ENV
3030
fi
3131
# - name: Check Java environment
3232
# shell: bash

.github/scripts/validate_docs.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33
set -e
44
set -x
55

6-
cat <<EOF >> Package.swift
6+
DEPENDENCY='.package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.0.0")'
7+
8+
if grep -q "$DEPENDENCY" Package.swift; then
9+
echo "Package.swift already contains 'swift-docc-plugin"
10+
else
11+
cat <<EOF >> Package.swift
712
813
package.dependencies.append(
9-
.package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.0.0")
14+
$DEPENDENCY
1015
)
1116
EOF
17+
fi
1218

1319
swift package --disable-sandbox plugin generate-documentation --target "SwiftJavaDocumentation" --warnings-as-errors --analyze

.github/workflows/pull_request.yml

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: pull_request
22

3+
permissions:
4+
contents: read
5+
36
on:
47
pull_request:
58
types: [opened, reopened, synchronize]
@@ -23,19 +26,19 @@ jobs:
2326
name: Documentation check
2427
runs-on: ubuntu-latest
2528
container:
26-
image: 'swift:6.1-noble'
29+
image: 'swift:6.2-noble'
2730
strategy:
2831
fail-fast: true
2932
matrix:
30-
swift_version: ['6.1.2']
33+
swift_version: ['6.2']
3134
os_version: ['jammy']
3235
jdk_vendor: ['corretto']
3336
steps:
3437
- uses: actions/checkout@v4
3538
- name: Prepare CI Environment
3639
uses: ./.github/actions/prepare_env
3740
- name: Swift Build
38-
run: swift build
41+
run: swift build --disable-experimental-prebuilts # FIXME: until prebuilt swift-syntax isn't broken on 6.2 anymore: https://github.com/swiftlang/swift-java/issues/418
3942
- name: Run documentation check
4043
run: ./.github/scripts/validate_docs.sh
4144

@@ -45,7 +48,7 @@ jobs:
4548
strategy:
4649
fail-fast: true
4750
matrix:
48-
swift_version: ['6.1.2', 'nightly']
51+
swift_version: ['6.2', 'nightly']
4952
os_version: ['jammy']
5053
jdk_vendor: ['corretto']
5154
container:
@@ -71,7 +74,7 @@ jobs:
7174
strategy:
7275
fail-fast: true
7376
matrix:
74-
swift_version: ['6.1.2']
77+
swift_version: ['6.2']
7578
os_version: ['macos']
7679
jdk_vendor: ['corretto']
7780
env:
@@ -95,7 +98,7 @@ jobs:
9598
strategy:
9699
fail-fast: true
97100
matrix:
98-
swift_version: ['6.1.2']
101+
swift_version: ['6.2']
99102
os_version: ['jammy']
100103
jdk_vendor: ['corretto']
101104
container:
@@ -109,13 +112,35 @@ jobs:
109112
- name: Gradle compile JMH benchmarks
110113
run: ./gradlew compileJmh --info
111114

115+
benchmark-swift:
116+
name: Benchmark (Swift) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})
117+
runs-on: ubuntu-latest
118+
strategy:
119+
fail-fast: true
120+
matrix:
121+
swift_version: ['6.2']
122+
os_version: ['jammy']
123+
jdk_vendor: ['corretto']
124+
container:
125+
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
126+
env:
127+
SWIFT_JAVA_VERBOSE: true
128+
steps:
129+
- uses: actions/checkout@v4
130+
- name: Prepare CI Environment
131+
uses: ./.github/actions/prepare_env
132+
- name: Install jemalloc
133+
run: apt-get update && apt-get install -y libjemalloc-dev
134+
- name: Swift Benchmarks
135+
run: swift package --package-path Benchmarks/ --disable-experimental-prebuilts benchmark # FIXME: until prebuilt swift-syntax isn't broken on 6.2 anymore: https://github.com/swiftlang/swift-java/issues/418
136+
112137
test-swift:
113138
name: Test (Swift) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})
114139
runs-on: ubuntu-latest
115140
strategy:
116141
fail-fast: false
117142
matrix:
118-
swift_version: ['6.1.2', 'nightly']
143+
swift_version: ['6.1.3', '6.2', 'nightly']
119144
os_version: ['jammy']
120145
jdk_vendor: ['corretto']
121146
container:
@@ -127,17 +152,17 @@ jobs:
127152
- name: Prepare CI Environment
128153
uses: ./.github/actions/prepare_env
129154
- name: Swift Build
130-
run: "swift build --build-tests --disable-sandbox"
155+
run: swift build --build-tests --disable-sandbox --disable-experimental-prebuilts # FIXME: until prebuilt swift-syntax isn't broken on 6.2 anymore: https://github.com/swiftlang/swift-java/issues/418
131156
- name: Swift Test
132-
run: "swift test"
157+
run: swift test --disable-experimental-prebuilts # FIXME: until prebuilt swift-syntax isn't broken on 6.2 anymore: https://github.com/swiftlang/swift-java/issues/418
133158

134159
test-swift-macos:
135160
name: Test (Swift) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})
136161
runs-on: [self-hosted, macos, sequoia, ARM64]
137162
strategy:
138163
fail-fast: false
139164
matrix:
140-
swift_version: ['6.1.2']
165+
swift_version: ['6.2']
141166
os_version: ['macos']
142167
jdk_vendor: ['corretto']
143168
env:
@@ -151,13 +176,37 @@ jobs:
151176
- name: Swift Test
152177
run: "swift test"
153178

179+
build-swift-android:
180+
name: Sample SwiftJavaExtractJNISampleApp (Android) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}} android:${{matrix.sdk_triple}})
181+
runs-on: ubuntu-latest
182+
strategy:
183+
fail-fast: false
184+
matrix:
185+
swift_version: ['nightly-main']
186+
os_version: ['jammy']
187+
jdk_vendor: ['corretto']
188+
sdk_triple: ['x86_64-unknown-linux-android28']
189+
ndk_version: ['r27d']
190+
container:
191+
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
192+
steps:
193+
- uses: actions/checkout@v4
194+
- name: Prepare CI Environment
195+
uses: ./.github/actions/prepare_env
196+
- name: Install Swift SDK for Android and build
197+
run: |
198+
apt-get -q update && apt-get -yq install curl
199+
cd Samples/SwiftJavaExtractJNISampleApp
200+
curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \
201+
bash -s -- --android --build-command="swift build" --android-sdk-triple="${{ matrix.sdk_triple }}" --android-ndk-version="${{ matrix.ndk_version }}" ${{ matrix.swift_version }}
202+
154203
verify-samples:
155204
name: Sample ${{ matrix.sample_app }} (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})
156205
runs-on: ubuntu-latest
157206
strategy:
158207
fail-fast: false
159208
matrix:
160-
swift_version: ['6.1.2', 'nightly']
209+
swift_version: ['6.1.3', '6.2', 'nightly']
161210
os_version: ['jammy']
162211
jdk_vendor: ['corretto']
163212
sample_app: [ # TODO: use a reusable-workflow to generate those names
@@ -185,7 +234,7 @@ jobs:
185234
strategy:
186235
fail-fast: false
187236
matrix:
188-
swift_version: ['6.1.2'] # no nightly testing on macOS
237+
swift_version: ['6.2'] # no nightly testing on macOS
189238
os_version: ['macos']
190239
jdk_vendor: ['corretto']
191240
sample_app: [ # TODO: use a reusable-workflow to generate those names

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
.sdkmanrc
33

44
.DS_Store
5+
.metals
56
.build
67
.idea
78
.vscode

BuildLogic/src/main/kotlin/build-logic.java-common-conventions.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ plugins {
2323

2424
java {
2525
toolchain {
26-
languageVersion = JavaLanguageVersion.of(24)
26+
languageVersion = JavaLanguageVersion.of(25)
2727
}
2828
}
2929

Package.swift

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// swift-tools-version: 6.0
1+
// swift-tools-version: 6.1
22
// The swift-tools-version declares the minimum version of Swift required to build this package.
33

44
import CompilerPluginSupport
@@ -14,6 +14,9 @@ func findJavaHome() -> String {
1414
print("JAVA_HOME = \(home)")
1515
return home
1616
}
17+
if let opts = ProcessInfo.processInfo.environment["SWIFT_JAVA_JAVA_OPTS"] {
18+
print("SWIFT_JAVA_JAVA_OPTS = \(opts)")
19+
}
1720

1821
// This is a workaround for envs (some IDEs) which have trouble with
1922
// picking up env variables during the build process
@@ -169,9 +172,14 @@ let package = Package(
169172

170173
// Support library written in Swift for SwiftKit "Java"
171174
.library(
172-
name: "SwiftKitSwift",
175+
name: "SwiftJavaRuntimeSupport",
176+
targets: ["SwiftJavaRuntimeSupport"]
177+
),
178+
179+
.library(
180+
name: "SwiftRuntimeFunctions",
173181
type: .dynamic,
174-
targets: ["SwiftKitSwift"]
182+
targets: ["SwiftRuntimeFunctions"]
175183
),
176184

177185
.library(
@@ -197,9 +205,11 @@ let package = Package(
197205

198206
],
199207
dependencies: [
200-
.package(url: "https://github.com/swiftlang/swift-syntax", from: "601.0.1"),
208+
.package(url: "https://github.com/swiftlang/swift-syntax", from: "602.0.0"),
201209
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0"),
202210
.package(url: "https://github.com/apple/swift-system", from: "1.4.0"),
211+
.package(url: "https://github.com/apple/swift-log", from: "1.2.0"),
212+
.package(url: "https://github.com/apple/swift-collections", .upToNextMinor(from: "1.3.0")), // primarily for ordered collections
203213

204214
// // FIXME: swift-subprocess stopped supporting 6.0 when it moved into a package;
205215
// // we'll need to drop 6.0 as well, but currently blocked on doing so by swiftpm plugin pending design questions
@@ -213,7 +223,8 @@ let package = Package(
213223
name: "SwiftJavaDocumentation",
214224
dependencies: [
215225
"SwiftJava",
216-
"SwiftKitSwift",
226+
"SwiftJavaRuntimeSupport",
227+
"SwiftRuntimeFunctions",
217228
]
218229
),
219230

@@ -245,7 +256,8 @@ let package = Package(
245256
exclude: ["swift-java.config"],
246257
swiftSettings: [
247258
.swiftLanguageMode(.v5),
248-
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows]))
259+
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows])),
260+
.unsafeFlags(["-Xfrontend", "-sil-verify-none"], .when(configuration: .release)), // Workaround for https://github.com/swiftlang/swift/issues/84899
249261
],
250262
linkerSettings: [
251263
.unsafeFlags(
@@ -350,22 +362,36 @@ let package = Package(
350362
]
351363
),
352364
.target(
353-
name: "SwiftKitSwift",
354-
dependencies: [],
365+
name: "SwiftJavaRuntimeSupport",
366+
dependencies: [
367+
"CSwiftJavaJNI",
368+
"SwiftJava"
369+
],
355370
swiftSettings: [
356371
.swiftLanguageMode(.v5),
357372
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
358373
]
359374
),
360375

361376
.target(
362-
name: "CSwiftJavaJNI",
377+
name: "SwiftRuntimeFunctions",
363378
swiftSettings: [
364379
.swiftLanguageMode(.v5),
365380
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"])
366381
]
367382
),
368383

384+
.target(
385+
name: "CSwiftJavaJNI",
386+
swiftSettings: [
387+
.swiftLanguageMode(.v5),
388+
.unsafeFlags(["-I\(javaIncludePath)", "-I\(javaPlatformIncludePath)"], .when(platforms: [.macOS, .linux, .windows]))
389+
],
390+
linkerSettings: [
391+
.linkedLibrary("log", .when(platforms: [.android]))
392+
]
393+
),
394+
369395
.target(
370396
name: "SwiftJavaConfigurationShared"
371397
),
@@ -377,6 +403,8 @@ let package = Package(
377403
.target(
378404
name: "SwiftJavaToolLib",
379405
dependencies: [
406+
.product(name: "Logging", package: "swift-log"),
407+
.product(name: "OrderedCollections", package: "swift-collections"),
380408
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
381409
.product(name: "SwiftSyntax", package: "swift-syntax"),
382410
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
@@ -432,6 +460,7 @@ let package = Package(
432460
.product(name: "SwiftSyntax", package: "swift-syntax"),
433461
.product(name: "SwiftSyntaxBuilder", package: "swift-syntax"),
434462
.product(name: "ArgumentParser", package: "swift-argument-parser"),
463+
.product(name: "OrderedCollections", package: "swift-collections"),
435464
"JavaTypes",
436465
"SwiftJavaShared",
437466
"SwiftJavaConfigurationShared",

0 commit comments

Comments
 (0)