News for hackers. Stuff that matters.
Re:Writing Network Drivers in Rust [pdf] by the_duke on Thursday November 08, 2018 @11:03AM (#18407165)
Nim is a lovely language but I disagree with most of your points.

* The Rust borrow checker prevents a lot of issues in C(++) code. Including thread safety. Nim does not provide anything new in this regard.

* The lack of a GC is a feature, not a detriment. One of the reasons why Rust applications are often very fast is because the language naturally guides you to avoid allocations when possible and allows low level control where necessary. Combined with the safety guarantees of the borrow checker, this is a powerful combination. This is possible in Nim but using GC is easier and will be the preferred solution when in doubt.

* While Mozilla support does help a lot for sure, a lot of the hype around Rust (imo) comes from people trying it out, just falling in love with and then promoting it

Re:Writing Network Drivers in Rust [pdf] by dom96 on Thursday November 08, 2018 @03:43PM (#18409809)
> The Rust borrow checker prevents a lot of issues in C(++) code. Including thread safety. Nim does not provide anything new in this regard.

Actually Nim does offer something new in this regard. See https://nim-lang.org/docs/manual.html#guards-and-locks.

> While Mozilla support does help a lot for sure, a lot of the hype around Rust (imo) comes from people trying it out, just falling in love with and then promoting it

AFAIK Rust was a much different language before Mozilla officially adopted it (wasn't the borrow checker implemented after Mozilla sponsorship?). So not only was it not the same language, it wasn't known at all. Don't underestimate the power of full-time developers working on a programming language and having the support of a well known organisation behind them.

Sadly a lot of the hype is simply "omg, Mozilla uses this langauge" or "omg, Google uses this language".

Re:Writing Network Drivers in Rust [pdf] by tathougies on Thursday November 08, 2018 @05:09PM (#18410504)
Nim is garbage collected, which means it doesn't need borrow checking. Garbage collection in threaded languages is a well studied problem. Safe threading in a statically collected language is new.
Re:Writing Network Drivers in Rust [pdf] by imtringued on Thursday November 08, 2018 @06:04PM (#18410875)
This is clearly a better solution compared to the average language but what if you forget to mark a field or object as guarded?

Just take a look at the basic problem of multi-threading: two threads write to the same memory location. This situation is unpredictable and there never allowed to happen. There are three general strategies to deal with this: immutability, mutexes and linear types to ensure there is only one reference with write capability.

The latter makes writing code that is not thread-safe impossible at compile time without sacrificing efficiency and is used by at least two programming languages that I know of: Ponylang and Rust. For me impossible vs "oops forgot to guard it" are worlds apart. The compiler will inform you that it is not thread-safe and then you can decide to use a different solution like a mutex if necessary.

Re:Writing Network Drivers in Rust [pdf] by discoball on Thursday November 08, 2018 @11:35AM (#18407462)
<< While Mozilla support does help a lot for sure, a lot of the hype around Rust (imo) comes from people trying it out, just falling in love with and then promoting it >>

If there was no rampant tribalism, my comment would not be buried with negative votes. It would receive a response like the one you gave, which is subjective, and that would be the end of it. Some may even up-vote it because diversity is always good. But feels like Rust users are zealous and it's a bad sign, tbh. Wouldn't want to be part of a community that acted with hostility towards others for presenting alternative view points.

Re:Writing Network Drivers in Rust [pdf] by Majestic121 on Thursday November 08, 2018 @12:34PM (#18408018)
I think you're getting downvote because you're being very tribal about Nim, and apparently not open for discussion : "It's a win over Rust in every way including ease of use."

You can paint others opinion as being subjective, which they are, but you would be wise to realize yours are as well. That's what's bringing hostility, not the diversity of viewpoint (there's a lot of talks about Go in the thread for example)

Re:Writing Network Drivers in Rust [pdf] by discoball on Thursday November 08, 2018 @12:46PM (#18408133)
Yes, true.
Re:Writing Network Drivers in Rust [pdf] by the_duke on Thursday November 08, 2018 @12:30PM (#18407992)
You were downvoted because your claims were not substantiated by factual analysis.

Rather, your comment seemed rather "tribal" while criticizing Rust fans of the same.

Re:Writing Network Drivers in Rust [pdf] by discoball on Thursday November 08, 2018 @12:46PM (#18408136)
True.
Re:Writing Network Drivers in Rust [pdf] by the_duke on Thursday November 08, 2018 @12:54PM (#18408230)
Cheers for owning up to it.

BTW, I would see Nim more as a competitor to D, Swift and Java than to Rust.

Re:Writing Network Drivers in Rust [pdf] by kungtotte on Thursday November 08, 2018 @01:56PM (#18408842)
I think Nim absolutely has a place competing with Rust too.

It has several tunable GCs allowing for great flexibility there, and also supports running with no GC at all. It compiles to C that will compile nearly anywhere C does. It produces smaller binaries, and it can easily link against musl instead of libc for an even lighter footprint. It's also safe like Rust is, and the compiler will help you catch a ton of errors.

That's not to say that it's competitive at this point in time. It's much more unstable as a language due to not reaching 1.0 yet. They only just (August) received any real kind of funding, allowing them to hire on a new developer but it's still just a handful of core devs and some dedicated contributors. The standard library and the community repo (Nimble) can't compare with Rust's and Cargo in terms of package availability and support.

Re:Writing Network Drivers in Rust [pdf] by bluejekyll on Thursday November 08, 2018 @07:06PM (#18411240)
> it can easily link against musl instead of libc for an even lighter footprint

I'm not sure if you were implying that it doesn't, but Rust also supports musl:

    $> rustup target list | rg musl
    aarch64-unknown-linux-musl
    arm-unknown-linux-musleabi
    arm-unknown-linux-musleabihf
    armv5te-unknown-linux-musleabi
    armv7-unknown-linux-musleabihf
    i586-unknown-linux-musl
    i686-unknown-linux-musl
    mips-unknown-linux-musl
    mipsel-unknown-linux-musl
    powerpc64le-unknown-linux-musl
    x86_64-unknown-linux-musl
Re:Writing Network Drivers in Rust [pdf] by kungtotte on Friday November 09, 2018 @11:33AM (#18415630)
I apologize if I worded my post weirdly. It was a list of things that make Nim a competitor to Rust, not things that Nim does that Rust doesn't.

There's a fair bit of overlap for obvious reasons: they're two languages suited for the same tasks, after all :)

Re:Writing Network Drivers in Rust [pdf] by karavelov on Thursday November 08, 2018 @09:25PM (#18411934)
mrustc [1] compiles rust to optimized C also.

1. https://github.com/thepowersgang/mrustc

Re:Writing Network Drivers in Rust [pdf] by skocznymroczny on Friday November 09, 2018 @05:47AM (#18413608)
Nim, D and Rust are in the same league, as a "C/C++ replacement"