Skip to content

Commit d266a44

Browse files
authored
Separate SwiftKit into SwiftKitCore and SwiftKitFFM (#300)
1 parent e887a9f commit d266a44

File tree

62 files changed

+689
-382
lines changed

Some content is hidden

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

62 files changed

+689
-382
lines changed

.github/actions/prepare_env/action.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ runs:
1111
java-version: |
1212
24
1313
21
14+
19
1415
cache: 'gradle'
1516
- name: Set JAVA_HOME_{N}
1617
shell: bash

.github/workflows/pull_request.yml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ jobs:
3131
- uses: actions/checkout@v4
3232
- name: Prepare CI Environment
3333
uses: ./.github/actions/prepare_env
34-
- name: Gradle :SwiftKit:build
35-
run: ./gradlew build -x test
36-
- name: Gradle :SwiftKit:check
37-
run: ./gradlew :SwiftKit:check --info
34+
- name: Gradle :SwiftKitCore:build
35+
run: ./gradlew :SwiftKitCore:build -x test
36+
- name: Gradle :SwiftKitCore:check
37+
run: ./gradlew :SwiftKitCore:check --info
38+
- name: Gradle :SwiftKitFFM:build
39+
run: ./gradlew :SwiftKitFFM:build -x test
40+
- name: Gradle :SwiftKitFFM:check
41+
run: ./gradlew :SwiftKitFFM:check --info
3842

3943
test-java-macos:
4044
name: Test (Java) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})
@@ -51,10 +55,14 @@ jobs:
5155
- uses: actions/checkout@v4
5256
- name: Prepare CI Environment
5357
uses: ./.github/actions/prepare_env
54-
- name: Gradle :SwiftKit:build
55-
run: ./gradlew build -x test
56-
- name: Gradle :SwiftKit:check
57-
run: ./gradlew :SwiftKit:check --debug
58+
- name: Gradle :SwiftKitCore:build
59+
run: ./gradlew :SwiftKitCore:build -x test
60+
- name: Gradle :SwiftKitCore:check
61+
run: ./gradlew :SwiftKitCore:check --debug
62+
- name: Gradle :SwiftKitFFM:build
63+
run: ./gradlew :SwiftKitFFM:build -x test
64+
- name: Gradle :SwiftKitFFM:check
65+
run: ./gradlew :SwiftKitFFM:check --debug
5866

5967
benchmark-java:
6068
name: Benchmark (JMH) (${{ matrix.os_version }} swift:${{ matrix.swift_version }} jdk:${{matrix.jdk_vendor}})

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

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,6 @@ repositories {
3131
mavenCentral()
3232
}
3333

