News for hackers. Stuff that matters.
Re:Why Rust closures are somewhat hard by geezerjay on Monday September 10, 2018 @05:58PM (#17955568)
> Sure, unless your value objects contain references.

As others have already pointed out, C does not have references. It does however have pointers, and pointers are already copied by value.

> Then you’re looking at a deep copy

There is no such thing in standard C. Objects are copied by value, including pointers, and if you want to "deep copy" your custom data structures then you need to implement your custom cloning routines. However, naturally your custom cloning functions wouldn't be used directly to capture any variable.

> which can be expensive and/or very application-specific.

That's hardly specific to C.

> It’s hard to do copy by value generically.

Actually, it isn't. In fact with C it's quite trivial, and perhaps as trivial as it gets. There's no garbage collection thingy, no RAII, no deep copies, no refcounting... nothing. Just plain memcpy() from one object to another. That's it.

Re:Why Rust closures are somewhat hard by cobbzilla on Monday September 10, 2018 @08:21PM (#17956217)
if that meets the semantics of what you’re trying to do, great. but often in programming it’s not. the depth of the copy you want depends on what you’re trying to do. copying pointers (or references, or whatever might point to dynamically allocated memory) by value means using a garbage collector or reference counting mechanism, or risk a memory leak.
Re:Why Rust closures are somewhat hard by kjeetgill on Monday September 10, 2018 @08:40PM (#17956311)
It's C.

If you think being specific about what you want copied, freeing only when you know it's appropriate, and tracking any metadata around that yourself if a problem, don't work in C.

Get it right or risk a memory leak is the name of the game.

Re:Why Rust closures are somewhat hard by cobbzilla on Tuesday September 11, 2018 @02:19AM (#17957530)
It’s your program. The suggestion was that copy-everything-by-value solves the closure/memory issue with respect to copies. It does not. This is also why C doesn’t have closures. Ships passing in the night...
Re:Why Rust closures are somewhat hard by geezerjay on Tuesday September 11, 2018 @02:53AM (#17957657)
> It’s your program.

No, it's the C programming language. It has been like that since the 70s, and lots of people have been using it to develop high availability software for decades.

Just because some people never learned its basics nor are familiar with the subject that doesn't mean they have a point.

> The suggestion was that copy-everything-by-value solves the closure/memory issue with respect to copies.

No, that's quite wrong. The suggestion was thay passing objects by value would enable capturing variables without any of the slippery slope nonsense that was pointed out.

> This is also why C doesn’t have closures.

No, that's quite wrong as well. C doesn't have closures because no one bothered to add them, which is the exact same reason why C doesn't have namespaces or generics or any other feature ever. That's it.

Re:Why Rust closures are somewhat hard by djur on Tuesday September 11, 2018 @04:25AM (#17958018)
C has generics (within the limitations of its type system) since C11.

https://en.cppreference.com/w/c/language/generic