26 comments

[ 6.4 ms ] story [ 42.6 ms ] thread
I fell in love with Nim a couple of years ago, but feel like Zig gaining popularity has really pushed Nim out of the limelight in terms of developer adoption.
Nim is a programming language for an expert programmer. The ecosystem is very small and for everything a little bit more specialized you need to make a library yourself.
Nowadays you could let an AI vibe code all libraries you need.
“Has safety features in place”? I’m sorry, not gonna cut it.

I mean, Nim looks cool, but I’m not sure what it does that is substantially new. Niceties are generally not enough to foster adoption - something real has to be on the table that meaningfully opens up new avenues, unlocks new paths, enables new use cases.

I have the same criticism of Zig.

I often wonder why some languages succeed while others falter. Why did Rust break through, for example, while so many other excellent languages didn't.

I guess a lot of languages are kind of fungible. If you want a fast, cross platform, GC-based OOP language, the truth is, there are many choices. I'm not saying they are the same, but for 80% of the use cases they kind of are, and there are always good reasons to use established languages rather than new ones.

The ones that make it offer something very unique, not merely better than peers. So Rust, as a memory-safer non-GC language has a clear use case with little or no competition.

Nim doesn't have this luxury. I wish it well, I like the language and often contemplated learning it properly. But I fear the odds are against it.

You mean the language also known as NIM, n_iM, and NI_m?
One of the best features of the language IMO, no more style guides, do whatever you want.
So, there I was in 2016. It had been 13 years since I had last entertained the desire to learn a new programming language (I had landed on Python, back then). The serious contenders were Go, Nim, and Rust. I landed on Nim back then, thinking to myself: Man, this language really has a future. I did my next side project in Nim, and loved it like I've loved no other language over the course of my (as of now, in 2025) 28 years of programming. But no actual job ever materialized to make me into a professional Nim programmer that would actually pay the bills. I stuck it out with Python, with growing discontentment. I took a Perl job in 2018, which lasted until 2022, which I never should have taken in the first place. I was relatively free in my choice of language from that point forward, and decided to switch from Python to Lua after a short period of disorientation where I kind of liked Haxe. Right now, I'm learning Rust, crying tears over that future for Nim that never materialized.
I would have used Nim if Go didn't happen.
Significant whitespace is a dealbreaker for me. I never tried Nim for this reason
From a promotional marketing perspective, that webpage misses quite a few basics, like linking to the Nim site [0] and explaining what it actually does:

Nim is a statically typed programming language that compiles to native dependency-free executables in C, C++ or JavaScript.

[0] https://nim-lang.org/

I feel like Nim made me fall in love with programming again.

Nim fixes many of the issues I had with Python. First, I can now make games with Nim because it’s super fast and easily interfaces with all of the high performance OS and graphics APIs. Second, typos no longer crash in production because the compiler checks everything. If it complies it runs. Finally, refactors are easy, because the compiler practically guides you through them. The cross compiling story is great you can compile to JS on the front end. You can use pytorch and numpy from Nim. You can write CUDA kernels in Nim. It can do everything.

See: https://www.reddit.com/r/RedditEng/comments/yvbt4h/why_i_enj...

What I’m curious for is something akin to a language abstraction layer.

So you can easily combine codebases written in different languages. I guess something like wasm and llvm.

What a low effort article. I have done some programming in Nim. It’s a nice language but I felt frustrated whenever I wanted to do something I knew I could do in python but that didn’t work in Nim. I just missed some of the syntactic sugar of python, that being said I would love to get back into Nim again.
> In fact, Nim first compiles to C which in turn is compiled to machine code by the C compiler of your choice (gcc/clang).

Can one use the zig compiler after nim has compiled to C?

So why does nobody ever talk about Haxe in the context of an "everything" language?
I really wanted to love nim. I wrote a bunch of tools in it, had fun, and then ultimately rewrote them all in rust. The library situation in nim is just unfortunate, and I say that as someone who uses elixir. That, and the cross compiling took far more effort than getting the same code finished on rust, which was little more than "use cross"

I keep hoping nim will get better, because it's a beautiful language that produces absolutely tiny, efficient binaries

I’m also an avid Nim developer (findsight.ai is almost pure Nim).

I recently compiled some stats on Nims popularity on GitHub: https://code.tc/nim-stats-august-2025/

It’s growing steadily but I do qualitatively feel like the ecosystem has lost a bit of steam over the past year. Excited for the ongoing Nim tool chain work though.

The main reason I never got into Nim is that I seem to recall it depending on mingw and that frankly always sets a language into a second-class category for me. Maybe now it’s different, I don’t know.
It's wild to type this up instead of just checking in your package manager for the dependencies, literally 1 minute to check
At this point I would feel more enthused to read a "Why not Nim?" page. Advertise where the language is bad at so I can get a better sense of it.
Nim is nice but I can't really find a use for it. Maybe it's because I started out on dynamic languages (Ruby and R) where I got used to writing in a dynamic language and then rewriting bottlenecks in C++.

Nim is in the awkward middle area where it's got a GC so it'll never replace C/C++ but it also isn't as productive as something like Ruby.

It makes me sad that neither Nim nor D didn't take off. Expressive language with native compilation and automatic memory handling is the way to go for me. C# and Java native AOT options are still somewhat limited, and the last thing one can say about Go is that it is expressive.
oh nim nim nim nim nim fucking nim
I think languages that favor an "expressive" syntax, which favor using and building syntactic sugar and macros, suffer from a nicheness problem.

That is they are going to have to appeal to people who want that style of programming, and they have the additional hurdles of A) having more stuff one has to learn to use the language, B) dealing with a community of people who all want the magic from their previous language ecosystem imported into this new one, and C) the additional burden on libraries to come about which use these features.

Note: I have not used Nim, so please take the above with a lump of salt.