u/sideEffffECt

10.4k post karma · 4,579 comment karma · joined Aug 2012

  1. 29points

    dapr4s: POC for using Safe Scala to build cloud apps (self.scala) [capture checking]

    3 comments

  2. 29points

    Micronaut will hopefully soon support Scala (WIP) (github.com)

    51 comments · source

  3. 42points

    Introduction to Scala 3's Capture Checking and Separation Checking | tanishiking blog (tanishiking.github.io)

    7 comments · source

sideEffffECt

could this be made "good enough" to bootstrap the Scala compiler?

Also note that to do that, it's enough to only work with Scala 3.0.0, which is not a moving target.

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?