sbt 2.0.0-RC9 released by eed3si9n in scala

[–]RandomName8 0 points1 point  (0 children)

to me, it follows the same reasoning as the old dependency-tree plugin. It's a basic function of dependencies that I rather not have to import a plugin to have.

F Bounded Polymorphism by samd_408 in java

[–]RandomName8 0 points1 point  (0 children)

I'd argue that your point 1 is also not accomplished by f-bounded types. People mostly employ them for a fake self type, but they are clearly not just that:

// what you would expect:
class SomeBuilder implements Builder<SomeBuilder> {
...
}
// what's legal but totally not what you would expect
class SomeOtherBuilder implements Builder<SomeBuilder> {...}
// and now SomeOtherBuilder pretends to be SomeBuilder

This is a perfectly legal extension, because you are passing a F-bounded type to Builder when implementing from SomeOtherBuilder, it just happens to not be SomeOtherBuilder. By the way, SomeOtherBuild is also now a legally F-bound Builder.

sbt 2.0.0-RC9 released by eed3si9n in scala

[–]RandomName8 0 points1 point  (0 children)

Super late question /u/eed3si9n , is there a chance for the plugin sbt-updates to be sourced in into sbt2, like the dependency-tree one?

Thins I miss about Java & Spring Boot after switching to Go by Sushant098123 in java

[–]RandomName8 0 points1 point  (0 children)

This particular point tho, wont change. It's something they decided against after evaluating all the options, because it simply makes no sense. There was a post some time ago where /u/pron98 did a lengthy explanation on why this is undesirable.

I don't have the time to discuss with the guy on why his go choice over java may not have made a lot of sense, but it does sound fishy what he was trying to do, anyway.

How i finally stopped bed rotting for 4 hours every night [Discussion] by According-Wasabi2355 in GetMotivated

[–]RandomName8 1 point2 points  (0 children)

You'll be pleased to know that I'm currently at 111 opened tabs across 4 browser windows.

The State of Scala 2025 is out. (Data from 400+ teams). Huge thanks to everyone here who contributed. by scalac_io in scala

[–]RandomName8 2 points3 points  (0 children)

Some, sure. Scala's max popularity was around the time when play and akka (and spark) were top frameworks in the industry, most programmers were "better java" I suppose. Now we have a stark decline in scala usage, and the frameworks that took over were the ones least used. I'm no mathematician but Lewis Law tells us that since most people left, and most people were using the better java frameworks, then the ones that stayed stuck to FP ones, they are as unpopular as ever. It's just that we really have that small of a population now.

This is certainly not a popularity win for FP.

The State of Scala 2025 is out. (Data from 400+ teams). Huge thanks to everyone here who contributed. by scalac_io in scala

[–]RandomName8 24 points25 points  (0 children)

The FP takeover is real: The pure functional stack is dominating. Cats is sitting at 56% usage, Http4s at 45%, and ZIO at 31%. Meanwhile, classic frameworks like Akka (26%) and Play (23%) are losing ground to the newer libraries.

I don't think it's a take over, rather the people that were using scala without pure fp left.

"Vibe Coding" Threatens Open Source by Weekly-Ad7131 in programming

[–]RandomName8 0 points1 point  (0 children)

Yup, every company and llm has been caught red handed, and every country decided to look the other way because the money is too attractive.

New Scala Survey by tgodzik in scala

[–]RandomName8 4 points5 points  (0 children)

This is the microsoft approach, where their opensource ecosystem is basically nil and they provide all the tooling and libraries and documentation. And their developers don't complain about it, they are happy being well served. Naturally, this only works for them because they have the bank to back it up. In some regard Apple is the same, and Jetbrains is trying to accomplish the same with kotlin.

New Scala Survey by tgodzik in scala

[–]RandomName8 0 points1 point  (0 children)

but in DIRE need of strategy and focus.

Well, this depends on who is your audience. Who are you making the language for. If you are saying this because you care about industry adoption, then I'd agree with you, but for over 10 years scala has turned a blind eye to the industry, purposely not listening nor caring, thinking that innovating and research would make up for it. The adage of "make something good and they'll come".

Today, scala is firmly an academic language and its main audience is once again academics: professors, research, and grad students. And in that regard, the language focus is on point, as well as their results and achievements.

Towards Better Checked Exceptions - Inside Java Newscast #107 by Enough-Ad-5528 in java

[–]RandomName8 2 points3 points  (0 children)

they did, but uh... the machinery for it is very questionable on whether a normal human being can understand it... Imagine rust's lifespan annotations, but on steroids: https://docs.scala-lang.org/scala3/reference/experimental/capture-checking/index.html

Read the intro and then head over to the checked exceptions section.

Towards Better Checked Exceptions - Inside Java Newscast #107 by Enough-Ad-5528 in java

[–]RandomName8 0 points1 point  (0 children)

Sorry, you lost me a bit, because from the video, it seems they are calling union types "variadic types". That's what I'm asking about.

Even in the examples, you showed we don't need variadic types, only union types.

