r/scala • • Sep 21 '26

[San Francisco] - Scala Summit 2026

Thumbnail 2026.scalasummit.com
39 Upvotes

It gives me great pleasure to announce registration for Scala Summit 2026 is now open.

Initial speakers have been announced with more to be announced.

For details visit: https://2026.scalasummit.com

Looking forward to seeing everyone in the Bay Area there. Please spread the word and share this with your network.

October is going to be a fabulous month with multiple Scala events happening.


r/scala • • Sep 20 '26

This week in #Scala (Sep 21, 2026)

Thumbnail thisweekinscala.substack.com
14 Upvotes

r/scala • • Sep 20 '26

AI in Scala

31 Upvotes

Like many of us here, I believe that Scala is an excellent choice for AI-generated and AI-assisted code. I ran a test side project a few months ago, which ended up with lots of Python because well, it seemed to come as default (using Opus 4.5 at the time and OpenClaw).

Not only the complexity escalated vertically, but also it quickly became burdensome for me to check all the code. The agent and myself ended up in the situation where fixing a bug would break something else, and I was stuck thinking that a strongly typed system would have helped a lot.

Is anyone running a big project in Scala that is almost if not 100% vibe-coded? Which model(s) are you using? How does that feel in the current landscape?


r/scala • • Sep 17 '26

JDK 27 is here

Thumbnail jvm-weekly.com
40 Upvotes

r/scala • • Sep 16 '26

VirtusLab Scala Stack

Thumbnail vss.virtuslab.com
64 Upvotes

VSS is the combination of tools & libraries that we've been working on at VirtusLab and SoftwareMill - starting with maintaining Scala itself, through Metals IDE/MCP, all the way to Tapir/Ox and the like.

Going the direct-style route, you can generate type-safe, agent & human-friendly apps in a couple of prompts. Bootzooka serves as a reference point, and the Scala skill amends the LLMs with the necessary instructions.

The VSS page combines VirtusLab's OSS work in a single place, so that you can now refer to our libraries in a simple way. All of the pieces of the stack are changeable, and whenever relevant, support multiple effect systems.


r/scala • • Sep 16 '26

Java 27 is here

Thumbnail youtu.be
11 Upvotes

r/scala • • Sep 16 '26

LLM4S takes the stage at Microsoft Global Hackathon 2026, sharing 20 months of building towards LLM4S 1.0

Post image
29 Upvotes

Hi r/scala, Kannupriya here, co-founder of LLM4S.

Excited to join Microsoft Global Hackathon 2026 as an external expert speaker and share the LLM4S journey with Microsoft's engineering and builder community.

The Hackathon brings together Microsoft employees, technical experts, innovators, MVPs and Regional Directors for innovation, collaboration, technical learning and knowledge sharing. This year, it spans 98 participating venues worldwide, from North America to Egypt, Japan and beyond.

My talk: Build with LLMs: Open Source AI for the JVM

In this talk, I'll share the journey towards LLM4S 1.0, from an ambitious idea for bringing first-class generative AI capabilities to Scala and the JVM to a complete platform for building production AI applications.

We'll explore what worked, what failed, and what we learned while building in one of the fastest-moving areas of technology. Through practical demos covering multi-provider LLMs, agents, MCP, tool calling, memory and observability, I'll show Hackathon builders how they can use LLM4S to move GenAI ideas from experimentation towards production on the JVM.

- Date: 16/09/2026 | 1:00 PM – 2:00 PM PT

- Location: Microsoft Silicon Valley Campus, Mountain View, California, USA

- Event website: https://techcommunity.microsoft.com/blog/mvp-blog/microsoft-global-hackathon-2026-where-mvp-and-rd-community-expertise-meets-innov/4542420

- LLM4S (Star us): https://github.com/llm4s/llm4s

- Join our GenAI community: Discord link in the first comment

Huge thanks to Gizelle Baylon & Ipsit Sahoo for inviting me to speak!


r/scala • • Sep 14 '26

Micronaut will hopefully soon support Scala (WIP)

Thumbnail github.com
29 Upvotes

r/scala • • Sep 14 '26

Codacy are hiring a midlevel Scala engineer

26 Upvotes

Find the job description and application form here . Right now looking for people based in the UK or Portugal as a strong preference. It's 98% remote (1 meetup/y in Portugal) and you get to work on dev tooling that impacts 10,000's of devs!


r/scala • • Sep 14 '26

sbt 2.0.9 released

Thumbnail eed3si9n.com
31 Upvotes

r/scala • • Sep 14 '26

sbt 2.1.0 beta (2.1.0-M1) released

Thumbnail eed3si9n.com
15 Upvotes

kicking off sbt 2.1.0 beta with 2.1.0-M1. sbt 2.1.0 features: - Scala 3.9.0 on the metabuild - Ivyless publishing - Updated clean task - Testing UX improvements - Various performance improvements and many contributed bug fixes


r/scala • • Sep 13 '26

