I have been following the development of Nim for about 2 years, and I am really excited for such stable bug-fix releases. The upcoming 0.20 release is going to be awesome!
Do you run any “production” workloads on it? I’ve been keeping an eye on it for a while, but so far struggled to justify investing more time on it
I haven’t put a “production” workload on it per-say. But I have a collection of Nim libraries at work that I use to stitch together Matlab exported C and other C++ libraries and have the end result talk to SystemVerilog (a hardware design and verification language), and it works great!!
I don’t think any other language can do this job this easily.
Edit: I just said that I use Nim to “stitch together” all those languages, but in addition, I do quite some additional stuff in Nim, on the data that enters/leaves the SystemVerilog boundary. Nim’s syntax tremendously facilitates data manipulation in a way none of those stitched languages allow.
I rarely see that integration. What is it you do on your job? Deal with numerical accelerators or signal processing on FPGA’s or something?
I do ASIC verification. So before a chip “tapes out” or actually gets fabricated, I simulate the design, and the test bench around the design code is written in SystemVerilog. As most testings go, I have the actual design output, and a reference output that I compare with. Based on the ease and comfort of how certain reference/model data can be generated, that model is written in Matlab, C++, etc. But SystemVerilog doesn’t speak with any of those; those it does have a well enough C interface called DPI-C defined in its standard (latest reference: IEEE 1800-2017). That’s where Nim bridges the gap :)
Oh OK. I remember reading about that. I didn’t know anyone used Matlab for it. The only time I saw Matlab looking into hardware dev was synthesis of accelerators. So, do a lot of people use Matlab for ASIC verification or is it domain specific?
Matlab use in ASIC verification is pretty common; so much so that they even officially support DPI-C exports for SystemVerilog.
I like Nim. For me a big part of my opinion is the onboarding process for new
users. With Nim its dead simple. You download a zip:
only 18 MB! Extract, create a file:
echo "hello world"
nim compile hello.nim
and thats it. People like to tout Rust, but Rust cant do this:
I have deployed a stripped down version (only nim and nimble binaries, and the stdlib) of the static binary distribution for GNU Linux x64 for my team, and I believe it’s < 8MB.
This is really interesting.
andy@xps ~/d/n/nim-0.19.6> ls bin/
7z.dll libpng12.dll nimgrep.exe png.dll
7zG.exe libpng3.dll nimsuggest.exe SDL2.dll
7-zip.dll libssl-1_1.dll pcre32.dll SDL2_ttf.dll
c2nim.exe libssl-1_1-x64.dll pcre3.dll sqlite3_32.dll
libcrypto-1_1.dll libui.dll pcre64.dll sqlite3_64.dll
libcrypto-1_1-x64.dll makelink.exe pcre.dll ssleay32.dll
libcurl.dll nimble.exe pdcurses32.dll ssleay64.dll
libeay32.dll nim.exe pdcurses64.dll vccexe.exe
libeay64.dll nimgrab.exe pdcurses.dll zlib1.dll
In particular I see vccexe.exe and makelink.exe which I am guessing are microsoft visual studio’s C++ compiler and linker?
From the nim screen casts, the lead dev Araq uses windows as his daily machine, which is a stark contrast to nearly every other language. It makes some sense he makes it work really well.
This might also be the reason why Nim is really bad at dealing with symlinks.
You should open an issue for whatever symlink issue you are seeing: https://github.com/nim-lang/Nim/issues.
While Araq uses Windows, there are a lot of stakeholders and other devs on GNU Linux or MacOS type systems (even RPi, etc.)
The dev team is very responsive in replying to/fixing the bug reports.
I see .. that indeed is bad.
looks like it was closed without a reason - why didnt you follow up?