Giooschi

joined 1 year ago
[–] [email protected] 0 points 6 days ago (2 children)

No, macros can see only the tokens you give them. They have no notion of the fact that crate::functions is a module, that PluginFunction is a trait and that functions_map is a variable. Not even the compiler may know those informations when the macro is expanded.

If you really really want to do this, you can use something like inventory. Note that inventory uses a special linker section to do this, which some consider a hack. This is also not supported on WASM if you want to target it.

[–] [email protected] 5 points 1 week ago (1 children)

CEO bonuses should be awarded 10 years after their mandate

[–] [email protected] 0 points 1 week ago

Would it makes sense to provide a "share nothing" runtime implementation that can be injected at startup?

Isn't this tokio::task::spawn_local?

[–] [email protected] 2 points 1 week ago

It also seems to require a GC though...

newxml is GC only, for simplicity sake.

[–] [email protected] 3 points 1 week ago (2 children)

Pointers are not guaranteed to be safe

So I guess they are forbidden in @safe mode?

but it's being replaced by something else instead

Do you know what is the replacement? I tried looking up DIP1000 but it only says "superceded" without mentioning by what.

This makes me wonder how ready D is for someone that wants to extensively use @safe though.

[–] [email protected] 5 points 1 week ago (4 children)

For local variables, one should use pointers, otherwise ref does references that are guaranteed to be valid to their lifetime, and thus have said limitations.

Should I take this to mean that pointers instead are not guaranteed to be valid, and thus are not memory safe?

[–] [email protected] 15 points 1 week ago (2 children)

Note that Rust does not "solve" memory management for you, it just checks whether yours is memory safe. Initially you might rely on the borrow checker for those checks, but as you become more and more used to Rust you'll start to anticipate it and write code that already safisfies it. So ultimately you'll still learn how to safely deal with memory management, just in a different way.

[–] [email protected] 2 points 1 week ago

Rust for Linux used to be developed in parallel to the mainline Linux before Linus Torvalds merged support in the main tree.

[–] [email protected] 7 points 1 week ago (6 children)

"safe by default" can be done by starting your files with @safe:

Last time I heard about that it was much more limited than Rust, for example it even disallowed taking references to local variables. Has something changed since then?

[–] [email protected] 20 points 1 week ago (5 children)

But the one time I looked at a rust git repo I couldn't even find where the code to do a thing was.

IMO that tells more about how the project was organized and names things than the language used.

So I think probably, the best way IS to go the way linus did. Just go ahead and write a very basic working kernel in rust. If the project is popular it will gain momentum.

As the other commenter pointed out, there's Redox. The issue is that this completly disregards an incremental approach: you have to rewrite everything before it comes usable, you can't do it piece by piece. Currently the approach of Rust for Linux is not even to rewrite things, but to allow writing new drivers in Rust.

Trying to slowly adapt parts of the kernel to rust and then complain when long term C developers don't want to learn a new language in order to help isn't going to make many friends on that team.

Have you seen the conference video? That's not just refusal to learn a new language, it's open hostility. And it's not the only instance, for example Asahi Lina also reported unreasonable behaviour by some maintainers just because she wrote Rust code, even when Rust was not involved.

[–] [email protected] 1 points 2 weeks ago (2 children)

The reputation loss is probably worse than whatever fine they end up paying

Time to pull a Meta/X and change name

[–] [email protected] 10 points 2 weeks ago (4 children)

Unfortunately some things will IMO always remain a natural monopoly. For example good luck trying to convince developers to write their apps for all those different operating systems.

view more: next ›