How is your experience when using Clojure from Windows?


#1

Hello, fellow Clojurians!

I normally use Linux, and I feel very much at home with Clojure. But I’m working with people who aren’t used to environments other than Windows, and we’re trying to collaborate on software I’ve written. And I feel slightly lost. CLJ doesn’t (currently) support Windows, and without the normal command line, Emacs feels different. So I’d like to hear about other’s experience!

  • Do you find Clojure development limited on Windows?
  • Do you use a linux-like environment (Msys, Linux Subsystem for Windows [WSL], …)?
  • What editor do you prefer on Windows? Do you have a different preference on Windows compared to on Linux / Mac?
  • What build tooling do you use? Leiningen in a normal shell, or CLJ through WSL?
    • See TDEPS-67 for status on CLJ for Windows.
  • Do you use PowerShell / CMD, and in a custom terminal emulator (ConEMU etc.)?

Please share your thoughts!

Teodor

P.S. There have been some previous threads on Windows tooling for Clojure. I’m summarizing relevant threads I’ve found for reference. I’m asking again because there’s been some development in recent times: clj gaining traction, Calva for VS code. I’m especially curious about subjective judgement; what people prefer, and what people consider to be reasonable options.


(Concluding with @seancorfieldsetup as of December 2017, where he goes quite into detail. Any updates are welcome!)


#2

An update on where I am with Windows for Clojure development: since December 2017, we’ve switched from Boot to clj at work, and I’ve also switched from Atom/ProtoREPL (which depended on an nREPL server) to Atom/Chlorine (which only needs a Socket REPL). Chlorine has logic in it to handle a “load file” command issued from a Windows editor being sent to a Socket REPL running on WSL (I run Ubuntu still), which was my main irritant of developing Clojure in a split Windows/WSL environment.

I’ve been using Cognitect’s REBL on my Mac but haven’t figured out a way to run that on Windows, given that clj-on-Windows is still a work in progress. That said, it looks like there’s been quite a bit of community-based testing around the PowerShell installer so that may become a viable option “soon”.

I think, at this point, if anyone is trying to do serious Clojure work on Windows, they’re probably better off staying with lein/boot and working entirely native on Windows, unless they want to switch to a full Linux-based workflow, entirely inside WSL – the file path separator issues you’ll encounter with editors/REPLs (except for Chlorine, as noted above) will be too painful to work bridged across the two environments.


#3

Windows is 3rd class in terms of support for clj (although recently it’s been moved up to the priorities enough to allow community-driven development).

When I absolutely needed clj (which is rarity, and due to projects that focus on it), I’ve gotten by using the unofficial clj port clj-windows which is based on go and deploys as a static binary (you can grab the pre-compiled archive from releases).

Otherwise, I’m just using leiningen, with its powershell script. Lein has supported windows pretty much from the beginning. I think boot has too. I layer emacs|cider on top of that.

For restricted environments (common) where I only have the JVM, Nightcode comes with support for both lein and boot out of the box, and is a completely self-contained environment (uberjar), or if you can install it, it comes with an installer.

In all, my clojure + lein experience on windows has been great - for years. The unofficial clj distribution appears to work (for the handful of times I’ve used it). No idea when the official clj for windows is coming out (I think there’s a developer board somewhere that has more information).

[edit] Something is jacked up on this platform. I had relatively ancient posts getting flagged as spam for some unknown reason, which prevented me from posting helpful links to the clj-windows and nightcode repositories. Clojureverse stock is down in my book…


#4

One of the options is Cygwin with Emacs/Cider(*) and lein.
I’ve also managed to run clj under Cygwin with slightly patched linux version (I spoke about this to Alex and I hope to release patch soon).

*) Cider is currently broken for mixed environments (see issue). But I also managed the workaround (see issue comment).


#5

The PowerShell version of clj for Windows is coming along really nicely, thanks to Andrew Oberstar.

He has a repo up containing clj as a PowerShell Module and I’ve been testing it. I can run a lot of our work setup on it now, including overriding the “user” deps file via CLJ_CONFIG, using a variety of aliases and options, starting up REBL, Socket REPLs, running test suites (it surprised me several of our subprojects pass their tests on Windows, to be honest!). I’ve used it with a mix of local deps (both JARs and folders) and git deps, as well as regular Maven/Clojars deps.

Andrew and Alex are discussing the implications of using a PS Module as the mode of delivery (that’s outside my Windows knowledge!) but definite progress and very nice to use so far.


#6

We’ve been using the #clj-on-windows room on Clojurians slack as the meeting point for working on the clj port. Would love to have feedback there on what Andrew has been doing! I’m hoping to at least get something alpha out soon for people to try.


#7

Sounds good - I’ll give it a shot the next time I have the chance!


#8

You can now find an alpha version of clj on Windows at https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows


#9

Just installed on a Windows machine, worked flawlessly!