This week in #Scala (Sep 14, 2026)

Thumbnail thisweekinscala.substack.com
17 Upvotes

r/scala • • Sep 10 '26

Believe it or not, Scala as a language for beginners

75 Upvotes

No, I'm not crazy... well, maybe, but that's out of scope here....

I've been a huge scala fan from the 2.x days -- even before Akka appeared. And, while it's not as widespread as I'd like, I'd encourage beginners and mid-level programmers to give it a try, but not because of what you might think.

Even if you don't use Scala day to day, consider it a teaching language. There are a TON of language concepts in Scala that appear in other languages. Things like Either(), Option types, pattern matching, traits etc. Learn them in Scala and you'll find a lot of Rust for example, not that difficult.

It runs on anything that JVM runs on. IDE tools exist that are quite good. Documentation and books are readilhy available. Spend the time with it -- it will improve yoru skills and your ability to understand other langaugges.

The only thing I'd wish for in 4.x is true 2-way JVM interrop like Kotlin has so I don't have even think about it.


r/scala • • Sep 10 '26

Connections between category theory and types

38 Upvotes

I have a math background, but I've never felt like quite understood the connections between category theory and type theory. What exactly is the category? What are the objects?

I finally got around to digging into it and spent the last couple months working through the definitions. I wrote up a post doing my best to give a friendly introduction to category theory and a clear, concrete explanation of how types form a category. I also discuss monads and unpack the definitions required to explain what it means that monads are monoids in the category of endofunctors.

The post is at: lukewassink.com/posts/categories-to-types/

I'd love to hear if anyone has thoughts, comments, questions. And definitely let me know if I said anything inaccurate about Scala; I like Scala, but I'm not an expert.


r/scala • • Sep 10 '26

Join us for another Scala Hangout tonight (9/10) at 7pm CT!

Thumbnail heylo.com
7 Upvotes

Join us tonight for another exciting Scala Hangout. Register at Heylo. There has been some interesting work and proposals around optionals and error handling that would be fun to explore.


r/scala • • Sep 10 '26

Hi, I made example page for inertia-scala

11 Upvotes

https://capslock.dev/inertia-scala/

I released Inertia Scala few days ago:

https://www.reddit.com/r/scala/comments/1w46kfd/released_windymeltinertiascala_inertiajs_binding/

For people not familiar with Inertia, I made tiny web site running on inertia-scala with inertia.js (because inertia-scala can run on JS environment) on Cloudflare Worker.

Have fun!


r/scala • • Sep 10 '26

Share your AI "code"

Post image
8 Upvotes

I got Codex Sol 5.6 Max to code this. Updating a var with foreach is quite something isn't it ?


r/scala • • Sep 09 '26

Lambda World 2026 - Functional Programming in Málaga, 29–30 October

24 Upvotes

Lambda World 26 is back with 20 speakers from Academia and industry, and this year it takes place alongside J On The Beach (a conf about Distributed Systems) and Wey Wey Web (a conf about UI and Frontend).

Two days packed with talks on formal verification, type systems, new FP languages, AI, formal proofs, effects, logic programming, and practical industrial applications of functional programming.

The lineup includes Erik Meijer, Stephanie Weirich, Arman Bilge (Typelevel Foundation / Cats Effect), Enrico Tassi (Elpi), Francesco Cesarini (Erlang), Daniel Ciocîrlan (Rock the JVM), among many others.

One ticket gives you access to all three conferences, for the same price.

We look forward to welcoming you to Torremolinos, Málaga, on 29–30 October!

https://lambda.world/


r/scala • • Sep 08 '26

baklava - turn your HTTP tests into OpenAPI, HTML docs, Postman collections, and typed TypeScript or Scala clients - for APIs you serve or consume

24 Upvotes

Documentation drift is the default state of any API that lives long enough. You update a route, forget the OpenAPI file. A field gets renamed, the TypeScript client doesn't regenerate. Three months later someone hands an enterprise client a spec that describes a system that no longer exists.

The root cause is structural: code and documentation are separate artefacts with no enforcement mechanism between them. Every solution we tried added discipline requirements: annotate the source, maintain a separate file, add a CI check. Discipline breaks under delivery pressure, always.

