u/sideEffffECt
-
29points
-
29points
Micronaut will hopefully soon support Scala (WIP) (github.com)
-
42points
Introduction to Scala 3's Capture Checking and Separation Checking | tanishiking blog (tanishiking.github.io)
sideEffffECt
sideEffffECt
He? Maybe I'm misunderstanding your post, but I think almost everybody knows that OpenJDK's HotSpot is implemented in C++, which is very much a non-typesafe language.
sideEffffECt
Interesting! - 10 GB is indeed a lot.
I'm not disputing the numbers. Now I'm just wondering what/if the other, Java-implemented, tools for working with JVM heap do differently and/or what their memory needs are.
sideEffffECt
Don't get me wrong, this is your project, your decisions, your fun, don't let internet people like me spoil it for you.
But usually people pick the tech stack congruent with their target audience. For analyzing JVM heaps that means Java (or perhaps some other JVM language). One of the consequences is that distribution/packaging headaches disappear --- you run wherever JVM runs.
I also have doubts about the performance improvements. I guess if the analysis runs quickly, then JVM warmup could dominate so, your Rust program may finish faster (perhaps native-image could help then?). But memory? How much did you save? Was it really significant and "worth it"?
sideEffffECt
But isn't it weird to require Rust for working with Java things?
If you used Java, people could contribute and also the packaging/distribution/platform issues would disappear.
sideEffffECt
I use a native Rust engine for heap analysis
Why would you use Rust for analyzing Java heap? That doesn't seem to make any sense...
sideEffffECt
What is the default for when java-version is not set (nor java-version-file)?
sideEffffECt
targets macOS Apple Silicon
Isn't Java supposed to be multi platform? What weird things are you doing?
sideEffffECt
What can I say, I'm just used to typing -- ever since I learnt TeX all those years ago :D
But a good point, the proper proper usage is probably different. Oh well, I could make excuses about English not being my first language...
In any case, I'm super excited about Capabilities and Capture Checking in Scala and am curious where people will take it. This little project of mine is just one idea out of countless possible.
Have you already played with it?
sideEffffECt
No, TeaVM just converts JVM bytecode to Wasm(GC) bytecode. You can then run that in browsers or other VMs, like Wasmtime.
sideEffffECt
But that is just Helidon's HTTP stack Nima, if I'm not mistaken. Nothing against that. But Helidon is more than just HTTP, isn't it?
sideEffffECt
If you read the link above, you'll see that Type Safety is about Progress and Preservation. And that's something C++ just doesn't have, it's full of undefined behaviors.
sideEffffECt
While Scala 2 is getting removed from Quarkus and Scala 3 doesn't see much activity.
Does anybody what is the Scala situation with Helidon or Spring Boot? Quick googling suggests Scala+Spring Boot should work, but nothing on Helidon...
sideEffffECt
Better checks at compile time are immensely valuable just on their own. Proper use/management/freeing of resources or correctness in general. These are things that can be helped with these new features of Scala type system.
sideEffffECt
But is this really for all memory polls or just heap?
sideEffffECt
Better checks at compile time.
sideEffffECt
Also, AI agents are very capable of using Scalafix for refactoring a Scala codebase. That means programmatic and semantically aware change.
But if no build tool or compilation is available/desirable, there's also https://github.com/nguyenyou/scalex which sits between stupid grep and full-blown sematicdb.
sideEffffECt
The website says it's using semanticdb https://sake92.github.io/basamake/navigation.html
sideEffffECt
Diagnostics, find references, get documentation for type/member... That is all super useful for coding agents.
sideEffffECt
Nice! Have you also considered exposing the features also as MCP tools?
I think it would be very useful for AI agents, they could work on many Scala codebases from within a single workspace. The lazy loading would come especially handy in this scenario.
sideEffffECt
Is it interoperable via https://build-server-protocol.github.io/ ?
sideEffffECt
However, we are hoping to release a lower level building block that integrates with the platform mechanisms.
Could you please tell is more about this? What would be the lower level building blocks?
Also note that to do that, it's enough to only work with Scala 3.0.0, which is not a moving target.