ffi: migrate to java.lang.foreign and require Java 21

This commit is contained in:
2023-09-23 15:40:40 -07:00
parent c340cfb86d
commit e31566f0d6
27 changed files with 270 additions and 800 deletions

View File

@ -18,6 +18,8 @@ dependencies {
application {
applicationName = "pork-rt"
mainClass.set("gay.pizza.pork.minimal.MainKt")
applicationDefaultJvmArgs += "-XstartOnFirstThread"
applicationDefaultJvmArgs += "--enable-native-access=ALL-UNNAMED"
}
for (task in arrayOf(tasks.shadowDistTar, tasks.shadowDistZip, tasks.shadowJar)) {

View File

@ -4,9 +4,9 @@ import gay.pizza.pork.ast.CompilationUnit
import gay.pizza.pork.ast.NodeVisitor
import gay.pizza.pork.ast.visit
import gay.pizza.pork.evaluator.*
import gay.pizza.pork.ffi.FfiNativeProvider
import gay.pizza.pork.ffi.JavaAutogenContentSource
import gay.pizza.pork.ffi.JavaNativeProvider
import gay.pizza.pork.ffi.JnaNativeProvider
import gay.pizza.pork.frontend.ContentSource
import gay.pizza.pork.frontend.ImportLocator
import gay.pizza.pork.frontend.DynamicImportSource
@ -55,7 +55,7 @@ abstract class Tool {
fun run(scope: Scope, quiet: Boolean = false) {
val main = loadMainFunction(scope, setupEvaluator = {
addNativeProvider("internal", InternalNativeProvider(quiet = quiet))
addNativeProvider("ffi", JnaNativeProvider())
addNativeProvider("ffi", FfiNativeProvider())
addNativeProvider("java", JavaNativeProvider())
})
main.call(emptyList(), CallStack())