Skip to content

Conversation

@sgammon
Copy link
Member

@sgammon sgammon commented Apr 23, 2025

Ready for review Powered by Pull Request Badge

Summary

  • Exec & Tooling
    • Add new exec package with task graph / executor code
    • Add new tooling package with project builder implementation code
    • Add new elide build subcommand
    • Add new elide test subcommand
    • Add progress bar output for build tasks
    • Subprocess spawner
    • Move native executor to new exec crate
    • Fix Runtime close doesn't wait for tasks #1384
    • Make tooling implementations available to tooling package
  • Dev Experience
    • Resolve scripts from all manifests
    • User scripts should override default tasks
    • Run elide project to see project info
    • Run elide init to start a new project
    • Pass elide --project=<path> ... to interact with a specific project other than cwd
    • Pass elide --<common-flag> <command> or elide <command> --<common-flag>
    • Fixes for system property flags
    • Consult Elide manifest for build/test/other commands via command runner
    • Consult foreign manifests for command runner
    • Consult local project binaries for command runner
  • CLI Help & Usage
    • Cleanup usage for all supported commands
    • Don't emit Elide header in every usage message
    • Cleanup elide help, add ability to show help topics in Markdown
    • Add elide help projects
    • Add elide help jvm
    • Add elide help servers
    • Add elide help polyglot
  • Build Graph
    • Pkl structure for the main project file
    • Contributor pattern for building the graph
    • DSL for spawning tasks
    • Structured concurrency support
    • Coroutines support
    • Resolution of source set globs
    • Resolution of dependencies to Classpath types
  • Kotlin Builtins
    • Kotlin Tests
    • KotlinX: Coroutines
    • KotlinX: Coroutines Testing
  • JVM Projects
    • Configure and resolve Maven dependencies
    • Yield classpaths
    • Bridge to kotlinc, spawn builds for Kotlin sources
    • Bridge to javac, spawn builds for Java sources
    • Build JARs note: next pr
  • Kotlin Projects
    • Assemble classpath with built-ins
    • Test classpaths should see main classpaths
    • Integrated testing note: kicked to next pr
    • Kover support note: kicked to next pr
  • Known Issues
    • Running Kotlin compiler in native mode
    • Eliminate issues with arg parsing
    • Duplications/layout in Kotlin resources
      • Not happening anymore? Will file if caught
    • Classpaths are not exact
    • Runner is not classpath-aware
    • Styling needs tuning for elide help <topic> (links, mostly)
    • Help rendering is broken on macOS (file upstream)
    • Coroutines crash during build on macOS (probably due to unconfined context?)

Usage

elide.pkl

name = "my-project"

sources {
  ["main"] = "src/main/**/*.kt"
}

dependencies {
  maven {
    packages {
      "org.graalvm.sdk:graal-sdk:24.2.0"
    }
  }
}

elide build
build-sample

@sgammon sgammon added feature Large PRs or issues with full-blown features 🚧 WIP Works-in-progress. Blocks merge tools Issues and PRs related to tooling labels Apr 23, 2025
@sgammon sgammon added this to the Release R16: Beta milestone Apr 23, 2025
@sgammon sgammon self-assigned this Apr 23, 2025
@sgammon sgammon added this to Elide Apr 23, 2025
@sgammon sgammon moved this to In Progress in Elide Apr 23, 2025
@sgammon sgammon force-pushed the feat/project-build branch from b1d6884 to ee8d705 Compare April 23, 2025 09:45
@sgammon sgammon requested review from a team and Copilot April 26, 2025 00:08
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the hardened-runner dependency to version v2.12.0 across multiple GitHub workflow files to support the project builds.

  • Updated hardened-runner version in all workflow jobs
  • Replaced commit hash for hardened-runner from v2.11.1 to v2.12.0 consistently

Reviewed Changes

Copilot reviewed 159 out of 159 changed files in this pull request and generated no comments.

