Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider migrating back to sbt/zinc #1383

Closed
Duhemm opened this issue Oct 8, 2020 · 6 comments
Closed

Consider migrating back to sbt/zinc #1383

Duhemm opened this issue Oct 8, 2020 · 6 comments
Assignees
Labels
difficulty / hard Any change that is hard to implement.
Milestone

Comments

@Duhemm
Copy link
Collaborator

Duhemm commented Oct 8, 2020

Currently, Bloop is using a fork of Zinc (https://github.com/scalacenter/zinc) which is a bit outdated compared to sbt/zinc (https://github.com/sbt/zinc).

At the time, this fork was introduced to support features that weren't available in sbt/zinc, such as build pipelining for instance. In the meantime, sbt/zinc got support for build pipelining and received bug fixes and performance improvements. Porting these changes to our fork of Zinc would require a considerable effort.

Similarly, migrating to mainline Zinc is no small task and will most likely require a lot of changes to Bloop.

I don't think that Bloop benefits from using a fork of Zinc anymore. I'd be in favor of migrating Bloop back to sbt/zinc to get the recent improvements and avoid the cost of maintaining a fork of Zinc.

@tgodzik
Copy link
Contributor

tgodzik commented Feb 8, 2021

We are starting to work on this, based on @Duhemm feedback we plan to do the migration in two main step steps.

  1. Remove custom build pipeling and migrate to newest zinc to benefit from all the recent improvements -> Bloop 1.5.0
    This step would include:
  • run benchmarks on current state
  • simplify the tests removing any that touch pipelining, remove the custom build pipelining and migrate to the Zinc 1.3.8.
  • run benchmarks again to see the change in performance
  1. Use Zinc's pipelining while contributing any fixes to Zinc itself. -> Bloop 1.5.1
    This step would also include running the benchmarks and most likely restating some tests for pipeling that were previously removed.

@jvican let me know if there is something that is totally off with this plan. I know that removing pipelining means a lot of the previous work goes to waste, but having two implementations of pipelining is not maintainable for us in the long run.

@SethTisue
Copy link

SethTisue commented Oct 24, 2021

@tgodzik do we have any sense yet, even a vague one, of when 1.5.0 might happen?

@SethTisue
Copy link

(My specific motivation for asking it that since scala-cli is built on bloop, perhaps this ticket should be considered a blocker for scala-cli becoming the official Scala launcher. It seems like pretty bad news to me to have multiple independent implementations of incremental compilation floating around.)

@tgodzik
Copy link
Contributor

tgodzik commented Oct 25, 2021

@tgodzik do we have any sense yet, even a vague one, of when 1.5.0 might happen?

I started looking into that more now, so hopefully sooner than later. Sorry for taking that long, it's a bit of unknown waters for me 😓

tgodzik added a commit to tgodzik/bloop that referenced this issue Dec 30, 2021
In order to make upgrading versions easier we decided to switch back to sbt/zinc instead of a custom fork. The original reason for using the fork was to enable build pipelining, but that itself has been implemented in the orginal fork.

Unfortunately, to make the migration easier we needed to remove build pipelining for now to later add it with the default mechanism.

Related to scalacenter#1383

The benchmarks are being run to make sure we are not regressing in performance.
tgodzik added a commit to tgodzik/bloop that referenced this issue Dec 30, 2021
In order to make upgrading versions easier we decided to switch back to sbt/zinc instead of a custom fork. The original reason for using the fork was to enable build pipelining, but that itself has been implemented in the orginal fork.

Unfortunately, to make the migration easier we needed to remove build pipelining for now to later add it with the default mechanism.

Related to scalacenter#1383

The benchmarks are being run to make sure we are not regressing in performance.
tgodzik added a commit to tgodzik/bloop that referenced this issue Jan 3, 2022
In order to make upgrading versions easier we decided to switch back to sbt/zinc instead of a custom fork. The original reason for using the fork was to enable build pipelining, but that itself has been implemented in the orginal fork.

Unfortunately, to make the migration easier we needed to remove build pipelining for now to later add it with the default mechanism.

Related to scalacenter#1383

The benchmarks are being run to make sure we are not regressing in performance.
tgodzik added a commit to tgodzik/bloop that referenced this issue Feb 18, 2022
In order to make upgrading versions easier we decided to switch back to sbt/zinc instead of a custom fork. The original reason for using the fork was to enable build pipelining, but that itself has been implemented in the orginal fork.

Unfortunately, to make the migration easier we needed to remove build pipelining for now to later add it with the default mechanism.

Related to scalacenter#1383

The benchmarks are being run to make sure we are not regressing in performance.
@Duhemm
Copy link
Collaborator Author

Duhemm commented Feb 21, 2022

@tgodzik I think we can close this one? Congrats and thank you 😄

@tgodzik
Copy link
Contributor

tgodzik commented Feb 21, 2022

Sure! I added a new issue about pipelining.

@tgodzik tgodzik closed this as completed Feb 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty / hard Any change that is hard to implement.
Projects
None yet
Development

No branches or pull requests

3 participants