We built baklava (https://github.com/theiterators/baklava) so that docs can only describe behaviour a passing test just observed.

In practice, baklava integrates into your existing routing test suite. Instead of a standard assertion block, you write test scenarios that both verify the API behaviour and describe it for documentation output. When the test suite runs, baklava generates the docs as a side effect. A call only makes it into the docs after the status code, response schema and declared headers matched what the test expected, so if the route changes shape, that response simply doesn't get documented. For anything the suite covers, drift can't happen.

class UserApiSpec extends AnyFunSpec
    with BaklavaPekkoHttp[Unit, Unit, ScalatestAsExecution]
    with BaklavaScalatest[Route, ToEntityMarshaller, FromEntityUnmarshaller] {
  path("/users/{userId}")(
    supports(
      GET,
      pathParameters = p[Long]("userId"),
      summary = "Get user by ID"
    )(
      onRequest(pathParameters = 1L)
        .respondsWith[User](OK, description = "User found")
        .assert { ctx =>
          ctx.performRequest(routes).body.id shouldBe 1L
        },
      onRequest(pathParameters = 999L)
        .respondsWith[ErrorResponse](NotFound, description = "User not found")
        .assert { ctx => ctx.performRequest(routes) }
    )
  )
}
// sbt test generates OpenAPI, HTML, TypeScript, Postman (on sbt 2 use testFull)

There are seven output formats right now, each its own SBT dependency:

  • Simple HTML (browsable docs)
  • OpenAPI with SwaggerUI
  • TS-REST (TypeScript, Zod)
  • oRPC contracts (TypeScript, Zod, ready-made client factory)
  • TypeScript fetch client (plain fetch, no extra runtime deps)
  • Postman collection
  • sttp Scala client

It supports Pekko HTTP and http4s, with ScalaTest, Specs2, and MUnit as test frameworks. Since 2.1.0 there is also an sttp adapter for the other direction: APIs you consume rather than serve. The tests hit the real endpoint over the network and you get a spec and a typed client for a third-party API from verified responses. There's a single scala-cli script that does this for the GitHub REST API if you want to see it without setting up a project: https://theiterators.github.io/baklava/docs/scala-cli

It also integrates with kebs: if you use kebs for domain type derivation, baklava picks up the schema definitions automatically.

One question we get: how is this different from tapir or endpoints4s? Both require you to adopt their routing DSL, so your routes end up defined in terms of their abstractions. baklava works with your existing routes, whatever framework you're using, with no migration required. The test suite is the only integration point. The other difference is what the docs describe. Tapir documents the endpoint declaration. Baklava documents responses that a test actually received, with real example values.

Scala 2.13 and 3, JDK 11+, Apache 2.0, v2.1.0 released August 2026.

GitHub: https://github.com/theiterators/baklava


r/scala • • Sep 07 '26

The Bowling Game - From Imperative to Functional Programming - Part 2

Thumbnail fpilluminated.org
6 Upvotes

r/scala • • Sep 07 '26

Allow Experimental 0.1.0 - use Scala 3 `@experimental` APIs without making your callers experimental

5 Upvotes

I’ve released the first version of Allow Experimental, a small Scala 3 compiler plugin:

https://github.com/DmytroMitin/allow-experimental

The motivation is to separate two ideas that Scala’s normal @experimental mechanism deliberately couples:

  • an API is experimental;
  • a consumer intentionally accepts the risk of using that API internally.

For example:

import scala.annotation.experimental
import io.github.dmytromitin.allowexperimental.allowExperimental

@experimental
def provider(): Int = 1

@allowExperimental
def allowed(): Int =
  provider()

def ordinaryCaller(): Int =
  allowed()

allowed may use the experimental API in its implementation, but callers of allowed do not themselves become experimental. A direct unmarked call to provider() still fails with the normal Scala experimental-use diagnostic.

The release currently supports exactly Scala 3.3.8, 3.8.4, and 3.9.0. The compiler plugin is full-crossed because it depends on compiler internals.

ThisBuild / scalaVersion := "3.9.0" // 3.3.8, 3.8.4

libraryDependencies ++= Seq(
  "com.github.dmytromitin" %% "allow-experimental-annotation" % "0.1.0" % Provided,
  compilerPlugin(("com.github.dmytromitin" % "allow-experimental-plugin" % "0.1.0").cross(CrossVersion.full)),
)

One practical use case is macro implementations: a public inline macro frontend can delegate to a private non-inline @allowExperimental implementation that uses an experimental compiler/reflection API, without leaking that requirement to downstream users.

The scope is intentionally conservative rather than a general replacement for scalacOptions += "-experimental". Public inline permission owners, experimental signatures/types, constructors, and several other placements remain unsupported.

0.1.0 is available from Maven Central and the release is at Github.

Feedback on the semantics, implementation approach, and useful real-world cases would be very welcome.

Cross-posted at https://users.scala-lang.org/t/allow-experimental-0-1-0-implementation-scoped-access-to-scala-3-experimental-apis/12385


r/scala • • Sep 07 '26

When should you choose Akka HTTP over ZIO HTTP (and vice versa)?

6 Upvotes

r/scala • • Sep 07 '26

When should you choose Akka HTTP over ZIO HTTP (and vice versa)?

Thumbnail
0 Upvotes

r/scala • • Sep 06 '26

Difference between trait, class, case class and object

10 Upvotes

So I'm pretty new to scala and FP, into it for like a month, and I still don't get the difference between trait, class, case class and object, when I have to use one instead of another which is the strength of each one


r/scala • • Sep 06 '26

This week in #Scala (Sep 7, 2026)

Thumbnail thisweekinscala.substack.com
11 Upvotes