Copenhagen Rust Community
Copenhagen Rust Community
  • 13
  • 62 082
Multi Queue Linux Block Device Drivers in Rust by Andreas Hindborg @ Copenhagen Rust Community
#rust #rustlang #programming #linux #driver
Hosted and sponsored by Google at their office in Copenhagen, January 2024
00:00 - Intro
01:31 - What is a block device?
03:05 - Block devices in Linux
04:23 - Linux storage stack
17:26 - Implementation
23:52 - Demo
30:56 - Running in a virtual machine
33:52 - Actual drivers
37:16 - Performance
41:00 - Q: What are those bitshifts of the sector?
42:38 - Q: What is the performance difference caused by?
43:51 - Q: Why is the size 2MB when you set capacity to 4096?
45:54 - Q: What is "ForeignOwnable"?
46:50 - Q: How much unsafe code?
มุมมอง: 578

วีดีโอ

Introduction to Automated Testing by Yosh Wuyts
มุมมอง 2067 หลายเดือนก่อน
#rust #rustlang #programming Hosted and sponsored by Nine A/S at their office in Copenhagen, November 2023
Programmable fonts with Rust by Valdemar Erk
มุมมอง 10K9 หลายเดือนก่อน
#rust #rustlang #programming 00:00:00 Outline 00:00:29 History of fonts 00:07:12 Computer fonts 00:10:06 Text shaping 00:16:11 Animation* with fonts 00:19:34 Computer games in a font 00:26:42 Q: What can programmable fonts do that wasn't possible before? 00:27:37 Q: How did you create the different code points for your custom font? 00:28:02 Q: Is this how emojis work? 00:28:43 Q: Is it just a m...
A Tour of the Terminal by Mark Jordan-Kamholz
มุมมอง 1.6Kปีที่แล้ว
#rust #rustlang #programming Slides: git.sr.ht/~signal_processor/term_talk Hosted and sponsored by Factbird on the 26th of October 2023.
Hex map generation using wave function collapse by Troels Hoffmeyer @ Copenhagen Rust Community
มุมมอง 2.9Kปีที่แล้ว
#rust #rustlang #programming Slides: docs.google.com/presentation/d/1NJKrU-cyTB52RFM5E2O9uJoBl6SBUuYeBwNH1_Yoyw0/edit?usp=sharing Hosted and sponsored by Factbird on the 26th of October 2023.
Impl Trait aka Look ma’, no generics! by Jon Gjengset
มุมมอง 30Kปีที่แล้ว
#rust #rustlang #programming Slides: jon.thesquareplanet.com/slides/impl-trait/ Hosted at DIKU (University of Copenhagen) on the 28th of September 2023 0:00:00 Introduction 0:01:02 Return position impl Trait 0:14:41 Argument position impl Trait 0:17:04 Associated type impl Trait 0:23:05 Type alias impl Trait 0:28:50 Return position impl Trait in traits 0:33:41 Asynchronous functions in traits 0...
Send is not about ownership by Alice Ryhl @ Copenhagen Rust Community
มุมมอง 2.6Kปีที่แล้ว
#rust #rustlang #programming Talk by Alice Ryhl from the Tokio project. Hosted at DIKU (University of Copenhagen) on the 28th of September 2023
Rust embedded at Espressif @ Copenhagen Rust Community
มุมมอง 2.4Kปีที่แล้ว
#rust #rustlang #programming Talk by Scott Mabin from Espressif. Hosted at Novo Nordisk Digital Innovation Hub on the 30th of August 2023
An introduction to Spin, a serverless WebAssembly framework written in Rust @ Copen Rust Community
มุมมอง 1.9Kปีที่แล้ว
#rust #rustlang #programming Talk by Mikkel Hegnhoj from Fermyon. Hosted at Novo Nordisk Digital Innovation Hub on the 30th of August 2023
Crate Expectations by Rob Ede @ Copenhagen Rust Community
มุมมอง 1Kปีที่แล้ว
#rust #rustlang #programming Talk recorded on June 29th at Samsung in Copenhagen
API Evolution in axum by David Pedersen @ Copenhagen Rust Community
มุมมอง 8Kปีที่แล้ว
#rust #rustlang #programming Talk recorded on June 29th at Samsung in Copenhagen
I build a tool I use in Rust | Copenhagen Rust Meetup
มุมมอง 3932 ปีที่แล้ว
The second talk from Hack night #27 in the cph.rs meetup group, about building a tool in Rust talk by Fabian Badoi
Wrapping a multi-threaded C++ API in a safe Rust API | Copenhagen Rust Meetup
มุมมอง 1222 ปีที่แล้ว
The first talk from Hack night #27 in the cph.rs meetup group, about Wrapping a multi-threaded C API in a safe Rust API, talk by Aske Simon Christensen

