Hi Pulumi Community,
We're building a Scala SDK for Pulumi (codename: Besom) at VirtusLab, the company behind Scala 3, and it's getting into shape quickly. Our main goals are to a) make Pulumi accessible for all Scala developers via tight integration with core language tooling and b) make things as type-safe and pleasant to use as possible. Here's a sneak peek via Asciinema at how it looks like at the moment:
We are currently working on getting provider libraries built and published and also, using awesome metaprogramming facilities of Scala 3, on Pulumi Magic Lambda support. We have a prototype of native AWS lambdas with an AWS SDK support running in sub-15ms execution times and are currently working on integrating this into Besom to bring a new dimension to serverless development via Pulumi.
Our estimate for first beta availability (and also open access to the source repository) is around the end of June and start of July. There's obviously still a lot of work to do to polish the user experience and make it even more type-safe, ergonomic and easy to use. Our implementation makes it possible to support purely functional programming stacks that are quite popular in Scala (Cats-Effect, ZIO) but we have plans to support eager evaluation semantics too (so, basically the usual execution semantics of Pulumi).
I have announced this before on Lambda Days 2023 conference and yesterday in chat on Pulumi UP but this is the first time it's being mentioned here on Slack :)
It's probably the first community-driven SDK* and we've gathered some insight while building it. We like to share and give back to the community that is supporting this majestic infra-as-code tool so if you are interested in learning about how we built this (there's no runtime reflection in our code, Scala can be used as a compile-time reflected language only and that's exactly what we do!), give me a shout here or via email - firstname.lastname@example.org. We can help you understand the basics of our architecture and maybe that will lead to some spin-offs like Pulumi-rust?
P.S.: My friend from VirtusLab, @steep-minister-28895 asked me to mention that Besom is probably the first top-to-bottom community-driven SDK for Pulumi as his team built Pulumi-Kotlin before us (https://github.com/VirtuslabRnD/pulumi-kotlin) 😉
06/16/2023, 8:35 AM
Hey @quaint-spring-93350 I pinged you on twitter, but just to repeat on here. We've got an issue https://github.com/pulumi/pulumi/issues/11882 tracking supporting community languages like this, so if you want to let us know which bits would be most impactful to help you here we can hopefully prioritize some of that work. I'm also available to talk to directly if wanted.
06/16/2023, 8:39 AM
Sure, we have a working list of issues that we've encountered during the implementation. I'm also coordinating with team lead of pulumi-kotlin implementation (also a team of ours: https://github.com/VirtuslabRnD/pulumi-kotlin) as they have their hurdles noted down. They have a smaller scope though given that pulumi-kotlin is a wrapper for pulumi-java.
@echoing-dinner-19531 I've updated #11882 few days ago, any updates? 🙂
06/23/2023, 12:14 PM
Hey not yet, this week and next are a bit out of routine for us because it's end of quarter so we're doing a bug burn down and then a prototype week. I did read through your post quickly the other day to start getting some ideas and I'll find some time to write up and give a proper response when we're back to normal work on the 3rd.