34-
testing {
35-
suites {
36-
val test by getting(JvmTestSuite::class) {
37-
useJUnitJupiter("5.10.3")
38-
}
39-
}
40-
}
41-
42-
/// Enable access to preview APIs, e.g. java.lang.foreign.* (Panama)
43-
tasks.withType(JavaCompile::class).forEach {
44-
it.options.compilerArgs.add("--enable-preview")
45-
it.options.compilerArgs.add("-Xlint:preview")
46-
}
47-
48-
4934
fun getSwiftRuntimeLibraryPaths(): List<String> {
5035
val process = ProcessBuilder("swiftc", "-print-target-info")
5136
.redirectError(ProcessBuilder.Redirect.INHERIT)

Samples/JExtractJNISampleApp/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ tasks.clean {
148148
}
149149

150150
dependencies {
151-
implementation(project(':SwiftKit'))
151+
implementation(project(':SwiftKitCore'))
152152

153153
testImplementation(platform("org.junit:junit-bom:5.10.0"))
154154
testImplementation("org.junit.jupiter:junit-jupiter")

Samples/JExtractJNISampleApp/src/main/java/com/example/swift/HelloJava2SwiftJNI.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818

1919
// Import javakit/swiftkit support libraries
2020

21-
import org.swift.swiftkit.SwiftKit;
21+
import org.swift.swiftkit.core.SwiftLibraries;
2222

2323
public class HelloJava2SwiftJNI {
2424

2525
public static void main(String[] args) {
26-
System.out.print("Property: java.library.path = " + SwiftKit.getJavaLibraryPath());
26+
System.out.print("Property: java.library.path = " + SwiftLibraries.getJavaLibraryPath());
2727

2828
examples();
2929
}
@@ -35,10 +35,8 @@ static void examples() {
3535
MySwiftLibrary.globalTakeIntInt(1337, 42);
3636

3737
long cnt = MySwiftLibrary.globalWriteString("String from Java");
38-
SwiftKit.trace("count = " + cnt);
3938

4039
long i = MySwiftLibrary.globalMakeInt();
41-
SwiftKit.trace("globalMakeInt() = " + i);
4240

4341
MySwiftClass.method();
4442

Samples/SwiftAndJavaJarSampleLib/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ java {
4343
}
4444

4545
dependencies {
46-
implementation(project(':SwiftKit'))
46+
implementation(project(':SwiftKitCore'))
47+
implementation(project(':SwiftKitFFM'))
4748

4849
testImplementation(platform("org.junit:junit-bom:5.10.0"))
4950
testImplementation("org.junit.jupiter:junit-jupiter")

Samples/SwiftAndJavaJarSampleLib/ci-validate.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ fi
2727

2828
# check if we can compile a plain Example file that uses the generated Java bindings that should be in the generated jar
2929
# The classpath MUST end with a * if it contains jar files, and must not if it directly contains class files.
30-
SWIFTKIT_CLASSPATH="$(pwd)/../../SwiftKit/build/libs/*"
30+
SWIFTKIT_CORE_CLASSPATH="$(pwd)/../../SwiftKitCore/build/libs/*"
31+
SWIFTKIT_FFM_CLASSPATH="$(pwd)/../../SwiftKitFFM/build/libs/*"
3132
MYLIB_CLASSPATH="$(pwd)/build/libs/*"
32-
CLASSPATH="$(pwd)/:${SWIFTKIT_CLASSPATH}:${MYLIB_CLASSPATH}"
33+
CLASSPATH="$(pwd)/:${SWIFTKIT_FFM_CLASSPATH}:${SWIFTKIT_CORE_CLASSPATH}:${MYLIB_CLASSPATH}"
3334
echo "CLASSPATH = ${CLASSPATH}"
3435

3536
$JAVAC -cp "${CLASSPATH}" Example.java

Samples/SwiftAndJavaJarSampleLib/src/jmh/java/org/swift/swiftkit/JavaToSwiftBenchmark.java renamed to Samples/SwiftAndJavaJarSampleLib/src/jmh/java/org/swift/swiftkit/ffm/JavaToSwiftBenchmark.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15-
package org.swift.swiftkit;
15+
package org.swift.swiftkit.ffm;
1616

1717
import java.util.concurrent.TimeUnit;
1818

Samples/SwiftAndJavaJarSampleLib/src/main/java/com/example/swift/HelloJava2Swift.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,18 @@
1616

1717
// Import swift-extract generated sources
1818

19-
import com.example.swift.MySwiftLibrary;
20-
import com.example.swift.MySwiftClass;
21-
2219
// Import javakit/swiftkit support libraries
23-
import org.swift.swiftkit.SwiftArena;
24-
import org.swift.swiftkit.SwiftKit;
25-
import org.swift.swiftkit.SwiftValueWitnessTable;
26-
27-
import java.util.Arrays;
20+
import org.swift.swiftkit.core.SwiftLibraries;
21+
import org.swift.swiftkit.ffm.AllocatingSwiftArena;
22+
import org.swift.swiftkit.ffm.SwiftRuntime;
2823

2924
public class HelloJava2Swift {
3025

3126
public static void main(String[] args) {
3227
boolean traceDowncalls = Boolean.getBoolean("jextract.trace.downcalls");
3328
System.out.println("Property: jextract.trace.downcalls = " + traceDowncalls);
3429

35-
System.out.print("Property: java.library.path = " +SwiftKit.getJavaLibraryPath());
30+
System.out.print("Property: java.library.path = " + SwiftLibraries.getJavaLibraryPath());
3631

3732
examples();
3833
}
@@ -43,12 +38,12 @@ static void examples() {
4338
MySwiftLibrary.globalTakeInt(1337);
4439

4540
// Example of using an arena; MyClass.deinit is run at end of scope
46-
try (var arena = SwiftArena.ofConfined()) {
41+
try (var arena = AllocatingSwiftArena.ofConfined()) {
4742
MySwiftClass obj = MySwiftClass.init(2222, 7777, arena);
4843

4944
// just checking retains/releases work
50-
SwiftKit.retain(obj);
51-
SwiftKit.release(obj);
45+
SwiftRuntime.retain(obj);
46+
SwiftRuntime.release(obj);
5247

5348
obj.voidMethod();
5449
obj.takeIntMethod(42);

Samples/SwiftAndJavaJarSampleLib/src/test/java/com/example/swift/MySwiftClassTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
import org.junit.jupiter.api.Disabled;
1818
import org.junit.jupiter.api.Test;
19-
import org.swift.swiftkit.SwiftArena;
20-
import org.swift.swiftkit.SwiftKit;
19+
import org.swift.swiftkit.core.SwiftLibraries;
20+
import org.swift.swiftkit.ffm.AllocatingSwiftArena;
2121

2222
import java.io.File;
2323
import java.util.stream.Stream;
@@ -27,7 +27,7 @@
2727
public class MySwiftClassTest {
2828

2929
void checkPaths(Throwable throwable) {
30-
var paths = SwiftKit.getJavaLibraryPath().split(":");
30+
var paths = SwiftLibraries.getJavaLibraryPath().split(":");
3131
for (var path : paths) {
3232
System.out.println("CHECKING PATH: " + path);
3333
Stream.of(new File(path).listFiles())
@@ -42,7 +42,7 @@ void checkPaths(Throwable throwable) {
4242

4343
@Test
4444
void test_MySwiftClass_voidMethod() {
45-
try(var arena = SwiftArena.ofConfined()) {
45+
try(var arena = AllocatingSwiftArena.ofConfined()) {
4646
MySwiftClass o = MySwiftClass.init(12, 42, arena);
4747
o.voidMethod();
4848
} catch (Throwable throwable) {
@@ -52,7 +52,7 @@ void test_MySwiftClass_voidMethod() {
5252

5353
@Test
5454
void test_MySwiftClass_makeIntMethod() {
55-
try(var arena = SwiftArena.ofConfined()) {
55+
try(var arena = AllocatingSwiftArena.ofConfined()) {
5656
MySwiftClass o = MySwiftClass.init(12, 42, arena);
5757
var got = o.makeIntMethod();
5858
assertEquals(12, got);
@@ -62,7 +62,7 @@ void test_MySwiftClass_makeIntMethod() {
6262
@Test
6363
@Disabled // TODO: Need var mangled names in interfaces
6464
void test_MySwiftClass_property_len() {
65-
try(var arena = SwiftArena.ofConfined()) {
65+
try(var arena = AllocatingSwiftArena.ofConfined()) {
6666
MySwiftClass o = MySwiftClass.init(12, 42, arena);
6767
var got = o.getLen();
6868
assertEquals(12, got);

0 commit comments

Comments
 (0)