-
(mandatory) Install OpenJDK 11 HotSpot (as long as we support JDK11)
-
(recommended) Install IntelliJ IDEA 2023.x
To import the project into IntelliJ, go to File→Open and select the project’s root directory. If the project is opened but not imported, look for a popup in the lower right corner and click its "Import Gradle Project" link. -
(recommended) Install gng
gng enables to run Gradle commands withgw
(instead of./gradlew
) from any subdirectory. -
(recommended) Install jenv and plugins
jenv use specific JDK versions in certain subdirectories. Pkl comes with a.java-version
file specifying JDK 17.
Enable jenv plugins for better handling bygradle
:jenv enable-plugin gradle jenv enable-plugin export
gw clean
gw test # run all tests except native executable tests
gw testNative # run native executable tests
gw spotlessApply # fix code formatting
gw build # build everything except native executables
gw buildNative # build macOS executable on macOS,
# Linux and Alpine executables on Linux
# (Alpine executable is only built if ~/staticdeps/bin/musl-gcc exists)
pkl-cli/build/executable/jpkl # run Java executable
pkl-cli/build/executable/pkl-macos-amd64 # run Mac executable
pkl-cli/build/executable/pkl-linux-amd64 # run Linux executable
pkl-cli/build/executable/pkl-alpine-linux-amd64 # run Alpine Linux executable
-
Go to https://gradle.org/release-checksums/ and copy the checksum for the new Gradle version
-
Run the following command twice (until it prints UP-TO-DATE):
gw wrapper --gradle-version [version] --gradle-distribution-sha256-sum [sha]
-
Commit the updated wrapper files
-
(optional) Update gradle/libs.version.toml based on version information from https://search.maven.org, https://plugins.gradle.org, and GitHub repos
-
Run
gw updateDependencyLocks
-
Validate changes with
gw build buildNative
-
Review and commit the updated dependency lock files
-
Truffle code generation is performed by Truffle’s annotation processor, which runs as part of task
:pkl-core:compileJava
-
Output dir is
generated/truffle/
-
-
ANTLR code generation is performed by task
:pkl-core:generateGrammarSource
-
Output dir is
generated/antlr/
-