ความคิดเห็น

  • @G11713
    @G11713 8 วันที่ผ่านมา

    7:45 That compiler gets to peek into `impl Trait` at return position to discovered Send + Unpin seems like a mistake, however expedient.

  • @Yes-dp4ie
    @Yes-dp4ie 27 วันที่ผ่านมา

    If u try to predict where a tornado will go depending on its speed and direction you can only predict with a similar level of certainty where it will be detected at a future time. In quantum physics they are tiny spherical vortexes not particles. Moving inside a lattice made of Planck sized elastic tubes/strings. That's how EMR moves, through quamtum wires. When trying to get particle physicists to understand the wave equation is describing a wave detected at single points not a particle, it's like talking to high tech voodoo madmen, they say energy is a particle but has a wave function which isn't actually a wave! it's like particle physicists seeing people in a boat and saying "Oh look those people are moving mysteriously across the water" then we say "no but they're in a boat" to which they say "no there's no boat that's just a boat function that gives the illusion of a boat, we build nuclear bombs, computers to give corporations more control over everything and everyone, we control all physics taught in Universities and peer review journals, we have ai controlling drones killing people in Afghanistan, Pakistan, Yemen and other places with no human 2nd opinion. So trust us we are smarter than you there is no boat, the Universe has no fixed laws at the quantum level, it's not that we can't explain them using the particle model, it's just bizarre and those people move mysteriously across the water in a boat function." The Theory of Everything has been around for 5 years with 2 math proofs to Goldbachs conjecture and proof a 2nd loop is impossible in the Collatz Conjecture but the Big bang particle industry have kept it suppressed time and time again, with hysterical particle physicists unable to bear to look or listen to any evidence that for a split second says they are wrong, who keep taking down this guys channel, and refusing to acknowledge his math proofs it's looking more like more doom every day for humanity, the TOE and experiments to prove it are on channel "Breaking physics (beyond the SMOPP)" most experiments and the 2 math proofs are in 1 minute shorts. There is no collapse there is only a change of focus on the wave, what changes the focus is the real mystery but this channel has experiments to test for what it is.

  • @aksh1618
    @aksh1618 3 หลายเดือนก่อน

    I found this immensely helpful as someone going through the book and not completely understanding Send & Sync! Thanks for this unique perspective, great talk!

  • @headlibrarian1996
    @headlibrarian1996 4 หลายเดือนก่อน

    For lifetimes I think Rust would be well served by separating lifetimes from types, like Ocaml did. That is, the lifetime should not be part of the type of a variable like it is now, which forces invasive code changes when a lifetime specification is added.

  • @curry-howard
    @curry-howard 5 หลายเดือนก่อน

    Beautiful work...

  • @RugnirSvenstarr
    @RugnirSvenstarr 5 หลายเดือนก่อน

    Tetris starts at 22:56

    • @Nominal_GDP
      @Nominal_GDP 5 หลายเดือนก่อน

      Hi Hackernews

    • @p-j-y-d
      @p-j-y-d 5 หลายเดือนก่อน

      The public's reaction is priceless.

  • @GodAimAkira
    @GodAimAkira 6 หลายเดือนก่อน

    I am looking forward to this in the upstream. I am a creator of dm-writeboost which is a caching solution on device-mapper and my current hobby work is to implement a block device in userland like fuse counterpart. In this work, I've implemented bridge module in C but I want to reimplement it with Rust for Linux. Thank you for your great work.

  • @Hector-bj3ls
    @Hector-bj3ls 6 หลายเดือนก่อน

    Rust is blazing as fast as possible the path to being as complex as C++

    • @tokoucin
      @tokoucin 6 หลายเดือนก่อน

      at least in c++ you can still choose to not.

  • @LtdJorge
    @LtdJorge 9 หลายเดือนก่อน

    14:05 is the key, for me

  • @РоманГарус
    @РоманГарус 9 หลายเดือนก่อน

    cool video)

  • @AlexMatei454
    @AlexMatei454 9 หลายเดือนก่อน

    Nice job. 😀

  • @DonPidgeon
    @DonPidgeon 9 หลายเดือนก่อน

    Small detail; but the Bluetooth logo is 'H' and 'B'; not 'B' and 'T'. Edit: And the history of 'Ye' is actually because of similarity to the letter thorn 'Þ' which predates the Latin scripts, not a combination of 't' and 'h'.

  • @juchemz
    @juchemz 10 หลายเดือนก่อน

    I'd just like to say thank you for the `Captures` trick. Today was the second time I've come back to this video to use it solve my lifetime issues.

  • @ClearerThanMud
    @ClearerThanMud 10 หลายเดือนก่อน

    This was helpful. Alice is a treasure to the Rust community; her posts on the Rust User Forum are great learning material.

  • @worldboy89
    @worldboy89 10 หลายเดือนก่อน

    A phenomenal educator, my Rust and even general CS skills have grown immensely since discovering Jon

  • @gzoechi
    @gzoechi 10 หลายเดือนก่อน

    Jon is a great teacher. I wonder if I have some kind of eye cancer or if he has it😬. Gray code on purple background is among the hardest to read I have encountered so far.

  • @johanngambolputty5351
    @johanngambolputty5351 10 หลายเดือนก่อน

    26:22 that's an interesting way of doing cyclic permutations, I imagine for such small arrays it doesn't really matter, but you could filter for positions in side1 where the first element of side2 occurs and just consider those offsets (might only be one). So maybe like let matching_start_offsets = (0..6).filter(|i| side1[i]==side2[0]); for i in matching_start_offsets { if (0..6).find(|j| side1[i+j%6] != side2[j]).is_none() { return true; } } return false Also wave function collapse is pretty much equivalent to the method of constraint propagation? Entropy is just counting the number of configurations, so its the same as the policy of setting the most constrained tiles first, to reduce the likelihood of backing yourself into a corner early, the flexible slots can be left until more is determined... P.S. There an MIT open course lecture on this and more by Patrick H. WInston, its really good, there's a bunch of other things like Dijkstra's/A* that you can express as a graph search which you can just do with a cue of nodes to visit and picking things from the queue in different ways...

  • @Omar-zy2yz
    @Omar-zy2yz 11 หลายเดือนก่อน

    *PromoSM* 😓

  • @prabhat9274
    @prabhat9274 11 หลายเดือนก่อน

    Great talk by alice, thank you so much cleared so many doubts about synchronization behaviour.

  • @odilf_
    @odilf_ ปีที่แล้ว

    Amazing talk

  • @ScienceMinisterZero
    @ScienceMinisterZero ปีที่แล้ว

    This guy is a singleton type.

  • @alexandriap.3285
    @alexandriap.3285 ปีที่แล้ว

    The DBUS TUI sounds really useful! Can I have a link?

  • @copenhagenrustcommunity
    @copenhagenrustcommunity ปีที่แล้ว

    Jon kindly reached out and let us know of some good news! The RFC for the new capture rules for the 2024 edition has now been accepted! rust-lang.github.io/rfcs/3498-lifetime-capture-rules-2024.html

  • @faldarith
    @faldarith ปีที่แล้ว

    Ugh what a perfect intersection of all of my interests lol. Thanks for this.

  • @yahavseligman4855
    @yahavseligman4855 ปีที่แล้ว

    Are those rules enforced by the compiler?

    • @johnsmith34
      @johnsmith34 ปีที่แล้ว

      Which rules?

    • @yahavseligman4855
      @yahavseligman4855 ปีที่แล้ว

      @@johnsmith34 the rules she talks about regarding "send" it reminds me of ownership rules but different thus I think thay can be an expansion to the ownership rules and the compiler should enforce those as well

    • @Zylellrenfar
      @Zylellrenfar ปีที่แล้ว

      The compiler will automatically infer Send and Sync correctly for structs and enums on the assumption that no unsafe code depends on the content of those types. If you're using unsafe to write your own concurrent data structures / mutexes / etc, then it's not possible for the compiler to check the unsafe code in general. In some cases it should be possible to check these conditions with Miri, but not in the general case (and probably not efficiently either). As long as you're not writing unsafe code, you shouldn't have to worry about checking these rules, but understanding them is useful so that you know when you can use what types.

    • @ClearerThanMud
      @ClearerThanMud 10 หลายเดือนก่อน

      The rules are all enforced, one way or the other, if that's what you're asking. AFAIK, the following things work together to provide this enforcement: 1. the borrow checker 2. trait bounds on certain functions/methods, e.g. ones that make a value visible to another thread 3. the compiler's rules for deciding whether a new type is Sync and/or Send, based on whether its component types are 4. the Sync and Send status of std types As usual, you can get around this in unsafe code, e.g. by providing an unsafe impl for Sync for a type, if you know what you are doing. But there be dragons.

  • @carterthaxton
    @carterthaxton ปีที่แล้ว

    Thanks for sharing your project, and love of Rust!

  • @mcpecommander5327
    @mcpecommander5327 ปีที่แล้ว

    Where’s the slides?

  • @theondono
    @theondono ปีที่แล้ว

    I love that Rust keeps having embedded users in mind. I think it’s by far the best area for Rust to shine, even if it’s not a popular one.

    • @meowsqueak
      @meowsqueak 8 หลายเดือนก่อน

      I wish RustRover had embedded developers in mind, also.

    • @sortof3337
      @sortof3337 5 หลายเดือนก่อน

      @@meowsqueak ha ha ha. i switched to zed and now I am happy though features are still lacking for iot.

  • @yaksher
    @yaksher ปีที่แล้ว

    @22:30 It's a little odd to me that we don't just that it behaves like a return position impl trait-i.e., that there must be some single type which satisfies this that the compiler knows but you're not explicitly specifying. Like, the argument to eat is not "an impl Trait type", it's just an associated type for the trait-which must be a single, specific type-which happens to be defined opaquely. Thus, the function just knows that it's some kind of Iterator<Item = u32> and so that's all you can do with it in eat.

    • @bluk
      @bluk ปีที่แล้ว

      From the public viewpoint, that's correct, but in the function implementation, you may want to call functions on your specific known type. For instance, the real hidden type returned in the "into_iter" method could also implement DoubleEndedIterator for Odd's ExcessiveIntoIterator trait implementation. Because you are guaranteed the type returned from into_iter() is the same exact type passed into eat, you can now use DoubleEndedIterator in eat(). This does not require that other trait implementations would need to implement DoubleEndedIterator. If you did not care about that eat() is using the same exact type returned from into_iter(), you could of course, use a generic or non-associated impl Trait parameter instead.

  • @Onkoe
    @Onkoe ปีที่แล้ว

    Every Jon Gjengset lecture is a wonderful new experience! Thanks for uploading! 🥰

  • @renatoborgogni2534
    @renatoborgogni2534 ปีที่แล้ว

    Thank you

  • @antarctic214
    @antarctic214 ปีที่แล้ว

    A slight nitpick for 15:00 (argument impl Trait): This can still be viewed as an example of an existential type because (exists a. a) -> b is the same as forall a. a -> b (using haskell notation). If you represents exists with a dependent pair this can be viewed as dependent currying: (a: Type, a) -> b same as (a : Type) -> a -> b. So imo return and argument position impl Trait are consistent.

  • @juchemz
    @juchemz ปีที่แล้ว

    I don't understand the need for a single defining use with #[defines]. Wouldn't all uses need to be compatible, so any one could be taken as the defining use?

    • @SimonBuchanNz
      @SimonBuchanNz ปีที่แล้ว

      Only at the source level. When actually compiling the hidden type determines things like the size, trait implementation function addresses, etc. Essentially the difference between static and dynamic polymorphism (impl and dyn)

    • @gamekiller0123
      @gamekiller0123 ปีที่แล้ว

      ​@@SimonBuchanNz The hidden type matters, yes. The point is that for there to exist a defining use it has to actually define a single type that fits. If two potential defining uses disagree it should be a compiler error, and if they don't then we can use that type.

    • @gamekiller0123
      @gamekiller0123 ปีที่แล้ว

      I think the issue is once you start getting inference. You can easily set up a situation where the type of one integer affects the type of another, which might not be intended. You might be able to set this up in a way where this works in both directions to give different results. Still, it seems to me like this could be handled by allowing multiple defining uses *if they agree* and instead allow a use to opt out of being defining.

  • @Tigregalis
    @Tigregalis ปีที่แล้ว

    some weird audio artifacts unfortunately

    • @speedstyle.
      @speedstyle. ปีที่แล้ว

      because he looks back and forth from the microphone clip

  • @leonie9248
    @leonie9248 ปีที่แล้ว

    What’s the link to the faster than lime Video mentioned at 38:00?

    • @emid_io
      @emid_io ปีที่แล้ว

      th-cam.com/video/c_5Jy_AVDaM/w-d-xo.htmlsi=a33gmX3F_dX2vtPK&t=2651

    • @ankushm3t
      @ankushm3t 7 หลายเดือนก่อน

      th-cam.com/video/c_5Jy_AVDaM/w-d-xo.html

  • @leonie9248
    @leonie9248 ปีที่แล้ว

    Thank you!

  • @paulzhang5511
    @paulzhang5511 ปีที่แล้ว

    Great.🎉🎉🎉