1. 13
  1.  

  2. 3

    I find that Clojure has become an API to a bunch of different platforms for me now. I can leverage the JVM, Js runtimes, Python, and now Dart using the same language. This reduces a lot of cognitive overhead since I don’t have to remember how to juggle a bunch of different syntaxes, semantics, language quirks, and build tools.

    Typically, all the platform interop stuff lives at the edges of the application and most of the interesting stuff happens in the core business logic. So, even though I still have to figure out how to interop with each different platform from Clojure, that effort tends to be front loaded and relatively small when compared to the scope of the overall project.

    1. 2

      Python

      I know there’s an interop library, but have I missed a “Compiles to Python” Clojure dialect?

      Beyond that, I have been feeling the same. Babashka has become my go-to scripting language/platform, and i never want to go back to bash (or perl or python or whatever else I’ve used over the years).

      1. 2

        It seems like babashka is not going to be able to support platforms (eg BSDs) not officially supported by GraalVM

        https://github.com/babashka/babashka/issues/721

        Perhaps initially, the inconveniences are minor, but overtime they could become hinderances for scripts/tools that expect ubiquitous presence of the particular command-line shell

        1. 1

          I use Void Linux as my daily driver with servers on Void or openbsd. If I want babashka, I’ll need to package it. If I want to package it, I’ll need a fully open from source build that works across libcs and in cross building (ideally).

          I have not yet had, nor do I expect, a chance to use this really cool tool.

          1. 1

            Oh yeah, I meant that for my personal/one-off scripts I reach for babashka. I wouldn’t rely on it for anything that would be “production” or more generally open source for those very reasons.

          2. 1

            There’s clj-python for calling out to Python ecosystem from Clojure.