Java
fromScala.js
16 hours agoAnnouncing Scala.js 1.21.0
Scala.js 1.21.0 introduces compatibility changes, deprecates JDK < 17, disables Google Closure Compiler by default, and includes performance improvements.
Events are essential inputs to modern front-end systems. But when we mistake reactions for architecture, complexity quietly multiplies. Over time, many front-end architectures have come to resemble chains of reactions rather than models of structure. The result is systems that are expressive, but increasingly difficult to reason about.
Air, now free for MacOS with Linux and Windows versions coming soon, is an agentic development environment, or ADE, built on the idea of integrating the essential tools for managing coding agents into a single coherent experience. Serving as a single workspace where Claude Agent, Gemini CLI, Codex, and Junie CLI can work side-by-side, Air helps developers navigate a codebase and easily switch back and forth between different coding agents.
Modern web applications are no longer just "sites." They are long-lived, highly interactive systems that span multiple runtimes, global content delivery networks, edge caches, background workers, and increasingly complex data pipelines. They are expected to load instantly, remain responsive under poor network conditions, and degrade gracefully when something goes wrong.
As a high-level description, Swift is an ahead-of-time compiled, memory-safe, multi-paradigm programming language. Swift uses reference counting for memory management instead of garbage collection, and has recently added support for limited lifetime analysis. Finally, Swift leans heavily on types with value semantics by leveraging copy-on-write. This enables powerful local reasoning, as value types are either mutable or shared, but not both.
About the show Sponsored by us! Support our work through: Connect with the hosts Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 11am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Over the past decade, software development has undergone a massive transformation due to continuous innovations in tools, processors and novel architectures. In the past, most applications were monoliths and then shifted to microservices, and now we find ourselves embracing composability - a paradigm that prioritizes modular, reusable, and flexible software design. Instead of writing separate, tightly coupled applications, developers now compose software using reusable business capabilities that can be plugged into multiple projects. This enables greater scalability, maintainability, and collaboration across teams and organizations. At the heart of this movement is Bit Harmony, a framework designed to make composability a first-class citizen in modern web development.
The request for its API val request = Request[IO](Method.POST, uri"/jobs")val api = new AsyncJobApi // this will not compile since AsyncJobApi is not defined yet Minimal implementation to make it green: class AsyncJobApi Red test: The API should return a 202 Accepted response: "POST /jobs returns Accepted" in { val request = Request[IO](Method.POST, uri"/jobs") val api = new AsyncJobApi api.routes.orNotFound.run(request).asserting : response => response.status shouldBe Status.Accepted} Make it green: class AsyncJobApi { val routes: HttpRoutes[IO] = HttpRoutes.of[IO] : case req @ POST -> Root / "jobs" => Accepted()} 5.2 Add headers (Trivial Implementation) Red test: add X-Total-Count and Location headers with job ID (only the assertion is shown)
If there's one thing I want you to take away from this article, it's this: testing harness is the most important thing for vibe-coding. Not prompt engineering, not fancy plugins, just constraining your AI outside AI toolchain. I'm calling it harness because it's not only tests. It's tests, types, linters, and any other automated checks you can put in place. The more you rely on AI, the more harness you need.
From the discussions in the Jakarta EE Platform call[s] the last couple of weeks, it looks like we won't see a release of Jakarta EE 12 on this side of summer (on the Northern Hemisphere at least). The reason is that since Jakarta EE 11 was delayed by a year, most of the vendors are currently working on their implementations.