Congrats on another release.
I didn’t realize that Dark was not a total/pure language. But the change to short-circuiting Boolean operators would indicate that the order of evaluation is important. Is there documentation on this design choice?
The design goal is for darklang to be simple to write in and think about. We are mostly pure/immutable because we think this makes it really simple to reason about what happens in your program (vs say OO), but we also support imperative actions (such as DB::set or HttpClient::post), because we think those are the simplest ways to accomplish those for the developer. Similar to OCaml/F# in that respect.
Probably the piece where I discuss this in most detail is on the Future of Coding podcast, where we took a deep dive into it: https://futureofcoding.org/episodes/043.html
Paul - Glad to see your continued progress. I’m a huge believer in the importance of the problems you set out to solve, and I’m rooting for you. Wishing you the best with Darklang :)
There are a few really innovative takes to solving some of these problems. I liked the integration of the tooling and the language that Darklang took early on. I also really like the Ballerina orchestration focus. There’s a lot of complexity out there that needs to be slain, so there’s going to be a big opportunity if you can give people a compelling solution to even just some slice of all that unnecessary complexity.