|
Sebastian Dröge
@
sdroege_
Thessaloniki, Greece
|
|
slomo – Free Software Developer @centricular – @GStreamer, @gnome, @rustlang and various other projects
|
|
|
5.190
Tweetovi
|
751
Pratim
|
962
Osobe koje vas prate
|
| Tweetovi |
| Sebastian Dröge proslijedio/la je tweet | ||
|
Rust Language
@rustlang
|
30. sij |
|
We're happy to announce the release of Rust 1.41.0, featuring relaxed restrictions for trait implementations, Cargo improvements, and many more changes! Check out the highlights in our blog post: blog.rust-lang.org/2020/01/30/Rus…
|
||
|
|
||
| Sebastian Dröge proslijedio/la je tweet | ||
|
idéemarque
@ideemarque
|
29. sij |
|
The @GStreamer project is celebrating 20 years of existence!
What makes this Free & #OpenSource #multimedia technology project so successful, and how does its community work?
Watch this video on your next coffee break, then share it with your colleagues!
youtube.com/watch?v=tnMXlj…
|
||
|
|
||
| Sebastian Dröge proslijedio/la je tweet | ||
|
Alessandro Decina
@alessandrod
|
19. pro |
|
In the last few months I've been working on RedBPF - a Rust toolkit to work with BPF - that let's you write both kernel and user space code in Rust 🦀🤯 Here's what it looks like: blog.redsift.com/labs/writing-b…
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
27. sij |
|
Thanks, I've created an issue for this here gitlab.freedesktop.org/gstreamer/gst-…
In the meantime feel free to ask here on in the mailing list if something is not clear!
|
||
|
|
||
| Sebastian Dröge proslijedio/la je tweet | ||
|
Stjepan Glavina
@stjepang
|
25. sij |
|
First blog post on writing your own async executors in Rust. Here's how to implement block_on() in a few lines of safe code.
stjepang.github.io/2020/01/25/bui…
|
||
|
|
||
| Sebastian Dröge proslijedio/la je tweet | ||
|
Anna Brandberg
@annabrandberg
|
21. sij |
|
Finland is the only country in Europe where homelessness is declining. The homeless receive a small apartment & counselling – without preconditions. 4 of 5 affected ppl make their way back to a stable life.
All this is cheaper than accepting homelessness.
scoop.me/housing-first-…
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
20. sij |
|
They all have their trade-offs but you have the choice.
And in that context see also what people are doing with embedded Rust (as in microcontroller where size really matters) and are using just the core library, which doesn't even include e.g. heap allocation unlike libc
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
20. sij |
|
Also for this specific technical point in the case of containers: don't use it then. You have the choice. Use C-style thoughts-and-prayers void* containers, C++-style "templates", Java/Vala-style dynamic dispatch/runtime solutions, C-style macro code generation, ...
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
20. sij |
|
It's all a matter of trade-offs, and if someone can't tell you anything negative about their favourite language then they either lie or don't know it.
Given many things that I'm doing, Rust gives nice trade-offs though even if it's not always the best solution.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
20. sij |
|
Sure, haters gonna hate, etc. :) Give me any language out there that I know and I can give you lots of arguments why it's the worst thing ever.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
20. sij |
|
I really don't know how that would be related, but I'd be happy to be proven wrong :)
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
Thanks to @rubenrua there's now a pure @rustlang FLAC audio decoder plugin for @gstreamer based on the Claxon crate
gitlab.freedesktop.org/gstreamer/gst-…
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
For a GCC frontend, see also bountysource.com/issues/8613892… and github.com/sapir/gcc-rust… .
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
And in this context this article about the ABI in Swift is a useful resource to understand what this involves:
gankra.github.io/blah/swift-abi/
It's not that simple!
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
Now to solve this you don't necessarily need a stable-forever ABI (C++ also does fine without). But you'd need at least a bit more guarantees than the above unless you want to recompile everything all the time.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
See replies below for some details. None of these would magically be different if GCC was used instead of LLVM. It needs someone to figure out reasonable solutions to them, and they're nothing the Rust project would oppose to have solved. But resources are limited.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
3) Conditional compilation / cargo "features" allow each of your dependencies to be configured for your project and to not include features/other dependencies you don't need. This is widely used.
With dynamic linking you need to ensure that the union of everything is enabled.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
With static linking you can at least have the linker throw away duplicates when creating the final build artefact, but with dynamic linking each shared library might still end up with its own version of Vec<String>, for example.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
2) Code sharing is not as big as you would hope. All generic code is monomorphized and you end up with a copy of the specialized versions in the different build artefacts. Same as with C++ really just that Rust code is on average more generic.
|
||
|
|
||
|
Sebastian Dröge
@sdroege_
|
19. sij |
|
These reasons include: 1) you suddenly need to worry about ABI compatibility between your build artefacts. This is currently only guaranteed for the same compiler version with the same compiler flags.
|
||
|
|
||