NimConf 2022 – Nim Online Conference
nim-lang.org
nim-lang.org
- first talk by Andreas will update us on Nim 2.0 which is planned within the year and where the most important part will be the switch to orc memory management (deterministic memory management with garbage collection only limited to collect cycles).
- Suhei will talk about moe, vim inspired command line editor, see https://github.com/fox0430/moe (last year he talked about nicoru, docker in nim!)
- Tanguy from status, main sponsor of nim (they are building a lightweight ethereum node in nim) will talk about libp2p (in nim AND other langs), which is relevant for crypto web 3 world
- Antonis recently release a very nice library for fuzzing (an automated bug finding technique), see https://github.com/status-im/nim-drchaos
- I will be presenting with Hugo on nimib, a "framework"/DSL way to turn nim code in html (sort of replaces jupyter for nim, can do more than that); in particular we made very easy with nimib to take advantage the capability of nim to compile to js.
- next Hugo will present on how he created a nimib slides theme (based on reveal.js, at least 4 of the presentation seem to be based on nimislides)
- Can has created a very interesting an experimental deep learning framework for Nim based on a differentiable array programming language (and he has been doing great work on other stuff too, like owlkettle): https://github.com/can-lehmann/exprgrad
- Ryan will talk more about his incredible and frugal Entity Component System https://github.com/rlipsc/polymorph He did present on this topic in February but it seems it has progressed much and we might be seeing some very cool demonstration (that's speculation from thumbnail...)
- Juan has been working of having Nim work with Unreal Engine "the world's most open and advanced real-time 3D creation tool for photoreal visuals and immersive experiences". he has been working with Andreas to have Incremental Compilation (next big thing coming in the core language) so it looks pretty exciting
- I know very little about the work of Chris on Nim-SOS and Nim-htpx (see https://github.com/ct-clmsn/nim-sos ) but it looks to be impressing work in the area of scientific computing
- finally Andre/treeform is consistently producing great libraries and talks on Nim and I would not miss that talk for the world.
all videos are pre recorder but authors will be around in the chat to interact.
further discussion might appear here: https://forum.nim-lang.org/t/9539
It’s a remarkably pragmatic language in a lot of ways, at least in my opinion. Can’t wait for the rest of the talks!
That’s us! I’m hoping that now we have some devices out in the field in customers hands I can take some time to write some things up on it all — that’s if adding CANBUS support doesn’t kill me first anyway
Nice site! Looking forward for a write up (especially since that would have meant you survived support)
Contrast to a language like Zig, which has a standard library and syntax built around the idea of manual allocators and what not, but is missing the "ease of use" of GC. Personally, I agree with GP, and like Nim's compromise of GC with a "I know better, let me do it manually" syntax, but there are domains where you want a language like Zig.
ORC adds runtime GC only for cycles, and will be the default in Nim 2.0.
https://gist.github.com/lattner/31ed37682ef1576b16bca1432ea9...
With ARC there's no GC runtime anymore, making Nim a competitor with Rust.
Zig is definitely not that. And I understand the description above misses the downsides of a small community and not the strongest ecosystem.
On the good side, compared to go, Nim's interop with C is fully transparent (since Nim uses C as a backend). This means easy access to C libraries, but also makes it very appropriate for embedded targets like microcontrollers (especially with its ARC memory-management system, which is static/deterministic automatic reference counting).
- Both took some inspiration from languages of Wirthian family.
- Both promise easy onboarding, high readability and high productivity.
- Both rely on automatic memory management by default.
On the other hand, I agree that Nim feels and functions totally different while offering much more possibilities. You can definitely call Nim the anti-Go, but it doesn't negate the fact it could absolutely shine in the same domains, at least with a bit more love, attention and funding.
From that blog post. Nim is great but it's more Go and less Rust...
Not at all, it does not have a runtime with a built-in thread pool and channels like Go.
You bet I have! What would you like to know beyond that comment?
This gives me full interactive debugging, breakpoints etc of the Nim source directly — including via a JTAG from the ESP32 itself :) it’s super nice, considering none of the tools internally were built for Nim haha. The #Line macro is surprisingly powerful in C debugging land it turns out
If you’re doing desktop/non embedded stuff it’s even easier, and you can also enable useMalloc and run Nim programs through the Valgrind suite easily
Zig and Rust of course both exist, as does TinyGo, but Zig’s embedded story isn’t anywhere near complete yet, Rust is closer but it’s tendency to rewrite the embedded world from scratch (which is great for safety! Just bad for rapid firmware dev when we have a whole host of vendor drivers we need to use that aren’t supported in Rust’s embedded story yet) make them a pain
TinyGo was genuinely considered, but using a not-quite-normal compiler gave me the willies — which turned out to be a good choice as we have a lot of code sharing between the firmware and the server that it talks to (with a custom message protocol over TCP that’s encrypted — libsodium is great).
The long and the short of it for us was: do we want to write C/C++? Not really, it’s a pain to hire for and a pain to teach. And right now, Nim is a good slot in replacement/addition.
Early on in the project we wrote C libs to encapsulate some C driver code, and exposed that to Nim — and slowly migrated it all to Nim directly. Now it’s just ESP-IDF with Nim on top, no custom C code at all!