> It will only do that in some select few cases. Agreed, I phrased the original statement incorrectly. I was meant to say that it's not going to pointlessly inline code, i.e. it will only inline code that is known to be not inlinable by earlier JDK's. Its of course impossible to inline any/all hypothetical code
> See https://github.com/apache/incubator-pekko-http/pull/456 for an example of the correctness issue. Afaik none of the many projects enable the inliner for development. By correctness I was referring to the inliner producing incorrect code on a clean compile. Yes it's known that it has issues when done on local development due to incremental compilation which is why there is a knob to disable it for local dev. There is already an issue[1] about reversing the default setting so that it's disabled by default. It probably wasn't a wise idea to have it enabled by default locally (my bad) but the original motivation for that was because we can't make release artifacts in CI yet, it was to reduce the chance of creating an incorrect release artifact however as stated below this is likely a non-issue. > If we decide to run the inliner on CI and for releases, then this will introduce another level of complexity to important steps of the release pipeline building differently in different situations. Our release process regardless of inliner is already complex enough[2] and hence we are already having to pass custom flags[3] when creating release artifacts anyways so I don't see how adding an extra single flag i.e. pekko.inline=true to sbt is going to materially affect the complexity either way. It's also already document to +clean the project for reasons aside from the inliner, i.e. the incremental compiler even with inliner disabled doesn't produce deterministic bytecode which effect's reproducible builds which is something we are trying to move to. [1]: https://github.com/pjfanning/sbt-pekko-build/issues/9#issuecomment-1914496929 [2]: https://github.com/apache/incubator-pekko-site/wiki/Pekko-Release-Process [3]: https://github.com/apache/incubator-pekko-site/wiki/Pekko-Release-Process#deploy-the-jars-to-apache-maven-repository-staging On Mon, Jan 29, 2024 at 9:31 PM Johannes Rudolph <johannes.rudo...@gmail.com> wrote: > On Thu, Jan 18, 2024 at 12:48 AM Matthew de Detrich > <matthew.dedetr...@aiven.io.invalid> wrote: > > it will automatically inline any code that it knows won't get inlined by > the JDK > > It will only do that in some select few cases. > > > In any case, I would still opt for leaving the inliner in there. I would > be > > extremely > > shocked if there are any correctness issues given that its being used for > > at least > > half a decade in many projects > > See https://github.com/apache/incubator-pekko-http/pull/456 for an > example of the correctness issue. > Afaik none of the many projects enable the inliner for development. > > > hence the "free lunch" argument and the > > complexity is not that high (we are dealing with some extra scalac flags) > > I would not call it free lunch, especially since the development > efficiency is impacted by far longer compile times and potential > correctness issues. > If we decide to run the inliner on CI and for releases, then this will > introduce another level of complexity to important steps of the > release pipeline building differently in different situations. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@pekko.apache.org > For additional commands, e-mail: dev-h...@pekko.apache.org > > -- Matthew de Detrich *Aiven Deutschland GmbH* Immanuelkirchstraße 26, 10405 Berlin Alexanderufer 3-7, 10117 Berlin Amtsgericht Charlottenburg, HRB 209739 B Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen *m:* +491603708037 *w:* aiven.io *e:* matthew.dedetr...@aiven.io