Show a summary per file
File Description
.github/workflows/job.deploy.yml Updated hardened-runner version to v2.12.0
.github/workflows/job.deploy-model.yml Updated hardened-runner version to v2.12.0
.github/workflows/job.copybara.yml Updated hardened-runner version to v2.12.0 in two separate steps
.github/workflows/job.containers.yml Updated hardened-runner version to v2.12.0 in two separate steps
.github/workflows/job.cli.yml Updated hardened-runner version to v2.12.0 in two separate steps
.github/workflows/job.build.yml Updated hardened-runner version to v2.12.0
.github/workflows/job.bench.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.sonar.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.scorecards.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.rustfmt.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.qodana.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.model.yml Updated hardened-runner version to v2.12.0 in two separate steps
.github/workflows/checks.gradle-wrapper.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.formatting.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.detekt.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.dependency-review.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.dependency-graph.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.codeql.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.clippy.yml Updated hardened-runner version to v2.12.0
.github/workflows/checks.apicheck.yml Updated hardened-runner version to v2.12.0

This was linked to issues Apr 26, 2025
@codecov
Copy link

codecov bot commented Apr 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 0.00%. Comparing base (6612503) to head (5d25a47).
Report is 12 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@     Coverage Diff      @@
##   main   #1386   +/-   ##
============================
============================

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6612503...5d25a47. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@socket-security
Copy link

socket-security bot commented Apr 28, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedesbuild@​0.25.3911007192100
Updatedbun@​1.2.9 ⏵ 1.2.10911007897100
Updated@​types/​node@​22.14.1 ⏵ 22.15.2100 +110080 +196100
Updatedbun-types@​1.2.9 ⏵ 1.2.10100 +110083 +198100
Updatedeslint@​9.24.0 ⏵ 9.25.197 +110010095100

View full report

@sgammon sgammon changed the title [wip] feat: project builds feat: project builds Apr 29, 2025
@sgammon sgammon marked this pull request as ready for review April 29, 2025 04:50
@sgammon sgammon requested a review from Copilot April 29, 2025 04:50
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces new project build infrastructure and CLI commands while updating various GitHub Actions workflow files to use newer versions of dependencies and actions. The key changes include:

  • Upgrading the hardened runner, CodeQL, Rust toolchain, and artifact actions across all workflow files.
  • Adding file renaming steps ("Fix: Pkl Config") in the build job to temporarily rename the project configuration file during the build process.

Reviewed Changes

Copilot reviewed 216 out of 216 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/job.deploy.yml Updated hardened runner version to v2.12.0.
.github/workflows/job.deploy-model.yml Updated hardened runner version to v2.12.0.
.github/workflows/job.copybara.yml Updated hardened runner version in two spots.
.github/workflows/job.containers.yml Updated hardened runner, auth, and toolchain versions.
.github/workflows/job.cli.yml Updated hardened runner, auth, Yarn, and artifact actions versions.
.github/workflows/job.build.yml Updated hardened runner and Rust toolchain, and added file rename steps for configuring the pkl file.
.github/workflows/job.bench.yml Updated hardened runner version to v2.12.0.
.github/workflows/checks.sonar.yml Updated hardened runner and artifact actions versions.
.github/workflows/checks.scorecards.yml Updated hardened runner and CodeQL upload action versions.
.github/workflows/checks.rustfmt.yml Updated hardened runner and Rust toolchain versions.
.github/workflows/checks.qodana.yml Updated hardened runner, artifact actions, and CodeQL upload action versions.
.github/workflows/checks.model.yml Updated hardened runner version to v2.12.0.
.github/workflows/checks.gradle-wrapper.yml Updated hardened runner version to v2.12.0.
.github/workflows/checks.formatting.yml Updated hardened runner, Rust toolchain, and artifact actions versions.
.github/workflows/checks.detekt.yml Updated hardened runner, artifact, and CodeQL upload action versions.
.github/workflows/checks.dependency-review.yml Updated hardened runner version to v2.12.0.
.github/workflows/checks.dependency-graph.yml Updated hardened runner version to v2.12.0.
.github/workflows/checks.codeql.yml Updated hardened runner, CodeQL initialization, artifact, and analyze action versions.
.github/workflows/checks.clippy.yml Updated hardened runner, Rust toolchain, and CodeQL upload action versions.
.github/workflows/checks.apicheck.yml Updated hardened runner and artifact actions versions.

@sgammon sgammon linked an issue Apr 29, 2025 that may be closed by this pull request
sgammon added 5 commits April 30, 2025 16:42
Implements project builder structure and features,
including javac and kotlinc and a simple build
graph.

Waits for all guest executor tasks to complete,
and repeats calls to `close` until the CLI
`timeout` has elapsed, at which point both the
guest executor and engine will be forcefully
terminated.

