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

Backport build changes and TASTy version tests from main #185

Merged
merged 7 commits into from
Mar 19, 2025

Conversation

WojciechMazur
Copy link

  • Document and group versioning code in Build
  • Improve MiMa tests - compare with 1st version in series instead of the last one (same as Scala Next)
  • Backport tests for released TASTy version and adapt these to the LTS series
  • Backport TastyVersion - required for backported TASTy tests

…cala#21837)

* Introduce `developedVersion` describing the target for the current
release cycle
* Adapt `baseVersion` to the effectively revert scala#21011 changes
* Adapt .msi packager to use `developedVersion` as a workaround to MSI
ProductInfo limitations (version without RC suffix required)
* Group and document versioning related code
…#22187)

* We now document better how and when tasty version should be set
* Add additional runtime test to ensure we don't emit invalid TASTy
version during Release / NIGHTLY releases and the expected version set
in build matches version defined in TastyFormat
* - in release candidate branch is experimental if {patch == 0}
* - in stable release is always non-experimetnal
*/
val expectedTastyVersion = "28.3"
Copy link
Author

Choose a reason for hiding this comment

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

I think we were once discussing that TASTy version of all nightlies, including LTS nightlies, should be experimental. However it's not so obvious which version of TASTy format should be used in such case.

In Scala Next that would be 28.{minorVersion + 1}-experimental-1 (assuming patch > 0), however such schema cannot be used for LTS - TASTy 28.4 already exists and is stable.

We can potentially use 28.3-experimental-2 but it also seems to not make sense becouse 28.3 is already stabilised.

In such case I think it's best to assume that LTS always emits stable TASTy. It should be fine, becouse every backported change is carefully checked and tested in both Scala CI and OpenCB before merging which should detect potential issues

Any opinions @prolativ @tgodzik

Choose a reason for hiding this comment

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

I'm quite tempted to say that from TASTy's perspective we should treat LTS as any other minor version series. In theory we could also have nightly versions and backport PRs to 3.4, 3.5, etc. but we don't do that just because we don't have enough resources to manage that

Copy link
Author

Choose a reason for hiding this comment

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

I'm quite tempted to say that from TASTy's perspective we should treat LTS as any other minor version series.

Totally agree
The main problem here comes from versioning, especially because we do actually release LTS nightlies. However, the versioning schema of TASTy seems to not be compatible with our needs.
With version 28.3-experimental-2 we'd get into issue in non-bootstrapped tests - these require that reference version of compiler has version in range 28.0 - 28.2 or exactly the same version experimental TASTy 28.3-experimental-2. We use 3.3.5 producing Tasty 28.3 which would not fit the required version bounds.

Unless you're suggesting to use 28.4-experimental-1 which would make the non-bootstrapped tests happy. Is it what you're refering to?

Copy link

Choose a reason for hiding this comment

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

We can potentially use 28.3-experimental-2 but it also seems to not make sense becouse 28.3 is already stabilised.

But what versions do we use normally? If we have 28.7 tasty currently being release, what will be the Scala 3 nightlies have as tasty version? 3.6.2 has 28.7 and 3.6.3 has 28.7, what did the nightlies between have as tasty version?

Copy link
Author

Choose a reason for hiding this comment

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

Scala 3.3 LTS uses 28.3 for both RC and nightlies
Scala 3.4.0 uses 28.4 for stable and 28.4-experimental-1 for RC and nightly
Scala 3.4.1 uses 28.4 for RC/stable and 28.5-experimental-1 for nightlies

I think we can skip potential change to TASTy LTS versions for the future. Currently we'll continue to use existing schema - always stable TASTy

@WojciechMazur WojciechMazur requested a review from tgodzik March 19, 2025 10:05
Copy link

@tgodzik tgodzik left a comment

Choose a reason for hiding this comment

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

LGTM but we should figure out issues with tasty later on (with it not being experimental on nightlies)

@WojciechMazur WojciechMazur merged commit 2b41273 into scala:lts-3.3 Mar 19, 2025
20 checks passed
@WojciechMazur WojciechMazur deleted the build/lts-backports branch March 19, 2025 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants