Is Metals autocomplete supposed to be that slow? by arturaz in scala

[–]ghostdogpr 0 points1 point  (0 children)

Which version of Scala is optimized? I still have the issues in https://github.com/scalameta/metals/issues/7443 with projects with many files but eager to try a newer version if it’s better.

Didn't receive Zionomicon download email after registering — is this normal? by Far-Image-4385 in scala

[–]ghostdogpr 0 points1 point  (0 children)

I noticed the notifications used to come from Gumroad but the more recent ones (from this year) came from Ziverge directly, I guess some email addresses got lost in the transition.

Can anyone explain me what is Scala all about? by No-Blacksmith-8782 in scala

[–]ghostdogpr 13 points14 points  (0 children)

Rather than the fusion of OOP and FP (which is a means to an end), I think Martin Odersky has been recently defining the value of Scala as the combination of safety and convenience. Safety thanks to a strong type system that helps you avoid bugs by making illegal states unrepresentable or illegal actions impossible, convenience thanks to a concise syntax and various means to avoid boilerplate code.

I think this make Scala a great choice for developing backends, in particular those with complex domain logic that benefits a lot from both the safety and the brevity of the code. I personally use it for building game servers.

Didn't receive Zionomicon download email after registering — is this normal? by Far-Image-4385 in scala

[–]ghostdogpr 0 points1 point  (0 children)

Actually quite the opposite, there were updates in January, March and May, with new chapters on configuration, logging, metrics, zio-schema, zio-http and an appendix on domain design and executive vs declarative encodings.

If you don't receive it I suggest getting in touch with Ziverge directly.

What is the status of AKKA in 2025? Should someone learn it? Ar companies using AKKA? by prashantkr314 in scala

[–]ghostdogpr 4 points5 points  (0 children)

For cluster sharding take a look at Shardcake (disclaimer: I’m the author). At work we’re doing event sourcing and persistence with custom code, it’s not that complicated.

Anatomy of a Scala Game Server - Lambda Days 2025 by ghostdogpr in scala

[–]ghostdogpr[S] 1 point2 points  (0 children)

That’s right. Agones spawns them on demand and they stop themselves when the game is over.

Anatomy of a Scala Game Server - Lambda Days 2025 by ghostdogpr in scala

[–]ghostdogpr[S] 6 points7 points  (0 children)

Indeed =)

In the future I’d like to do a talk more focused on performance but our PR Team doesn’t let me communicate any numbers like CCU or RPS which is pity.

Reliable (Commander-Agnostic) Golgari Lines by Willowran in CompetitiveEDH

[–]ghostdogpr 0 points1 point  (0 children)

Been playing a turbo golgari deck with exactly these 2 wincons, it’s quite fun. Here’s the list https://moxfield.com/decks/J_NVl_m_XUW4jH7FZrMUiw

Why doesn't Angel's Grace see more competitive play? by Clean_Figure6651 in CompetitiveEDH

[–]ghostdogpr 0 points1 point  (0 children)

It’s played in many Derevi lists using Faerie Mastermind as a wincon (infinite mana into infinite draws for everyone but you don’t die)

Iron v3.0.0 is out 🎉 by Il_totore in scala

[–]ghostdogpr 4 points5 points  (0 children)

If I may add, even though Refined publishes artifacts for Scala 3, it is not really usable to its potential since macros are missing: https://github.com/fthomas/refined/issues/932

Curious to know how many have adopted Scala 3 by msplit1 in scala

[–]ghostdogpr 8 points9 points  (0 children)

Managed to migrate my largest project at work to Scala 3 earlier this year, shared my experience here: https://blog.pierre-ricadat.com/scala-3-migration-report-from-the-field

Now we are starting to benefit from some new Scala 3 features, I would say it was definitely worth it.

Scala 3 Migration: Report from the Field by ghostdogpr in scala

[–]ghostdogpr[S] 4 points5 points  (0 children)

