9 ms·
NimConf 2020 Videos
- Willyboar 6y agoGreat talks so far. More coming...
- mratsim 6y agoEven as a speaker, I'm surprised by how wide the use cases are being found for Nim: - DSL for real-time audio processing - Embedded programming with light switch - Creating GBA games! - Compiling to Android without Android Studio - Game dev in 30min - Promising REPL
- treeform 6y agoThe talk about the new garbage collector by the Nim's creator Andreas Rumpf, is a must watch: https://www.youtube.com/watch?v=aUJcYTnPWCg&list=PLxLdEZg8DRwTIEzUpfaIcBqhsj09mLWHx&index=9 https://www.youtube.com/watch?v=aUJcYTnPWCg&list=PLxLdEZg8DR...
- Willyboar 6y agoPersonally I am waiting yours.
- ddlsmurf 6y agoVery surprisingly wide range of subjects so far.
- Tiberium 6y agoTalks are really nice, from embedded to web programming :) I'm watching till the very start and will probably watch till the very end. Nice to see so much people using Nim, it's certainly gaining popularity.
- impbox 6y agoSo many interesting talks, DSP, games, deep internals, embedded stuff. I did a quick talk on making games in it. Hopefully do a Nim Games Miniconf in the future seeing as there was a lot of interest.
- arc776 6y ago> Nim Games Miniconf I'd be interested in that! From my perspective Nim is ideal as an indie gamedev language since it's so fast to iterate/prototype with and get good performance, and has mega easy FFI to C/C++/JS to reuse anything in those ecosystems.
- pietroppeter 6y agoYour talk was great! To wet the appetite of others, in a few minutes impbox live codes the game of memory using nico, a retro game library inspired by pico. Then it deploys that as native app and on the web taking advantage of Nim compilation both to C an JavaScript.
- dom96 6y agoAt time of writing, we've had 9 talk premieres so far. You can watch them using this playlist[1] or watch the latest talk premiere live here[2]. 1 - https://www.youtube.com/playlist?list=PLxLdEZg8DRwTIEzUpfaIcBqhsj09mLWHx https://www.youtube.com/playlist?list=PLxLdEZg8DRwTIEzUpfaIc... 2 - https://www.youtube.com/watch?v=NOAI2wH9Cf0&list=PLxLdEZg8DRwTIEzUpfaIcBqhsj09mLWHx&index=12 https://www.youtube.com/watch?v=NOAI2wH9Cf0&list=PLxLdEZg8DR...
- planetis 6y agoI am hyped about the last talk "Introducing Enu, 3D live-coding in Nim", can't find any information about it online. Seems like a genuine reveal!
- planetis 6y agoIt was really cool actually, makes use of the nim godot bindings to create a sandbox game with the nim compiler running as a service and run NimScript (a subset of Nim, basically the ffi missing) inside a live 3D environment! Hope to see it expand further!
- dsrw 6y agoThanks! The repo is at https://github.com/dsrw/enu https://github.com/dsrw/enu, but it's still a month or two away from what I'd consider "reveal worthy". There are no docs, and what's there barely works. However, I really wanted to be part of NimConf, so I cobbled things together as best as I could. I'm going to do a bigger PR push when it's a little farther along.
- deckarep 6y agoOk honest question I got really excited about Nim when I looked into it about 1 year ago. But I started looking at community projects on Github and found nothing except for Nimlang itself. This is not meant to be critical of what I think is an impressive language...just more of a question of where are Nim open source projects to be found?
- deleted 6y ago[deleted]
- mratsim 6y agoI think the best is to go there: - https://nimble.directory/ https://nimble.directory/ - https://github.com/Willyboar/awesome-nim https://github.com/Willyboar/awesome-nim - https://github.com/nim-lang/Nim/wiki/Curated-Packages https://github.com/nim-lang/Nim/wiki/Curated-Packages What kind of packages are you looking for? This also logs what is requested and what is being worked on by the community. https://github.com/nim-lang/needed-libraries/issues https://github.com/nim-lang/needed-libraries/issues
- planetis 6y agoI'm pretty sure a year ago there were hundreds of projects using nim in github. Just use a custom query: https://github.com/search?l=Nim&q=nim&type=Repositories https://github.com/search?l=Nim&q=nim&type=Repositories
- ggregoire 6y agoI got really excited about Nim 1 or 2 weeks ago and what worried me a bit is the number of questions on StackOverflow. In the "new question" section, the most recent one was from hours ago, the second one from 1 or 2 days ago, the third one from the previous week. It could just mean that the language is straightforward and the documentation perfect. But it's still a good metric to measure the popularity of a language. Also, it makes me wonder, if I need to find "how to do X", would I find an existing answer? If I need to ask a question, would someone answer? (still excited about Nim anyway, seems like the perfect replacement for Python at my job)
- 6y ago
- elcritch 6y agoFun talks so far! The esp8266 one is a good example of running Nim on embedded targets. I’ve been happy with Nim in iterating on a hardware product with an esp32, despite being more of an embedded Linux guy. Hoping to expand it out once async is ARC ready. If others are interested in esp32 support, I was able to create an initial PR to target for the ESP-IDF, which is a fork of FreeRTOS and LwIP. It supports much of the basic POSIX api’s, including `select` which is crucial for efficient servers. Freertos tasks and inter-task queues need Nim-ified, but I’m not an expert in FreeRTOS. :/ The Nim library code is surprisingly easy to hack on!
- GeorgeTirebiter 6y agoI'd love to be able to easily write Nim with the esp32 as target; please, say more!
- elcritch 6y agoCan do! I've got the basic OS target as `freertos`, so in theory any FreeRTOS device could work! FreeRTOS has a decent amount of POSIX API's but you'll want the `newlib` and/or `devfs` extra components for `select` (or using uart's with socket api's). The other big piece is `LwIP`, which has slightly different structs for IP addresses than standard *NIXes. Between FreeRTOS/LwIP you could cover a lot of embedded development and chips... Here's an example esp-idf project with a README describing the build and setup: https://github.com/elcritch/esp32_nim_net_example/blob/master/README.md https://github.com/elcritch/esp32_nim_net_example/blob/maste... Here's the Nim Forum thread, if you want to chime in and discuss/help out! https://forum.nim-lang.org/t/6345 https://forum.nim-lang.org/t/6345 It's pretty rough, but it surprisingly stable. Nim wraps enough OS level concepts you could easily use Nim only wrappers without needing specific RTOS idea's except when you want. Wrapping vTask's with Nim's thread api would be awesome. I don't know FreeRTOS hardly at all though. When Nim's async works with ARC, I wonder if it'd be possible to port LwIP or rewrite it in Nim. LwIP seems somewhat buggy. :-)
- sidkshatriya 6y agoI am ... confused by Nim a bit. Nim on the surface has a dream set of features: python like syntax, strong types, compilation to C, good garbage collection, good metaprogramming... OTOH there seems to be a rapid accumulation of features. The language wants implement the "next shiny thing" (e.g. ownership ala rust) or at least that is how it appears to me from the outside. For those people using Nim -- how do you cope with the ever increasing scope of the language? Isn't there a possibility that things aren't going to be well baked/abandoned? I like the philosophy of evolving your language slowly and consolidating before adding newer and newer features. Do you think the pace of change in Nim is OK?
- anaphor 6y agoA lot of the things you mention are pretty self-contained (you have to enable specific compiler flags), or they're implemented using the macro system or templates, and so in theory at least it's not bloating the compiler. Compared to something like Haskell (GHC), I think Nim is pretty lightweight and not too bloated.
- kbd 6y ago> OTOH there seems to be a rapid accumulation of features... I think you're stretching your narrative a bit. They're working on a new GC algorithm that (if you watch Rumpf's very interesting presentation[1] on it from today) is a significant performance improvement over their current GC. What features are you referring to regarding the "ever increasing scope of the language"? [1] https://www.youtube.com/watch?v=aUJcYTnPWCg https://www.youtube.com/watch?v=aUJcYTnPWCg
- sidkshatriya 6y agoIt is an impression (possibly an unfounded/unfair one) and the whole point of my question is for others to give me their opinions. Nim is certainly a feature-full language. Look at the left sidebar on https://nim-lang.org/docs/manual.html https://nim-lang.org/docs/manual.html and you will see a lot of things listed! I wonder how many of those features work well with others, how many work partially and how many are somewhat abandoned. I'm looking to add Nim to my arsenal in the future. I'm positive on the language -- please don't misunderstand. I just wanted some opinions!
- mratsim 6y agoAnd just when "Why Figma Wins" is #1 on HN, we have Figma integration in Nim via Fidget: - https://github.com/treeform/fidget https://github.com/treeform/fidget - https://www.youtube.com/watch?v=IB8Yt2dqZbo&list=PLxLdEZg8DRwTIEzUpfaIcBqhsj09mLWHx&index=15 https://www.youtube.com/watch?v=IB8Yt2dqZbo&list=PLxLdEZg8DR... - https://news.ycombinator.com/item?id=23584954 https://news.ycombinator.com/item?id=23584954 - https://kwokchain.com/2020/06/19/why-figma-wins/ https://kwokchain.com/2020/06/19/why-figma-wins/
- jedisct1 6y agoThis is pretty amazing!
- filleokus 6y agoIs there any usage of Nim in “production”? How is the performance of the compiled code (and also the compiler)? (NB: I love a fun new language to play with as much as the next guy, just curious)
- planetis 6y agoShort answer yes. See: https://github.com/nim-lang/Nim/wiki/Companies-using-Nim https://github.com/nim-lang/Nim/wiki/Companies-using-Nim People usually announce this stuff in the forum before this page is edited so you might want to search there as well.
- Isomorpheus 6y ago2/12 of those are dead links
- planetis 6y agoHere is the first one: https://github.com/OnsetGame https://github.com/OnsetGame Maybe someone can find the other.
- mratsim 6y agoAs the resident Nim optimizer, if you can reach some performance in C, you can reach it in Nim. With some work you can even reach the performance of code which is 95% assembly and has been tuned for years (i.e. matrix multiplication): - Reaching C Quake code speed in Nim: https://forum.nim-lang.org/t/5124#32241 https://forum.nim-lang.org/t/5124#32241 - Reaching and going beyond OpenBLAS + OpenMP performance (almost pure Assembly): https://github.com/mratsim/weave/issues/68#issuecomment-571781332 https://github.com/mratsim/weave/issues/68#issuecomment-5717... - Faster than C++ on Raytracing bench: https://github.com/mratsim/weave/tree/9f0c384f/demos/raytracing https://github.com/mratsim/weave/tree/9f0c384f/demos/raytrac... - Faster than C++ on another Raytracing implementation: https://github.com/mratsim/trace-of-radiance/tree/v0.2.0 https://github.com/mratsim/trace-of-radiance/tree/v0.2.0 Also Nim is easy to integrate with Intel VTune, Apple Instruments and perf. You have full control on the data layout, prefetching and the same control as C over cache and memory usage if you so wish it (i.e. the GC is not a hindrance, you have easy escape hatches).
- smabie 6y agoNim looks really awesome but I have a couple questions. Is Nim a replacement for high level for performant languages like OCaml, Haskell, etc. Or is it supposed to be lower level and replace C? How does GC interact with the preferred style? Can you go without it?
- dsrw 6y agoIt’s really for both. I’m paraphrasing, but during Araq’s intro talk during the conference he said something like “Nim should be suitable for every task, but maybe not every programmer”. Whatever you’re trying to do, there’s probably a pretty good way to do it in Nim. It can run on microcontrollers or supercomputers. It can compile to C, C++, JS or LLVM ir (via nlvm), and has a good interop story with all of them. You can use it’s advanced meta programming facilities to create specialized domain specific languages, or you can ignore that feature and write code that looks more or less like python. It has an advanced compiler with lots of optimization opportunities, but it also has an interpreter if performance is less important. You can use it without GC, but the new arc collector is suitable for hard real-time, so I don’t think there are many cases where you’d need to drop to manual management. The main downsides (in my mind) are the small community and somewhat limited debugging support. I really like the language however, and use it wherever I can.
- mratsim 6y agoOCaml, with D, are probably the languages that feel the most similar to Nim. Regarding Haskell, you can do category theory[1] if you want or do integer operations within the type system like dependently typed languages[2], including BigInt computation at compile-time[3]. Regarding speed, Haskell and OCaml are sometimes as fast as C, Nim is always as fast as C. [1]: https://github.com/unicredit/emmy#algebraic-structures https://github.com/unicredit/emmy#algebraic-structures [2]: https://github.com/mratsim/constantine/blob/0400187f/constantine/elliptic/ec_endomorphism_params.nim#L24-L61 https://github.com/mratsim/constantine/blob/0400187f/constan... [3]: https://github.com/mratsim/constantine/blob/0400187f/constantine/config/precompute.nim#L490-L533 https://github.com/mratsim/constantine/blob/0400187f/constan...
- michaelcampbell 6y agoI'm rather fond of the language in the abstract, but this decision has baffled me. https://nim-lang.org/docs/manual.html#lexical-analysis-identifier-equality https://nim-lang.org/docs/manual.html#lexical-analysis-ident... `fOo_Bar` is the same identifier as `fooBar`. I'm not sure I'm sold on this, or don't understand the problem it's trying to solve.
- pietroppeter 6y agoOne idea is that two identifiers which differ by style (e.g. foo_bar and fooBar) should not appear in the same code base (in the sense that they should not be used to refer to two different objects). On the other side if a library is written in snake_case and your project is camelCase, you can keep your style throughout your project and still use that library. From a practical point of view you should keep a consistent style and the official style for Nim is CamelCase. This feature has never been an issue for those who actually use Nim, but it sure is something which is mentioned a lot by those who do not use it. Note that first letter is case sensitive and the convention is to use Capital letter for types. The following is idiomatic: type Person = object var person: Person