[compiler-bin] Schedule builds by package dependencies - #505
Draft
purefunctor wants to merge 18 commits into
Draft
[compiler-bin] Schedule builds by package dependencies#505purefunctor wants to merge 18 commits into
purefunctor wants to merge 18 commits into
Conversation
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Compatibility regression reportPackage set ✅ The candidate introduces no compatibility errors.
Introduced errorsNone. Fixed errors (0)None. Warning changes (0 introduced, 0 fixed)Introduced None. Fixed None. Candidate errors (0)None. Candidate warnings (36)
|
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2
Amp-Thread-ID: https://ampcode.com/threads/T-01a09469-c4cf-723d-9923-3b8452bea9f2 Co-authored-by: Amp <amp@ampcode.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Make packages a meaningful unit of build scheduling and progress reporting, while separating command-line policy, compilation, terminal rendering, and long-lived sessions.
This began as a package-aware build experiment and developed into a replacement for the monolithic CLI. The replacement is now promoted as the canonical
irisexecutable rather than maintained as a paralleliris-v2implementation.Architecture
compiler-binis now a crate group with explicit subsystem boundaries:iris-cliowns command parsing, configuration conversion, logging setup, and exit policy.iris-buildowns project preparation, package dependency plans, serial and parallel executors, compilation, typed build events, and persistent build sessions.iris-progressowns the progress model, Ratatui rendering runtime, and watch summaries without depending on compiler internals.iris-packageowns project creation and adding dependencies through Spago.iris-lspexposes the language server behind an explicit configuration and startup interface.iris-watchconnects filesystem notifications to persistent build sessions and rebuild reporting.One-shot builds derive package dependencies from Spago lockfiles, validate source ownership, preserve dependency paths through packages without selected sources, and condense dependency cycles into scheduling groups. The parallel executor schedules ready groups against a shared compiler query engine; diagnostics and output writing are finalized afterward.
User-visible behavior
iris new,add,build,watch, andlsp.--no-diagnosticsindependently of--quiet; suppressing diagnostics does not make a failing build succeed. Build retains resilient output generation through--resilient.iris-cliwhile continuing to produce theirisbinary.Deliberate omissions
This is not command-for-command compatible with the removed CLI.
docs,compile,run, andtestare intentionally omitted for now and rejected by the parser. The bundled Node runner, old--log-fileflag, and old custom CLI/configuration diagnostics are also removed.Watch mode reuses incremental compiler state but does not currently run through the one-shot package scheduler. This change also does not add an on-disk package compilation cache or claim a build-performance improvement.
Verification
cargo check --testspassed for all six subsystem crates andtests-e2e.cargo nextest run -p iris-build -p iris-cli -p iris-lsp -p iris-package -p iris-progress -p iris-watch— 65 passed.just e2e— 31 passed across CLI, LSP, package management, build, watch, and StyleX scenarios.just formatandgit diff --checkpassed.iris --versionreportsiris 0.1.0.Coverage includes package-plan and executor invariants, progress rendering, omitted-command rejection, diagnostic suppression, LSP configuration, watch recovery, source additions and removals, FFI changes, and output reconciliation.