mirror of
https://github.com/enso-org/enso.git
synced 2024-12-25 05:21:53 +03:00
096fcfee82
This PR adds a possibility to generate native-image for engine-runner. Note that due to on-demand loading of stdlib, programs that make use of it are currently not yet supported (that will be resolved at a later point). The purpose of this PR is only to make sure that we can generate a bare minimum runner because due to lack TruffleBoundaries or misconfiguration in reflection config, this can get broken very easily. To generate a native image simply execute: ``` sbt> engine-runner-native/buildNativeImage ... (wait a few minutes) ``` The executable is called `runner` and can be tested via a simple test that is in the resources. To illustrate the benefits see the timings difference between the non-native and native one: ``` >time built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --no-ir-caches --in-project test/Tests/ --run engine/runner-native/src/test/resources/Factorial.enso 6 720 real 0m4.503s user 0m9.248s sys 0m1.494s > time ./runner --run engine/runner-native/src/test/resources/Factorial.enso 6 720 real 0m0.176s user 0m0.042s sys 0m0.038s ``` # Important Notes Notice that due to a [bug in GraalVM](https://github.com/oracle/graal/issues/4200), which is already fixed in 22.x, and us still being on 21.x for the time being, I had to add a workaround to our sbt build to build a different fat jar for native image. To workaround it I had to exclude sqlite jar. Hence native image task is on `engine-runner-native` and not on `engine-runner`. Will need to add the above command to CI.
152 lines
2.0 KiB
Plaintext
152 lines
2.0 KiB
Plaintext
|
|
#############
|
|
## GraalVM ##
|
|
#############
|
|
|
|
graal_dumps
|
|
|
|
#########
|
|
## JVM ##
|
|
#########
|
|
|
|
graal_dumps/
|
|
target/
|
|
*.class
|
|
*.log
|
|
.java-version
|
|
|
|
##########
|
|
## Rust ##
|
|
##########
|
|
|
|
**/*.rs.bk
|
|
wasm-pack.log
|
|
generated/
|
|
/target
|
|
/build/rust/target/
|
|
|
|
#############
|
|
## Haskell ##
|
|
#############
|
|
|
|
dist
|
|
cabal-dev
|
|
.stack-work/
|
|
|
|
############
|
|
## NodeJS ##
|
|
############
|
|
|
|
node_modules/
|
|
package-lock.json
|
|
|
|
############
|
|
## System ##
|
|
############
|
|
|
|
.DS_Store
|
|
|
|
############
|
|
## Images ##
|
|
############
|
|
|
|
*.jpg
|
|
*.jpeg
|
|
*.bmp
|
|
*.psd
|
|
|
|
######################
|
|
## Tooling Specific ##
|
|
######################
|
|
|
|
.idea/
|
|
.vscode/
|
|
*.swp
|
|
.projections.json
|
|
.nvmrc
|
|
*.iml
|
|
|
|
############################
|
|
## Rendered Documentation ##
|
|
############################
|
|
|
|
javadoc/
|
|
scaladoc/
|
|
distribution/docs
|
|
distribution/docs-js
|
|
|
|
#######################
|
|
## Benchmark Reports ##
|
|
#######################
|
|
|
|
bench-report*.xml
|
|
|
|
##############
|
|
## Binaries ##
|
|
##############
|
|
|
|
/enso
|
|
/project-manager
|
|
*.exe
|
|
/enso.exp
|
|
/enso.lib
|
|
*.pdb
|
|
*.jar
|
|
/built-distribution/
|
|
|
|
|
|
#########
|
|
## IDE ##
|
|
#########
|
|
|
|
.editorconfig
|
|
.bloop/
|
|
.bsp/
|
|
project/metals.sbt
|
|
/app/ide-desktop/build.json
|
|
/app/ide-desktop/lib/client/electron-builder-config.json
|
|
|
|
|
|
#################
|
|
## Build Cache ##
|
|
#################
|
|
|
|
build-cache/
|
|
|
|
##################
|
|
## Native Image ##
|
|
##################
|
|
|
|
*.build_artifacts.txt
|
|
/runner
|
|
|
|
######################
|
|
## Enso-Development ##
|
|
######################
|
|
|
|
distribution/lib/Standard/Examples/*/data/scratch_file
|
|
distribution/lib/Standard/Examples/*/data/image.png
|
|
distribution/editions
|
|
distribution/lib/Standard/Table/*/polyglot/
|
|
distribution/lib/Standard/Database/*/polyglot/
|
|
distribution/lib/Standard/Examples/*/data/spreadsheet.xls
|
|
distribution/lib/Standard/Examples/*/data/spreadsheet.xlsx
|
|
distribution/lib/*/*/*/manifest.yaml
|
|
|
|
# Resources that are downloaded during the build.
|
|
/lib/scala/pkg/src/main/resources/*
|
|
|
|
test/Google_Api_Test/data/secret.json
|
|
test/Database_Tests/data/redshift_credentials.json
|
|
|
|
# Ignore test output folder
|
|
test-results
|
|
|
|
#################
|
|
## Enso-Caches ##
|
|
#################
|
|
|
|
*.ir
|
|
*.meta
|
|
.enso/
|