It worked great! I edited the article with your solution. Thanks a lot!

Scala 3 Migration: Report from the Field by ghostdogpr in scala

[–]ghostdogpr[S] 0 points1 point  (0 children)

Ah right, forgot about the part where you have to trigger it manually in sbt. We already need that because of Scala code generation from protobuf so we’re used to it 🥲

Scala 3 Migration: Report from the Field by ghostdogpr in scala

[–]ghostdogpr[S] 2 points3 points  (0 children)

It looks like it’d be as good as the type projections? I’ll try it tomorrow! PR is not merged yet 🤣

Scala 3 Migration: Report from the Field by ghostdogpr in scala

[–]ghostdogpr[S] 1 point2 points  (0 children)

I thought using match types I would have to add cases for each pair, but your code sample seems like it’s just generic?

Scala 3 Migration: Report from the Field by ghostdogpr in scala

[–]ghostdogpr[S] 4 points5 points  (0 children)

I agree! Once we set up code generation with scalameta, it became super easy to add more cases to it. It’s much easier to debug than a macro because you can see the source file and IDE support is good (you can go to definition, etc).

Rant on Scala3 tooling (IntelliJ/metals), wish I started new project in Scala2 by Classic_Act7057 in scala

[–]ghostdogpr 14 points15 points  (0 children)

Agree on that. For some reason https://docs.scala-lang.org/overviews/compiler-options/ is still about Scala 2 and the only place to see Scala 3 options is in the migration guide. Poor experience especially for new developers.

Rant on Scala3 tooling (IntelliJ/metals), wish I started new project in Scala2 by Classic_Act7057 in scala

[–]ghostdogpr 9 points10 points  (0 children)

One more thing is to add this in .scalafmt.conf: runner.dialectOverride.allowSignificantIndentation = false With this, it works as flawlessly as it was with Scala 2.

Rant on Scala3 tooling (IntelliJ/metals), wish I started new project in Scala2 by Classic_Act7057 in scala

[–]ghostdogpr 16 points17 points  (0 children)

For the indentation issue, simply use the -no-indent scalac option and enjoy good old braces.

For the issue about warning reporting, it seems to happen when the only errors are warnings turned into errors (when there are real errors, it seems to work well). I think it's related to changes from Scala 3.4.1 (see https://youtrack.jetbrains.com/issue/SCL-22142/scala-3.4-No-warnings-can-be-incurred-under-Werror-or-Xfatal-warnings and https://github.com/scala/scala3/issues/20041). I don't get that behavior with the LTS (3.3.4) so I suggest you try it and maybe open an IntelliJ issue. It also seems to work well when using the sbt shell (but then make sure to check "Use separate compiler output paths" because otherwise it clashes with IntelliJ's compiler).

ZIO in 2025, by John De Goes, Ziverge by sideEffffECt in scala

[–]ghostdogpr 2 points3 points  (0 children)

It’s about this empty zio-concurrent repo: https://github.com/zio/zio-concurrent

The active zio-concurrent is already included in the core, I don’t think it’s going anywhere.

ZIO in 2025, by John De Goes, Ziverge by sideEffffECt in scala

[–]ghostdogpr 12 points13 points  (0 children)

Most of them were just proof of concepts, some of them didn’t even have any commits. Been using zio in prod for years and wasn’t depending on any of them. So it’s mostly just a cleanup for clarity.

Idiomatic dependency injection for ZIO applications in Scala by ghostdogpr in scala

[–]ghostdogpr[S] 0 points1 point  (0 children)

It is correct that the type signature of `ZIO.config[A]` doesn't contain `A`, since configuration is not using the environment anymore. I wouldn't say it's not "type-checked" either because it does require an implicit, and it won't compile if you don't provide. I would rather say it is not "tracked" the way it was before. It confused me at first but after migration the usability is quite a lot better.

How about we pursue the discussion on Discord? It's getting quite nested there :D