Skip to content

Commit a2af6dc

Browse files
committed
Add changelog for 3.8.0-RC1
Signed-off-by: Wojciech Mazur <wmazur@virtuslab.com>
1 parent 863bfb6 commit a2af6dc

File tree

1 file changed

+297
-0
lines changed

1 file changed

+297
-0
lines changed

changelogs/3.8.0-RC1.md

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
1+
# Highlights of the release
2+
3+
- Require JDK 17+ [#24146](https://github.com/scala/scala3/pull/24146)
4+
- Add explicit null checks to Scala 3 Standard Library [#23566](https://github.com/scala/scala3/pull/23566)
5+
- Add capture-checking to Scala 3 Standard Library [#23688](https://github.com/scala/scala3/pull/23688)
6+
- Add capture-checking to Scala 2 collections [#23769](https://github.com/scala/scala3/pull/23769)
7+
- Extract REPL to be its own artifact [#24243](https://github.com/scala/scala3/pull/24243)
8+
- SIP-57: Make `runtimeChecked` a standard feature [#23262](https://github.com/scala/scala3/pull/23262)
9+
- SIP-62: Make `better-fors` a stable feature [#23630](https://github.com/scala/scala3/pull/23630)
10+
- Preview SIP-71: Make `into` preview feature [#24090](https://github.com/scala/scala3/pull/24090)
11+
- Experimental SIP-67: Strict equality pattern matching [#23803](https://github.com/scala/scala3/pull/23803)
12+
- Experimental SIP-70: Allow multiple spreads in function arguments [#23855](https://github.com/scala/scala3/pull/23855)
13+
- Experimental SIP-75: Allow single-line lambdas after `:` [#23821](https://github.com/scala/scala3/pull/23821)
14+
- Experimental: Match if sub cases [#23786](https://github.com/scala/scala3/pull/23786)
15+
16+
# Other changes and fixes
17+
18+
## Annotations
19+
20+
- Emit deprecation warnings when a symbol is annotated by a deprecated annotation [#23906](https://github.com/scala/scala3/pull/23906)
21+
- Deprecate `scala.annotation.elidable` [#23913](https://github.com/scala/scala3/pull/23913)
22+
- Deprecate `scala.annotation.transparentTrait` [#23116](https://github.com/scala/scala3/pull/23116)
23+
24+
## Experimental: Capture Checking
25+
26+
- Move `scala.caps.Pure` to caps and make it non-experimental [#23745](https://github.com/scala/scala3/pull/23745)
27+
- Make `scala.caps.Pure` transparent [#23914](https://github.com/scala/scala3/pull/23914)
28+
- Make `scala.caps.Capability` non-experimental [#23507](https://github.com/scala/scala3/pull/23507)
29+
- Check conformance to `scala.caps.Pure` upper bound only under cc [#23784](https://github.com/scala/scala3/pull/23784)
30+
- Widen type parameters before box adaptation [#23809](https://github.com/scala/scala3/pull/23809)
31+
- Level checking: distinguish between certain capset vars with same owner [#24077](https://github.com/scala/scala3/pull/24077)
32+
- Implement FreshCap Handling for Classes and Objects [#24136](https://github.com/scala/scala3/pull/24136)
33+
- Skip capture sets in checkNoPrivateLeaks and drop them in posttyper when cc is not enabled [#23886](https://github.com/scala/scala3/pull/23886)
34+
- Changes around reaches and uses [#23584](https://github.com/scala/scala3/pull/23584)
35+
- Revise capability hierarchy and fix classifiers [#23656](https://github.com/scala/scala3/pull/23656)
36+
- Improve closure typing [#23700](https://github.com/scala/scala3/pull/23700)
37+
- Better printing of capabilities in error messages [#23701](https://github.com/scala/scala3/pull/23701)
38+
- More improvements to error messages [#23721](https://github.com/scala/scala3/pull/23721)
39+
- CC Language Ref Polishings [#23762](https://github.com/scala/scala3/pull/23762)
40+
- CC Language Reference Improvements v2 [#23818](https://github.com/scala/scala3/pull/23818)
41+
- Changes in CC around classes, constructors, this [#23874](https://github.com/scala/scala3/pull/23874)
42+
- Various fixes and simplifications [#23881](https://github.com/scala/scala3/pull/23881)
43+
- Simplify Level Checking and Fix Errors [#23934](https://github.com/scala/scala3/pull/23934)
44+
- Introduce precise refined types [#24154](https://github.com/scala/scala3/pull/24154)
45+
- Fix unsoundness in APPLY and SELECT rules [#24159](https://github.com/scala/scala3/pull/24159)
46+
- Fixes for mutability [#24205](https://github.com/scala/scala3/pull/24205)
47+
- Implement inheritance condition for Mutable types [#24253](https://github.com/scala/scala3/pull/24253)
48+
- Don't add cap when creating instances of capability classes. [#24256](https://github.com/scala/scala3/pull/24256)
49+
- Changes to Fresh and Separation Checking [#24112](https://github.com/scala/scala3/pull/24112)
50+
51+
## Experimental: Explicit Nulls
52+
53+
- Only nullify tasty if `Yflexify-tasty` is set; Refine FlexibleType nullification rules [#23938](https://github.com/scala/scala3/pull/23938)
54+
- Apply flexible types to files compiled without explicit nulls [#23386](https://github.com/scala/scala3/pull/23386)
55+
- Fix NotNullInfo in multi-case match [#23864](https://github.com/scala/scala3/pull/23864)
56+
- Fix captureWildcards with FlexibleType [#24070](https://github.com/scala/scala3/pull/24070)
57+
- Do not assume left is non-null if another branch is null in splitLast [#24325](https://github.com/scala/scala3/pull/24325)
58+
59+
## Experimental: Global Initalization
60+
61+
- Modelling assigning to null in the global object initialization checker [#23858](https://github.com/scala/scala3/pull/23858)
62+
- Fix global init checker unexpected by name [#23859](https://github.com/scala/scala3/pull/23859)
63+
- Fix selection on safe value in the global object initialization checker [#23860](https://github.com/scala/scala3/pull/23860)
64+
- Re-design Env of the global object init checker [#24107](https://github.com/scala/scala3/pull/24107)
65+
66+
## Experimental: Into
67+
68+
- Allow into on enums [#23795](https://github.com/scala/scala3/pull/23795)
69+
70+
## Experimental: Modularity
71+
72+
- Simpler inference for tracked [#22972](https://github.com/scala/scala3/pull/22972)
73+
74+
## Implicits
75+
76+
- Only check seen for LazyRef for TypeSizeAccumulator [#20459](https://github.com/scala/scala3/pull/20459)
77+
- Derived members succeed other givens in cycle test [#23898](https://github.com/scala/scala3/pull/23898)
78+
79+
## Linting
80+
81+
- Drill through type lambda for tree symbol [#23699](https://github.com/scala/scala3/pull/23699)
82+
- Warn unused masking imports, remove obsolete unused options [#23757](https://github.com/scala/scala3/pull/23757)
83+
- Unused lint does not rewrite suppressed warnings [#24055](https://github.com/scala/scala3/pull/24055)
84+
- Check for synthetic case methods in unused lint [#24239](https://github.com/scala/scala3/pull/24239)
85+
86+
## Match Types
87+
88+
- Prioritize tree type over proto type when typing Binds [#24175](https://github.com/scala/scala3/pull/24175)
89+
90+
## Metaprogramming
91+
92+
- Warn about encoded pkg obj names [#22707](https://github.com/scala/scala3/pull/22707)
93+
94+
# Named Tuples
95+
96+
- Prohibit selection of tuples with members named `apply`. [#24191](https://github.com/scala/scala3/pull/24191)
97+
- Add an Ordering given instance for named tuples [#23379](https://github.com/scala/scala3/pull/23379)
98+
- Named tuple toMap extension method [#23827](https://github.com/scala/scala3/pull/23827)
99+
100+
# Opaque Types
101+
102+
- Prevent opaque types leaking from transparent inline methods [#23792](https://github.com/scala/scala3/pull/23792)
103+
- Make opaque types decomposable [#24068](https://github.com/scala/scala3/pull/24068)
104+
105+
## Parser
106+
107+
- Make consume a soft modifier [#23755](https://github.com/scala/scala3/pull/23755)
108+
109+
## Pattern Matching
110+
111+
- Fix false exhaustivity warning for seq match [#23968](https://github.com/scala/scala3/pull/23968)
112+
- Use upper bound of abstract types in exhaustivity checking [#23909](https://github.com/scala/scala3/pull/23909)
113+
114+
## Pickling
115+
116+
- Cleanup the type of `UnApply` trees in posttyper [#24259](https://github.com/scala/scala3/pull/24259)
117+
118+
## Presentation Compiler
119+
120+
- Make sure that we can query tree.source [#24123](https://github.com/scala/scala3/pull/24123)
121+
- Add unsafe RawPresentationCompiler implementation [#24133](https://github.com/scala/scala3/pull/24133)
122+
123+
## Reporting
124+
125+
- Fix span of private this warning [#23947](https://github.com/scala/scala3/pull/23947)
126+
- Improve printing of strings [#22945](https://github.com/scala/scala3/pull/22945)
127+
- Better grouping of explanations in error messages [#24155](https://github.com/scala/scala3/pull/24155)
128+
- Better error message: reassignment to val [#24184](https://github.com/scala/scala3/pull/24184)
129+
130+
## Reflection
131+
132+
- Add missing apply constructors for `Refined` and `TypeProjection` TypeTrees [#23837](https://github.com/scala/scala3/pull/23837)
133+
134+
## REPL
135+
136+
- Use PPrint to handle printing of REPL output values [#23849](https://github.com/scala/scala3/pull/23849)
137+
- Invoke pprint reflectively [#24119](https://github.com/scala/scala3/pull/24119)
138+
- Consider rendering prefix when pretty printing values in the REPL [#24118](https://github.com/scala/scala3/pull/24118)
139+
- Trap Ctrl-C in the REPL: if no command is running clear the prompt, if some command is running ask for confirmation before exiting [#24127](https://github.com/scala/scala3/pull/24127)
140+
- Re-implement Ammonite's Ctrl-C interruption for Scala REPL via bytecode instrumentation [#24194](https://github.com/scala/scala3/pull/24194)
141+
- Remove pipes from multi-line REPL prompts [#24307](https://github.com/scala/scala3/pull/24307)
142+
- Reintroduce reflective REPL pprint call. [#24353](https://github.com/scala/scala3/pull/24353)
143+
144+
## Scala Runner
145+
146+
- Drop `scala_legacy` and `MainGenericRunner` [#24244](https://github.com/scala/scala3/pull/24244)
147+
- Drop `-run` and `-repl` in `MainGenericCompiler` [#24289](https://github.com/scala/scala3/pull/24289)
148+
- Bump Scala CLI to v1.10.0 (was v1.9.1) and Coursier to v2.1.25-M19 (was 2.1.24) [#24362](https://github.com/scala/scala3/pull/24362)
149+
150+
## Scaladoc
151+
152+
- Add FlexibleType support for scaladoc [#23320](https://github.com/scala/scala3/pull/23320)
153+
- Render `@consume` as the `consume` modifier [#23754](https://github.com/scala/scala3/pull/23754)
154+
- Do not render `consume update` in `scaladoc` [#23760](https://github.com/scala/scala3/pull/23760)
155+
156+
## Scala.js
157+
158+
- Upgrade to Scala.js 1.20.1. [#23884](https://github.com/scala/scala3/pull/23884)
159+
- Support js.async and js.await, including JSPI on Wasm. [#23846](https://github.com/scala/scala3/pull/23846)
160+
- Add JS-specific version of `VarArgsBuilder`. [#24144](https://github.com/scala/scala3/pull/24144)
161+
- Port scala-stdlib for Scala.js [#24115](https://github.com/scala/scala3/pull/24115)
162+
- Do not patch the implicit scope of `scala.Unit` in Scala.js [#24405](https://github.com/scala/scala3/pull/24405)
163+
164+
## Settings
165+
166+
- Option warnings are conditional [#13915](https://github.com/scala/scala3/pull/13915)
167+
- Make `-usejavacp` a private setting as `-Yusejavacp` [#24304](https://github.com/scala/scala3/pull/24304)
168+
169+
## Specification
170+
171+
- Update reference syntax documentation with named tuples [#23493](https://github.com/scala/scala3/pull/23493)
172+
173+
## Standard Library
174+
175+
- Embed the history of the scala 2 stdlib [#23099](https://github.com/scala/scala3/pull/23099)
176+
- Add language import in stdlib [#23102](https://github.com/scala/scala3/pull/23102)
177+
- Add `transparent` modifier to already assumed transparent types [#23104](https://github.com/scala/scala3/pull/23104)
178+
- Do not patch stdlib symbols anymore [#23193](https://github.com/scala/scala3/pull/23193)
179+
- Stabilise `Predef.runtimeChecked` too [#23917](https://github.com/scala/scala3/pull/23917)
180+
- Simplify `scala.runtime.Statics.releaseFence` [#23953](https://github.com/scala/scala3/pull/23953)
181+
- Deprecate `scala.runtime.SymbolLiteral` [#23970](https://github.com/scala/scala3/pull/23970)
182+
- Standard Library Sync: September 24th, 2025 [#24063](https://github.com/scala/scala3/pull/24063)
183+
- Update method signatures in RedBlackTree to accept correct Iterators [#24085](https://github.com/scala/scala3/pull/24085)
184+
- Module classes can sometimes extend `scala.runtime.AbstractFuntionN` in Scala 2 [#24147](https://github.com/scala/scala3/pull/24147)
185+
- Drop redundant `scala.caps.Pure` parent traits in stdlib [#24149](https://github.com/scala/scala3/pull/24149)
186+
- Better support for nullability in `Option.apply` and drop `Option.fromNullable` [#24238](https://github.com/scala/scala3/pull/24238)
187+
- Officially deprecate `scala.App` in Scala 3 [#24242](https://github.com/scala/scala3/pull/24242)
188+
- Be more conservative in what we copy from Scala 2 [#24339](https://github.com/scala/scala3/pull/24339)
189+
- Fix the dependencies of the bootstrapped stdlib [#24379](https://github.com/scala/scala3/pull/24379)
190+
- Fix bytecode attributes for patched files [#24180](https://github.com/scala/scala3/pull/24180)
191+
- Add `library.properties` to resources of scala-library jars [#24332](https://github.com/scala/scala3/pull/24332)
192+
193+
## Quotes
194+
195+
- Make typeArgs in QuotesImpl work for AnnotatedTypes [#24018](https://github.com/scala/scala3/pull/24018)
196+
- Quotes reflect: Allow to return DefDef from a val symbol tree [#22603](https://github.com/scala/scala3/pull/22603)
197+
- Add ensureApplied to the quotes reflect API [#24160](https://github.com/scala/scala3/pull/24160)
198+
- Chore: do not assume scala types as transparent, source should enforce it [#23105](https://github.com/scala/scala3/pull/23105)
199+
- Add missing version of `ValDef.let` which also accepts flags [#23388](https://github.com/scala/scala3/pull/23388)
200+
- Stabilise Quotes reflect methods used for creating new classes/objects [#23826](https://github.com/scala/scala3/pull/23826)
201+
202+
## TASTy Format
203+
204+
- Update the TastyFormat for matches with sub-cases [#23851](https://github.com/scala/scala3/pull/23851)
205+
206+
## Testing
207+
208+
- Fix line and path separators in test [#23534](https://github.com/scala/scala3/pull/23534)
209+
210+
## Transform
211+
212+
- Check extension method at typer [#24199](https://github.com/scala/scala3/pull/24199)
213+
- Elide conversion of receiver, extension or inline map, trailing implicit args, in DropForMap [#23416](https://github.com/scala/scala3/pull/23416)
214+
- Replace sun.misc.Unsafe used in LazyVals with VarHandles [#24109](https://github.com/scala/scala3/pull/24109)
215+
- Handle FlexibleTypes in asContextFunctionType [#23865](https://github.com/scala/scala3/pull/23865)
216+
- No mixin forwarder when ancestor is sealed [#23482](https://github.com/scala/scala3/pull/23482)
217+
- Emit mixin forwarders as ordinary, non-bridge methods again [#23942](https://github.com/scala/scala3/pull/23942)
218+
- Improve the generic signatures for singleton types [#24288](https://github.com/scala/scala3/pull/24288)
219+
220+
## Typeclass Derivation
221+
222+
- Support Mirror for generic tuples arity > 22 [#23363](https://github.com/scala/scala3/pull/23363)
223+
224+
## Typer
225+
226+
- Disable distribution of intersection types over applied types [#23441](https://github.com/scala/scala3/pull/23441)
227+
- Push distributivity rule to source future [#24376](https://github.com/scala/scala3/pull/24376)
228+
- Fix crash in Selectable unapply with custom applyDynamic [#24343](https://github.com/scala/scala3/pull/24343)
229+
- Tweak tryParameterless to use readapt [#24078](https://github.com/scala/scala3/pull/24078)
230+
- Mark the type of lifted definitions as inferred [#24104](https://github.com/scala/scala3/pull/24104)
231+
- Fix "Regression in zio/zio-schema for typer/implicit resolution" [#24156](https://github.com/scala/scala3/pull/24156)
232+
233+
## Union types
234+
235+
- Discard `scala.caps.Pure` in the erasure of union and intersection types [#24151](https://github.com/scala/scala3/pull/24151)
236+
- Modify rule for nullable union types in generic signatures [#24129](https://github.com/scala/scala3/pull/24129)
237+
- Modify type erasure logic of nullable unions for Scala 2 pseudo-unions [#24130](https://github.com/scala/scala3/pull/24130)
238+
239+
240+
241+
# Contributors
242+
243+
Thank you to all the contributors who made this release possible 🎉
244+
245+
According to `git shortlog -sn --no-merges 3.7.4..3.8.0-RC1` these are:
246+
247+
```
248+
163 Martin Odersky
249+
144 Hamza Remmal
250+
84 noti0na1
251+
73 Som Snytt
252+
39 Eugene Flesselle
253+
21 Wojciech Mazur
254+
19 Jan Chyb
255+
17 Oliver Bračevac
256+
17 Sébastien Doeraene
257+
13 Li Haoyi
258+
12 Yichen Xu
259+
11 HarrisL2
260+
11 Natsu Kagami
261+
10 Matthias Berndt
262+
8 Kacper Korban
263+
8 aherlihy
264+
7 EnzeXing
265+
7 dependabot[bot]
266+
5 Emil Ejbyfeldt
267+
5 Matt Bovel
268+
5 Seyon Sivatharan
269+
5 Tomasz Godzik
270+
4 Piotr Chabelski
271+
4 Zieliński Patryk
272+
3 Jeon Yoonjae
273+
3 Kenji Yoshida
274+
3 Yoonjae Jeon
275+
3 rjolly
276+
2 Jamie Thompson
277+
2 Katarzyna Marek
278+
2 Raphael Jolly
279+
2 katrinafyi
280+
1 Aleksey Troitskiy
281+
1 Alex1005a
282+
1 Florian3k
283+
1 Guillaume Martres
284+
1 Jędrzej Rochala
285+
1 Kalin-Rudnicki
286+
1 Lukas Rytz
287+
1 Martin Duhem
288+
1 Martynas Mickevičius
289+
1 Max Smirnov
290+
1 Mirco Dotta
291+
1 Patryk Zieliński
292+
1 Paweł Perłakowski
293+
1 Vadim Chelyshov
294+
1 vder
295+
1 zielinsky
296+
1 虎鸣
297+
```

0 commit comments

Comments
 (0)