1. 16
  1.  

  2. 5

    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!

    1. 3

      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

      1. 8

        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.

        1. 2

          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?

          1. 8

            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 :)

            1. 1

              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?

              1. 4

                Matlab use in ASIC verification is pretty common; so much so that they even officially support DPI-C exports for SystemVerilog.

    2. 3

      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:

      https://nim-lang.org/install_windows.html

      only 18 MB! Extract, create a file:

      echo "hello world"
      

      and compile:

      nim compile hello.nim
      

      and thats it. People like to tout Rust, but Rust cant do this:

      https://github.com/rust-lang/www.rust-lang.org/issues/770

      1. 4

        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.

        1. 2

          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?

          1. 4

            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.

            1. 2

              This might also be the reason why Nim is really bad at dealing with symlinks.

              1. 1

                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.

                  1. 1

                    I see .. that indeed is bad.

                    1. 1

                      looks like it was closed without a reason - why didnt you follow up?