Hi! This is an exploratory thread to find out which development environment(s) Nim users have found to be playing well together, as this may help me and possibly other users to try something outside the comfort-zone.
I'm asking this as I'm still working with the first one on the road: choosenim + nim + nimble + nimsuggests (via vscode extension), but by looking at some of the other available tools I expect some wildly different setups. Also adding to the list some compile-time allrounder libs you add in all your projects would be interesting.
Just by throwing some initial random interesting players in the game that comes to my mind: atlas, nimlsp, langserver, chronos, chronicles, all these, <add your own>
Be creative!
Emacs + nim-mode + lsp-mode + nimlangserver.
On MS Windows: same as above, used in conjunction with MSYS2's CLANG64 environment to build native Win executables from the comfort of a familiar Bash shell using familiar tools (GNU Make, cmake, et al.)
Kitty is a wonderful terminal, I pretty much live inside it when I'm not on Windows.
For libraries, I make use of the various popular ones commonly discussed in the community Discord, and appreciate the Nim cornucopia developed and maintained by Status.
choosenim + nim + nimble + vim + nimlsp
That's my basic setup, I also have the zah/nim plugin for Vim to give me syntax highlighting.
As for libraries it highly depends on what I'm doing. However the simplicity of termstyles means that I often include it. And of course Futhark has become more and more used in my projects as I've finally gotten away from the tedium of C wrapping. Once my follow-up to superlog is released though I expect I'll use that pretty much everywhere as well.
VSCode with nimsaem’s plugin. I wish it worked better though :/
As for libraries, Arraymancer is the one I probably use the most. It’s awesome!
choosenim + nim + nimble + vim + nimlsp
Same here!
thanks! I'll try moving from saem extension + nimlagserver + nimsuggest to this, too!
speaking of nimlsp, the readme on github doesn't say anything about vscode, but I realize only now that a whole extension is built for it!
I can confirm that VSCode + bung87.vscode-nim-lsp + nimlsp experience is nice, maybe even better than saem extension, but I've not yet used it extensively.
I see no nimsuggest processes polluting my task manager, and nimlsp services work correctly
as long as this does not cause OOM, it's better than other combinations
out of curiosity, nimsuggest seems that broken thing that generally works but nobody wants to fix. Is it due to its complexity, or is yet to know what causes crashes?
I think it might be a mix of both. Nimsuggest is essentially the compiler, just with a different output. And while the compiler is tested very frequently and crashes are very obvious nimsuggest is similar in complexity but since editors and plugins restart it when it fails it's less obvious that something bad happened, and even if a user noticed the output from the crash was probably eaten by the wrapper tool.
So it's a mix of being a complex tool, hard to gather crash causes, and since the compiler is more important in a way most developer time will obviously go to that.
I have thought about adding opt-out crash telemetry for NimLSP in order to gather crash reports. It already has a record/replay function which can record a session to a file and then replay that session to NimLSP and make it crash the same way every time to help with debugging. So with a telemetry sending crash handler we could potentially get a lot of good data on what crashes. The problem is of course that not all code is open source, and by the very nature of this tool it would send along file contents. So the sending would probably have to only include crash information, and maybe that might even leak some information. There should be a way to share this kind of information without leaking anything, but I don't have the time to figure out a good system for it, at least not at the moment.
I understand.
But I think it's up to the user to decide if he wants willingly to share the crash.
How would that work? Is it like saving a crash dump on disk after starting nimlsp with a specific flag?
choosenim + nim + nimble + gvim(nvim???)
zah/nim.vim
inim (Because I found it here)
hello_musl (Just found it and love the static compiles...)
Warning Off Topic:
I'm a Python hacker looking for a "faster" alternative.
I've tried the Python speedups and found them lacking.
I sort of hate Rust. The syntax, compile complexities, whatever.
I quite like Nim. Now if it only stays around for a while...
(I'm keeping an eye on Mojo, but it's quite quite new!)
I used to be a C++ hacker, but I guess that Guido van Rossum has convinced me that indenting works.
At the moment, I'm experimenting with JetBrains' CLion and the Nim language plugin, as the plugin doesn't support the latest version of PyCharm.
Python programmer by day looking for a language that can help speed up some of the code I write without having to learn a language that is difficult to read and interpret.