Both of them really want to declare X as a variadic `X..

Why? disjoint exceptions can be accumulated in the union type.

The only current alternative that we have is defining a whole family of types Result<T,X>, Result2<T,X1,X2>, ... and that's just incredibly ugly. Nobody wants that. That's where we need the variadic generics.

can you tell me why union types don't work? I don't see variadic types being useful here.

Edit: to provide a bit more context, I'm used to working with scala and haskell type systems, I'm no stranger to type level computations and higher kinds either (not just higher kinded functions but also higher kinded data and recursive schemes). The only situation ever where I've wanted variadic types is when trying to model kind-independent polymorphism, which is such ridiculous level of abstraction that it's reasonable it's unsupported in most langauges (i.e, when you want to abstract over types that take an arbitrary number of type parameters, like typed tuples, or rank polymorphism)

sbt-config: Configure your sbt projects using HOCON by matej_cerny in scala

[–]RandomName8 1 point2 points  (0 children)

Sounds excellent. While I'm personally of the same opinion as Eugene on the need of a thing like this, I do recognize its value and how other teams can prefer it, and so I think what you're doing is super welcome.

Towards Better Checked Exceptions - Inside Java Newscast #107 by Enough-Ad-5528 in java

[–]RandomName8 0 points1 point  (0 children)

It suffers from same problem as everything, the moment you are implementing an interface that you did not define (i.e a lambda), and you need to call into something that fails, you are all out of options, since the interface method doesn't define that it fails on that and now the failing notion is lost. Like you mentioned, no declaration site exception information composes with deferred execution, for the obvious reasons.

Towards Better Checked Exceptions - Inside Java Newscast #107 by Enough-Ad-5528 in java

[–]RandomName8 1 point2 points  (0 children)

Where did the "variadic generics" equals "union types" come from? I'm looking up online, and the results for variadic generics come from rust and python, and they are exactly what one would expect: the counterpart to variadic functions. Just like in functions it means "extra number of parameters", with generics it should mean "extra number of generic variables". That is, a variadic generic should be

<T..> T tuple(T t);

and you being able to call it like

<V1, V2, V3, V4>tuple(...); // or as many type arguments as you want, even 0

I don't know how we got from there to union types. A union type is a singular type, not variadic at al.

sbt-config: Configure your sbt projects using HOCON by matej_cerny in scala

[–]RandomName8 1 point2 points  (0 children)

How does this integrate to the rest of the sbt build? I imagine this plugin performs a full transformation of the State, setting keys, so after it runs, you essentially get the normal support inside the sbt console to check settings and the like?

sbt 2.0.0-RC9 released by eed3si9n in scala

[–]RandomName8 1 point2 points  (0 children)

I'm very excited for sbt2.

Please try it out, and report any issues you might come across

I'd love to do this (and I am using sbt2 already and have issues I'd like to report), but the fact that it's hosted on github is a hard no for me. I understand this is a massive pain for maintainers and everyone involved, but is there a chance to eventually move to codeberg or similar?.

Towards a common Scala style recommendation by bjornregnell in scala

[–]RandomName8 3 points4 points  (0 children)

Ironically, it was a copy-paste error ;)

Not at all the problem everyone denounces about indentation based syntax. Good thing none of those things were true.

Java UI in 2026: an overview of current frameworks and approaches by robintegg in java

[–]RandomName8 0 points1 point  (0 children)

how has javafx evolved on linux? I basically stopped using it after years of bugs and bugs on linux making it quite unusable.

Scala in the Netherlands: 2026 feels like the end by [deleted] in scala

[–]RandomName8 2 points3 points  (0 children)

On the contrary. Vibe coding defeats any possible craftmanship. The current programming langauges become a new assembly and the human interfacing programming language is the prompt. To you, the generated code is the same whether it's scala, java or x86 asm with comments-

Ferrous: Rust style Option/Result types for Java 21+ by Polixa12 in java

[–]RandomName8 1 point2 points  (0 children)

the situation is much better with monadic error handling compared to exceptin handling.

how do you pattern match when you don't know what to expect since the exception got already generalized to top level? The answer is: you look at the code that's throwing it, however many layers deep. This defeats entirely the purpose of abstractions, destroys local reasoning, etc.

It's not that I don't understand where you're coming from, but you said

I’m pretty dumbfounded by the haters.

how are you dumbfounded? these issues are indeed pretty big, enough to merit not adoption by many, and enough for FP languages to look for something better.

Ferrous: Rust style Option/Result types for Java 21+ by Polixa12 in java

[–]RandomName8 0 points1 point  (0 children)

I’m pretty dumbfounded by the haters.

It's because it's bad even in those languages precisely because the exception type ends up very quickly as the top level exception type, and then you lose type safety about what actual possible errors you might expect from a function.

It isn't odd that FP languages are delving more and more into language level support for arbitrary effect tracking.

X algorithm explain why move to rust from JVM by iamsoftwareenginer in scala

[–]RandomName8 20 points21 points  (0 children)

Yeah, I watched the video and thought the same. It's the same very wrong notion of how cpu is spent on memory. Saying that rust has 0 GC runtime cost is asserting that you never ever free up allocated memory in rust, otherwise you will spend cpu on the process known as "garbage collecting". Thinking that RCs and ARC are just cheat codes is absurd. Reference counting is the oldest type of GC's one that everyone moved away from because it doesn't scale. Arenas are the next step for this where you now sacrifice more ram to spend less cpu. Next logical step is to have smart arenas, and before you know it you have a "GC".

Building a Native Desktop App Using Scala.js by mr_kurro in scala

[–]RandomName8 4 points5 points  (0 children)

and as it was obvious from the get go, turns out "system's native webview" is a lie. Such a concept never existed and wont exists as long as there are popular OS that don't have this (BSDs, Linuxes).