Most active commenters
  • pjmlp(4)
  • still_grokking(3)

←back to thread

Scala 3 slowed us down?

(kmaliszewski9.github.io)
261 points kmaliszewski | 24 comments | | HN request time: 0.001s | source | bottom
1. pjmlp ◴[] No.46183020[source]
The only issue I have with Scala 3 is Python envy, they should not have come up with a second syntax, and pushing it as the future.

If anything is slowly down Scala 3 is that, including the tooling ecosystem that needs to be updated to deal with it.

replies(4): >>46183121 #>>46183318 #>>46184223 #>>46187857 #
2. gedy ◴[] No.46183121[source]
As a former Scala fan, wow you aren't kidding, wth

    val month = i match
        case 1  => "January"
        case 2  => "February"
        // more months here ...
        case 11 => "November"
        case 12 => "December"
        case _  => "Invalid month"  // the default, catch-all
    
    // used for a side effect:
    i match
        case 1 | 3 | 5 | 7 | 9  => println("odd")
        case 2 | 4 | 6 | 8 | 10 => println("even")
    
    // a function written with 'match':
    def isTrueInPerl(a: Matchable): Boolean = a match
        case false | 0 | "" => false
        case _ => true
replies(3): >>46183181 #>>46183392 #>>46185346 #
3. bdangubic ◴[] No.46183181[source]
madness :)
replies(1): >>46183308 #
4. a24j ◴[] No.46183308{3}[source]
Can you eli5 the madness? And how that relates to python/java?
replies(1): >>46183476 #
5. esafak ◴[] No.46183318[source]
You could also have compared it, more attractively, to Haskell.
replies(1): >>46183516 #
6. jfim ◴[] No.46183392[source]
It's been a while since I touched Scala but wasn't that a thing in previous versions, minus the braces not being present?
replies(1): >>46184422 #
7. ◴[] No.46183476{4}[source]
8. pjmlp ◴[] No.46183516[source]
Except the reason behind the syntax change is the losing mindshare from Scala into Python, after its relevance in the big data wave that predated the current AI wave.

Nothing to do with Haskell, even if it is also white space significant.

9. noelwelsh ◴[] No.46184223[source]
Everything is up to date with the new syntax as far as I'm aware. Also, the compiler and scalafmt can rewrite one to the other. A project can pick whatever style it wants and have CI reformat code to that style.
replies(2): >>46184694 #>>46187179 #
10. weego ◴[] No.46184422{3}[source]
Yes, that's all just as it was, and in places braces were not required / interchangeable so this is more of an optional compiler choice than a real change
11. pjmlp ◴[] No.46184694[source]
When I checked a year ago, the IDE tooling still wasn't quite there.
replies(2): >>46185357 #>>46187641 #
12. malkia ◴[] No.46185346[source]
Sorry, I'm coming from C++-ish background - can anyone explain what's going on :)
replies(1): >>46185895 #
13. spockz ◴[] No.46185357{3}[source]
What I don’t get because there is LSP and BSP support. What else is needed to get support for scala 3 from an IDE? Obviously, Kotlin coming from Jetbrains will make it receive a lot more love and first class support.
replies(1): >>46185852 #
14. pjmlp ◴[] No.46185852{4}[source]
Parity with Scala 2 development experience, which was lacking a year ago.
replies(2): >>46195231 #>>46210558 #
15. hocuspocus ◴[] No.46185895{3}[source]
Scala 2's syntax is mostly Java/C-style with a few peculiarities.

Scala 3's optionally allows indentation based, brace-less syntax. Much closer to the ML family or Python, depending on how you look at it. It does indeed look better, but brings its share of issues.[1] Worse, a lot of people in the community, whether they like it or not, think this was an unnecessary distraction on top of the challenges for the entire ecosystem (libraries, tooling, ...) after Scala 3.0 was released.

- [1] https://alexn.org/blog/2025/10/26/scala-3-no-indent/

replies(2): >>46186698 #>>46210666 #
16. gedy ◴[] No.46186698{4}[source]
My personal take is this would be like JavaScript adopting an optional Coffeescript[1] syntax. It's so different that it seems odd to make it an option vs a new language, etc.

[1] https://coffeescript.org/#introduction

17. lmm ◴[] No.46187179[source]
> Everything is up to date with the new syntax as far as I'm aware.

The Eclipse plugin isn't, and none of the newer IDE integrations is reliable.

replies(1): >>46210541 #
18. blandflakes ◴[] No.46187641{3}[source]
I always find downvoting on stuff like this perplexing. It still isn't there. I know that a lot of Scala people are doing metals and some kind of text editor experience, but if you've used something as powerful as Intellij, the Scala 3 experience is a serious downgrade, and it still is today, even though it's better than it was a year ago.
19. ergocoder ◴[] No.46187857[source]
It's on brand for Scala to have multiple ways of achieving the same thing.

Now we x2 by having the curly brace syntax and the indent syntax.

20. theCodeStig ◴[] No.46195231{5}[source]
With Metals the Scala 3 development experience is better; plus one is no-longer tied to one specific IDE.
21. still_grokking ◴[] No.46210541{3}[source]
There's still a working Eclipse plugin? Does Eclipse now support LSP servers?

The most reliable Scala IDE is currently Metals (in VSCode, but other editors work, too). Metals uses directly the compiler for all code intelligence so it's as reliable as the compiler itself.

https://scalameta.org/metals/

https://scalameta.org/metals/docs/#editor-support

replies(1): >>46212900 #
22. still_grokking ◴[] No.46210558{5}[source]
What are you missing currently?
23. still_grokking ◴[] No.46210666{4}[source]
Just for context, a lot of people in the community think that this syntax change was the best thing that happened to Scala since its inception.

Also the silent majority thinks that the people who still lament over that change are just a very vocal minority.

Almost all Scala 3 code uses the new syntax, no matter how loud a few people cry. Similar situation to systemd on Linux…

24. lmm ◴[] No.46212900{4}[source]
> There's still a working Eclipse plugin?

For Scala 2, yes, or there was the last I looked. Still the best Scala development experience by some margin, sadly.

> Metals uses directly the compiler for all code intelligence so it's as reliable as the compiler itself.

Not my experience; maybe it theoretically should be but the integration/bridging piece is still flaky.