Scala 3.7.0 has been released! 🎉
✅ [stable] SIP-58: Named Tuples
✅ [stable] SIP-52: Binary APIs
👀 [preview] SIP-62: For comprehension improvements
🧪 [experimental] SIP-61: Unroll
🧪 [experimental] SIP-68: Reference-able Package Objects
About 4 years ago (24th of June 2021, according to my old tweet: https://x.com/JD557/status/1408166583575449601) I got a KaiOS phone (Nokia 8000 4g) for emergency use.
It has proven to be pretty useful over the years.
Mostly as a WiFI hotspot when abroad (that way I don't have to buy a data plan for me and another for my girlfriend, and we save our smartphone battery a bit), but it's also pretty nice to have a phone with a long battery life that lets me do some normal modern day stuff (such as check ActivityPub).
Yesterday it also proved pretty useful. Due to the Iberian blackout, I was without power and comms during most of the day, so having a radio around was great to listen to the news without having to be in my car.
I wouldn't recommend anyone to buy this particular mode though, as the keyboard is garbage.
#Scala.js 1.19.0 is released! It contains significant performance improvements for the WebAssembly backend (it is now often faster than JS), native support for JS async/await, and a way to leverage Wasm's JavaScript Promise Integration (JSPI). Read more at https://www.scala-js.org/news/2025/04/21/announcing-scalajs-1.19.0/
I boosted several posts about this already, but since people keep asking if I've seen it....
MITRE has announced that its funding for the Common Vulnerabilities and Exposures (CVE) program and related programs, including the Common Weakness Enumeration Program, will expire on April 16. The CVE database is critical for anyone doing vulnerability management or security research, and for a whole lot of other uses. There isn't really anyone else left who does this, and it's typically been work that is paid for and supported by the US government, which is a major consumer of this information, btw.
I reached out to MITRE, and they confirmed it is for real. Here is the contract, which is through the Department of Homeland Security, and has been renewed annually on the 16th or 17th of April.
https://www.usaspending.gov/award/CONT_AWD_70RCSJ23FR0000015_7001_70RSAT20D00000001_7001
MITRE's CVE database is likely going offline tomorrow. They have told me that for now, historical CVE records will be available at GitHub, https://github.com/CVEProject
Yosry Barsoum, vice president and director at MITRE's Center for Securing the Homeland, said:
“On Wednesday, April 16, 2025, funding for MITRE to develop, operate, and modernize the Common Vulnerabilities and Exposures (CVE®) Program and related programs, such as the Common Weakness Enumeration (CWE™) Program, will expire. The government continues to make considerable efforts to support MITRE’s role in the program and MITRE remains committed to CVE as a global resource.”
Awesome!
Our EU Open Source Solutions Catalogue is live !
Recently, Lorenzo Gabriel released https://github.com/lolgab/scala-native-jdbc, a JDBC implementation for Scala Native, which allows libraries that rely on JDBC (such as Scala-SQL) to be used in a native environment.
I've been slowly playing around with adding DuckDB JDBC compliant connector to it, and it's looking pretty nice. I did have to use some trickery to avoid hitting issues with SQLite/DuckDB dialect mismatches, though.
I plan to open source this eventually, but first I want to make some more tests and clean the code (there's quite a few manual memory management involved).
I also need to figure out how this should be distributed... On MacOS DuckDB is distributed via a dylib
with an rpath, which is a bit annoying to use on Scala Native... TBD
Last Christmas my brother and I purchased a 3D Printer (Bambu Lab A1 mini).
Even though I haven't been an heavy user, it has already proven quite useful, especial for custom supports and organizers that one would have an hard time finding in a store.
It feels quite magic to be able to code something in OpenSCAD and have it appear in the real world.
Today I built a couple of supports for some Krakebs that I had lying around. I think they turned out pretty cool, so I uploaded the model to MakerWorld.
Not that I think that anyone will print that, but I should build the habit of sharing some models.
For some reason, Youtube has been recommending me a ton of wave function collapse videos, so I decided to play a bit with it for map generation.
I think my code still has some bugs, but I'm happy enough for now. Maybe I'll pick it up in the future if I decide to use it for an actual game or demo.
Compiler Explorer (https://godbolt.org/) now supports recent Scala 3 versions
It's a nice convenient tool for seeing what JVM bytecode your Scala code turns into
PR bringing versions up to date: https://github.com/compiler-explorer/compiler-explorer/issues/5405
I've been working on a collection of small minigames (inspired by 1x111) with simplistic graphics (inspired by He is Coming)
It still needs a bit more polish, and I want to add some more games before releasing it, but it's cool how easy it is to write simple games with some very basic primitives such as AABB collision. The code for some of the games is surprisingly short.
been learning and thinking about the Burrows-Wheeler transform and so far my conclusion is "what the fuck?"
https://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform
So! It's been ages! For releases, 2024 was my 'lost' year as I slogged through the surprisingly hard problem of building a component UI system from scratch.
But I'm pleased to announce a raft of new releases. If you want to do some weird stuff with #Scala, look no further..
SDL3 is officially released! https://github.com/libsdl-org/SDL/releases/tag/release-3.2.0
https://code.europa.eu , managed by @EC_OSPO now holds more than 200 #OpenSource projects with a total of 755 code repositories covering:
🩺 healthcare
💻 Big Data
🤖 AI
💶 procurement
🥦crop diversity
... and much more!
All open to software developers to use freely 👉 https://europa.eu/!pX8987
For the #Scala crowd —
For a while now, we've been debating the idea of adding a new bit of syntax for really-concise collection literals; most other languages have one, but we don’t.
That discussion has now been formalized into a Pre-SIP, a formal proposal being actively considered by the community: https://contributors.scala-lang.org/t/pre-sip-a-syntax-for-collection-literals/6990
I like the proposal, personally; y’all might want to give it a look if you have opinions about such things…
Published a port of https://github.com/nayuki/QR-Code-generator to Scala, cross-compiled to JVM/JS/Native.
It's now easier than ever to generate QR codes in Scala.
Check it out at https://index.scala-lang.org/jd557/qrgen
Today I woke up with a BIG surprise! ❤️
Today raylib is the most popular open source Game Engine! 🤯
A simple C library.
In year 2024.
I can't wait for 2025! 🚀
I've been working a bit with Clojure, and found their concept of truthy/falsy values quite refreshing for a dynamic language: Only false
and nil
are considered falsy values, everything else is truthy.
None of that confusion of "Is 0 true or false? What about the string "0"? What about empty strings and empty lists?".
Maybe this will bite me in the future, but so far it looks like a good decision.
On that note, I've also learned that Java's Boolean
actually provide (now deprecated) constructors that break reference equality (and in turn break Clojure's checks).
Namely new java.lang.Boolean("true") eq new java.lang.Boolean("true")
is false while the recommended alternative java.lang.Boolean.valueOf("true") eq java.lang.Boolean.valueOf("true")
is true.
I guess it makes some sense, but I always thought that there was no public Boolean
constructor.
“Join the Open Web”
Now that you've seen the dangers of social media, the question is, what are you going to do about it?
Just released Minart 0.6.2 with experimental support for vector graphics (the 3d engine stuff I've been showing) and faster convolutions.
Here's a quick demo of Scala-kun made with vector shapes and motion blur: https://gist.github.com/JD557/4855c0ea10a7b777d32a1dc46db4d4db