feat: native exec lib surface
feat: rendered build output + maven deps
feat(cli): accept `-p` / `--project` arg with path
feat(cli): proxy output from graph to progress renderer
feat(cli): prettier `elide project` display
feat(tooling): interpreted/loaded project records
feat(tooling): resolve source sets to paths
feat(tooling): glob support for source sets
fix: disable strict mode until release
fix(cli): restore `--timeout` option
fix(cli): respond to ISE from engine `close`
fix(cli): enforce `--timeout` on exit
fix(cli): wait for execution on exit
fix(cli): restore `--timeout` option
fix(cli): respond to ISE from engine `close`
fix(cli): enforce `--timeout` on exit
fix(cli): common args should be passable to all cmds
chore: amendments and fixes to pkl model
chore: `tooling` package structure
chore(cli): move project types to `tooling`
chore(tooling): additional logging for build configurators

Fixes #1384
Fixes #1387

Relates-to: #1372
Relates-to: #1387
Relates-to: #1384
Signed-off-by: Sam Gammon <sam@elide.dev>
Signed-off-by: Sam Gammon <sam@elide.dev>
chore: update `oxc` → latest
chore: update `ruff` → latest
chore: update `uv` → latest
chore: update `micronaut` → `4.5.3` / `4.8.2`
chore: update `guava` → `33.4.8-jre`
chore: update `jackson` → `2.19.0`
chore: update `mordant` → `3.0.2`
chore: update `picocli` → `4.7.7`
chore: update `pkl` → `0.28.2`
chore: update `bun` → `1.2.10`
chore: update `esbuild` → `0.25.3`
chore: update npm deps
chore: update cargo deps

Signed-off-by: Sam Gammon <sam@elide.dev>
feat(tooling): classpath resolvers and providers
feat(tooling): on dep resolve, map artifacts to packages
feat(tooling): ability to query for classpath providers
feat(tooling): wait until deps are resolved before building
feat(tooling): ability to add maven test-only packages

Signed-off-by: Sam Gammon <sam@elide.dev>
feat(cli): add `help` topic functionality
feat(cli): add `help` topic for projects
feat(cli): ability to render markdown with help topics
fix(cli): factory out project-specific args
fix(cli): arg groups for common/project args
chore(cli): cleanup usage text for elide commands
chore(cli): cleanup usage text for embedded tools

Signed-off-by: Sam Gammon <sam@elide.dev>
sgammon and others added 7 commits April 30, 2025 16:42
Signed-off-by: Sam Gammon <sam@elide.dev>
fix(tooling): resolve transitive deps properly
fix(tooling): don't use parsing of args for kotlinc
fix(tooling): native build metadata amendments
chore: lots more debug logs

Signed-off-by: Sam Gammon <sam@elide.dev>
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.11.1 to 2.12.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](step-security/harden-runner@c6295a6...0634a26)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sam Gammon <sam@elide.dev>
Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.8 to 2.1.10.
- [Release notes](https://github.com/google-github-actions/auth/releases)
- [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md)
- [Commits](google-github-actions/auth@71f9864...ba79af0)

---
updated-dependencies:
- dependency-name: google-github-actions/auth
  dependency-version: 2.1.10
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sam Gammon <sam@elide.dev>
Bumps [actions-rust-lang/setup-rust-toolchain](https://github.com/actions-rust-lang/setup-rust-toolchain) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/actions-rust-lang/setup-rust-toolchain/releases)
- [Changelog](https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/CHANGELOG.md)
- [Commits](actions-rust-lang/setup-rust-toolchain@9399c7b...9d7e65c)

---
updated-dependencies:
- dependency-name: actions-rust-lang/setup-rust-toolchain
  dependency-version: 1.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sam Gammon <sam@elide.dev>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.16.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@45775bd...28deaed)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sam Gammon <sam@elide.dev>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@95815c3...d3f86a1)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Sam Gammon <sam@elide.dev>
@sgammon sgammon force-pushed the feat/project-build branch from cd3daaf to 5d25a47 Compare May 1, 2025 01:08
@sgammon sgammon merged commit 316f76f into main May 1, 2025
18 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in Elide May 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Large PRs or issues with full-blown features tools Issues and PRs related to tooling 🚧 WIP Works-in-progress. Blocks merge

Projects

Status: Done

3 participants