Rust & Wasm

Поделиться
HTML-код
  • Опубликовано: 20 сен 2022
  • Today I'm going to talk about building apps you can deploy anywhere with no installation by using Rust and WebAssembly.
    Sponsor: Quadratic - The Data Science Spreadsheet for Engineers
    Check out the project on Github: github.com/quadratichq/quadra...
    View open jobs here: careers.quadratic.to
    If you would like to support what I do, I have set up a patreon here: / noboilerplate Thank you!
    All my videos are built in compile-checked markdown, transcript sourcecode available here github.com/0atman/noboilerplate this is also where you'll find links to everything mentioned.
    Corrections are in the pinned ERRATA comment.
    Start your Rust journey here: doc.rust-lang.org/stable/book/
    CREDITS & PROMO
    My name is Tris Oaten and I produce fast, technical videos.
    Follow me here / 0atman
    Website for the show: noboilerplate.org
    Come chat to me on my discord server: / discord
    If you like sci-fi, I also produce a hopepunk podcast narrated by a little AI, videos written in Rust! www.lostterminal.com
    If urban fantasy is more your thing, I also produce a podcast of wonderful modern folktales www.modemprometheus.com
    Special thanks to my patreon sponsors:
    - Affax
    And to all my patrons!

Комментарии • 542

  • @NoBoilerplate
    @NoBoilerplate  Год назад +572

    ERRATA
    I was not clear that wasm is only slower than JS in DOM manipulation. If you write pure wasm and webgl, you can smoke JS.

    • @w1keee
      @w1keee Год назад +27

      small syntax error: at 5:55 some of the component trait's methods don't have semicolons after

    • @finnmonstar
      @finnmonstar Год назад +2

      @@w1keee Those may have default implementations that are not included in the video.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +28

      @@w1keee Thank you! That's part of the code that is omitted on the slide, it's not valid rust (super compressed code to try to fit it on one slide).

    • @raffimolero64
      @raffimolero64 Год назад +1

      ​@@w1keee more specifically, they are trait methods with default implementations and are thus followed by code blocks rather than semicolons

    • @w1keee
      @w1keee Год назад

      @@raffimolero64 ok, thanks

  • @yondaime500
    @yondaime500 Год назад +650

    You certainly have a way of making Rust sound like it came to us as a gift from a Kardashev II civilization.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +113

      I'm not saying Rust will make us immune to extinction....!

    • @willemidaho
      @willemidaho Год назад +36

      @@NoBoilerplate yet.

    • @crowlsyong
      @crowlsyong Год назад +2

      Lol nice comment

    • @gunnaryoung
      @gunnaryoung 5 месяцев назад

      @@NoBoilerplate "it's a cookbook!"

    • @qosujinn5345
      @qosujinn5345 4 месяца назад

      W kardashev mention lessgoh

  • @Zedoy
    @Zedoy Год назад +299

    Me: Manipulates DOM directly with JS.
    No_Boilerplate: No one manipulates DOM directly.
    Me: 😐.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +105

      Oh you should try jQuery /s :-D

    • @mathgeniuszach
      @mathgeniuszach Год назад +10

      I mean... rust _can_ still manipulate the DOM directly sooo

    • @allesarfint
      @allesarfint Год назад +65

      Imagine wasting your time writing clean and performant code to interact with the DOM instead of using a heavy and cumbersome -framework- library like React.

    • @airman122469
      @airman122469 Год назад +4

      I’ve done this. But I was in an environment where I literally was barred from using react or angular.

    • @vincentweber1359
      @vincentweber1359 Год назад +7

      ​@@NoBoilerplate I'm currently trying to get permission from my Tech Lead to rip jQuery out of our project... xD

  • @tylerbloom4830
    @tylerbloom4830 Год назад +52

    In my current personal project, I'm writing a backend and several clients all in Rust, including a frontend using Yew. There is one boon that WASM gives you that you didn't touch on. You can directly share libraries between your backend and frontend. No reimplementation. No bugs from translating between languages. You can ensure that the behavior of your data structures is identical between every piece of the project. Fix a bug once, and you're done!!
    The message passing pattern showcased is also a fantastic way to handle client-server communication and syncing of shared state.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +23

      Brilliant! I'll make sure to mention this in the follow-up video, in a month!

    • @svelterust
      @svelterust Год назад +6

      Yeah this is really the biggest benefit of using one language for both backend and frontend 😄

  • @eboatwright_
    @eboatwright_ Год назад +83

    I completely agree! I use the game framework Macroquad for little games that I make, and it has support for WASM! No lag, no hassle, just "cargo build --release --target=wasm32-unknown-unknown"!

    • @tentaklaus9382
      @tentaklaus9382 Год назад +5

      I'm learning Rust by building a 2D roguelike game based off a book by Herbert Wolverson called Hands-on Rust. 👍

    • @thecoweggs
      @thecoweggs Год назад

      its you again

    • @eboatwright_
      @eboatwright_ Год назад +1

      @@tentaklaus9382 Awesome!

    • @eboatwright_
      @eboatwright_ Год назад

      @@thecoweggs hello

    • @jumbledfox2098
      @jumbledfox2098 22 дня назад

      macroquad is so amazing! i recently made a minesweeper game and putting it on my website was literally so easy

  • @mathgeniuszach
    @mathgeniuszach Год назад +323

    The rust ecosystem never ceases to amaze. I can see that in just years from now, rust will be able to do quite literally everything. A _new_ javascript if you will

    • @Ahheck01
      @Ahheck01 Год назад +11

      I will.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +67

      It's faster than React today - it's ready!

    • @redcrafterlppa303
      @redcrafterlppa303 Год назад +18

      @@NoBoilerplate it's also faster as compiled binaries. I ported a program I designed as a lightweight background program in c# to rust and the memory usage was cut in 7 and cpu usage went from 0.1 % to unmeasurable. Thanks to rusts high level feel it wasn't as painful as c/c++ even though I needed to use the raw windows window functions.

    • @Metagross31
      @Metagross31 Год назад +10

      @mathgeniuszach with the difference of Rust not being as horrible as Javascript :D

    • @myronkipa2530
      @myronkipa2530 Год назад +6

      @@NoBoilerplate You said js is faster than wasm. Is it really?

  • @drasleek6170
    @drasleek6170 Год назад +83

    There's something about your videos that makes me so interested in programming in rust. Keep up the good work!

    • @Speykious
      @Speykious Год назад +13

      -It's the british accent B)-

    • @NoBoilerplate
      @NoBoilerplate  Год назад +2

      hehe!

    • @NoBoilerplate
      @NoBoilerplate  Год назад +2

      Thank you! Honestly I feel the same, so it must be the Rust XD

  • @Yaxqb
    @Yaxqb Год назад +128

    PSA: Remember that rendering to a canvas breaks the accessibility of the page. Screen readers won't read elements aloud, being able to copy-paste text gets lost, no auto reflow is possible with CSS, etc. 🙏👍

    • @NoBoilerplate
      @NoBoilerplate  Год назад +42

      Agreed, I really love web accessibility (It's a huge thing where I work), but it's good to have the option to write webgl applications and games!

    • @unmellowthegamer8946
      @unmellowthegamer8946 Год назад +4

      It would be nice if you could just tell the browser the access ability attributes of a screen region.

    • @mikejamesbelanger
      @mikejamesbelanger Год назад +3

      Lack of accessibility is currently a drawback, although my feeling is long-term screen-readers are going to be replaced by AI chatbots anyways. Copy-paste is an interesting problem, although there must be a way to hold text in a state that the cursor could then grab, depending on the framework used.

    • @cerulity32k
      @cerulity32k 9 месяцев назад

      That is true, but it's also true for JS/Flash (afaik). I'm learning WASM to make web games, because I feel that they will have more reach.

    • @AdamWoodAMW
      @AdamWoodAMW 5 месяцев назад +3

      > my feeling is long-term screen-readers are going to be replaced by AI chatbots anyway
      I'm guessing you don't use a screen reader or have any close friends who need them

  • @Kfoo-dj4md
    @Kfoo-dj4md Год назад +47

    Tris makes me feel like I know everything CS related just by knowing rust 😂
    Rust is my favorite language 🦀

    • @NoBoilerplate
      @NoBoilerplate  Год назад +13

      HONESTLY this is how I feel. I'm learning so much about how stuff ACTUALLY works, by learning Rust!
      Tried to explain it in this one ruclips.net/video/0rJ94rbdteE/видео.html

    • @Kfoo-dj4md
      @Kfoo-dj4md Год назад +1

      @@NoBoilerplate I totally agree! 🦀

  • @mikopiko
    @mikopiko Год назад +45

    Man, your content is so minimal, pure & easy to understand.
    I am addicted to your channel even though I don't write Rust.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +9

      You don't yet write Rust ;-)
      The Book is where I started, keep watching!
      doc.rust-lang.org/stable/book/

    • @mikopiko
      @mikopiko Год назад +7

      @@NoBoilerplate I've had my eyes on Rust for a couple of years but haven't found any reason to try it yet, still waiting for that day to happen. (I am a Rails dev so I mostly develop within the web)
      BUT there is an ongoing rewrite of Ruby called Artichoke, in … of course Rust.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +7

      @@mikopiko Ha! The whole world is oxidising! rocket.rs is the closest to Rails that I've seen, though it's more like Sinatra with strong community plugin support. Rails is wild isn't it! We use it at work here and there!

  • @AndrewBrownK
    @AndrewBrownK Год назад +14

    I’m finally getting to the point I grok the lifetime errors the compiler is complaining about at a glance, and can instantly think where I messed up and where I need to go fix. It used to be that algebraic data types were my gold standard to consider a modern language usable or not, but now I can’t imagine programming without a borrow checker.
    Literally, Ive been working on this personal project (a distributed event framework) for months with type level programming, and at roughly 3500 lines of code before a minimum executable demo, it executed not just successfully but correctly too. Literally first try. I was in shock. I was fully expecting to debug for hours or days. I’m in love with this language.

  • @fifty6737
    @fifty6737 Год назад +24

    the procedural macros are the most genius and mind blowing feature to ever exist in a programming language, rust basically solved the source generators problem in the most elegant way and went a step beyond

    • @NoBoilerplate
      @NoBoilerplate  Год назад +12

      This is literally why I'm here. They've existed in lisp for longer than most of us have been alive, but it's AWESOME that rust took the best parts of lisp!

  • @nici9376
    @nici9376 Год назад +4

    I bloody love your sponsors. Thats how you everyone should do them. They always have something to do with the video.

  • @remiwi2399
    @remiwi2399 Год назад +51

    I'm learning React right now so I can get a job. If only I could use rust for this! Will definitely look into it more if I ever make my own personal projects.

    • @ariseyhun2085
      @ariseyhun2085 Год назад +3

      hopefully in the coming years Rust frontend will be much more mainstream 🤞

    • @NoBoilerplate
      @NoBoilerplate  Год назад +28

      React will be a great framework to get work! It's never a bad idea to learn more languages and techniques :-D

    • @b0nes95
      @b0nes95 Год назад +4

      unfortunate that most companies hire React devs when Vue 3 is so much more dev friendly and maintainable and readable.

    • @zuma206
      @zuma206 Год назад

      Brilliant philosophy. Im learning react + nextjs for my career, with remix as my personal choice. That way personal projects will be efficient but I'm still hirable

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      @@zuma206 More knowledge is always good!

  • @marcovitale8808
    @marcovitale8808 Год назад +1

    Fantastic video, as always! I'd also like to congratulate you on your choice of sponsors. This is the first time I've seen sponsorships in videos that really interest me and that I'm going to look into, keep it up!

  • @999mrgreen
    @999mrgreen Год назад +1

    Your videos inspired me to learn Rust and I'm so glad I did! I've already converted several of my personal projects.
    Whenever someone asks me for info about Rust I always point them to your videos.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Fantastic! I'm on a mission to show the world how great this language is!

  • @electra_
    @electra_ Год назад +1

    Thank you for this video! I started working with Rust Wasm today and got a basic webserver and website running that changes what's displayed based on the web parameters. Very happy with how it turned out - especially that no JS was required.

  • @lembu7220
    @lembu7220 Год назад +1

    I’m obsessed with your channel. I watch all your videos on the day of release. Please keep it up!

  • @PromptStreamer
    @PromptStreamer Год назад +5

    Really nice video, clear and fast-moving

    • @NoBoilerplate
      @NoBoilerplate  Год назад +2

      Thank you very much, I have 9 other Rust videos in the same fast format, I'd love to know what you think!

  • @tim_arterbury
    @tim_arterbury 3 месяца назад

    Wow this is amazing 😍
    Thank you for sharing!!

  • @ronwabwire
    @ronwabwire Год назад +9

    Rust is so blazingly fast, I downloaded and installed it 5 times thinking something was wrong, literally micro seconds installation of the compiler. It was only after running rustc that I found out that the compiler installed already!

  • @varsketisLT
    @varsketisLT Год назад +15

    You present Rust in such a way that I feel like I want to learn it so much... It's just that I JUST got my first programming job a couple of weeks ago and I also have a couple of Java and JS projects still unfinished, and a freelance gig with Python. Yet the less time I have, the more drawn to Rust i become lol

    • @NoBoilerplate
      @NoBoilerplate  Год назад +12

      Congratulations! Welcome to a really great industry :-D
      Don't worry about it, you'll learn 10 new languages (if you've got the right attitude) during your career. 5 of which haven't been invented yet!
      Rust's a great one to learn for now.

    • @varsketisLT
      @varsketisLT Год назад +2

      ​@@NoBoilerplate Thank you for the reply.
      I was planning to build a multiplayer Android/ios, very simple card game in Java. I am now thinking of doing it in Rust. Would it be too hard, in your opinion? Or should I start somewhere else?

    • @NoBoilerplate
      @NoBoilerplate  Год назад +4

      @@varsketisLT I think you'll have a much more INTERESTING life if you write it in Rust! The game engine we like around these parts is bevyengine.org
      Come chat to us in #newbie-advice on my discord server, links on noboilerplate.org!

    • @varsketisLT
      @varsketisLT Год назад +2

      @@NoBoilerplate Thank you so much, will do!

  • @joelmontesdeoca6572
    @joelmontesdeoca6572 Год назад +2

    Every time I watch your videos I fall in love with Rust all over again.

  • @Ma1ne2
    @Ma1ne2 Год назад +13

    Quadratic looks awesome, was just today hearing from a friend that has to fight Excel and VB at work, where he is locked into Microsoft products. This looks like such a cool, modern alternative! I love the idea of bringing python and it's whole ecosystem into the mix.

  • @AceofSpades5757
    @AceofSpades5757 Год назад +1

    Yew is a fantastic library. I've used if for multiple projects and thoroughly enjoy it.

  • @stef9019
    @stef9019 Год назад +1

    This gets me excited to code some more Rust 😍! Great video, subbed

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      I'm excited for you! It's very hard, you'll have to watch more of my videos to get excited, but start with the book doc.rust-lang.org/stable/book/

  • @ashen_dawn
    @ashen_dawn Год назад +4

    i'm excited to try yew out - i've been doing React for work for years, and i've done a bit of by-hand rust-wasm here and there, plus a fair bit of rust+react. this feels like the next logical step in basically every way

  • @alandto3996
    @alandto3996 Год назад +2

    Thank you for the content, and I can tell it's going to be great even before I watch it.

  • @Hobbitstomper
    @Hobbitstomper Год назад +12

    The biggest downside is still that Wasm can't interact with the DOM of a website directly and relies on JavaScript. Even if you write everything in Rust to interact with the DOM, Wasm translates it into JS, which then interacts with the DOM. This eventually results in a bottleneck. The guys over at Wasm are saying they're working on a way around this. I'm sure once they have a solution, browsers will need to add support for that. Once this is solved, that's when things will get interesting. Imagine websites running on Rust/Wasm with direct access to the DOM api without the need for JavaScript.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Are you certain of this fact? Yew is faster than react in dom manipulation benchmarks.

    • @zomakaja
      @zomakaja Год назад +10

      @@NoBoilerplate Yes. React is not a particularly fast framework. Svelte, Vue, and Preact are all faster than Yew according to the js framework benchmark. Using WASM for DOM manipulation can't be as fast as vanilla js, as of rn.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +5

      @@zomakaja Right, that makes sense. Seems like wasm dom manipulation is fast enough though, if it's faster than react - how many websites are powered by react!

  • @paguman_ahoy8887
    @paguman_ahoy8887 Год назад +1

    Currently learning rust as a hobby. This gets me more excited for what I can do with it😄

  • @guinetik
    @guinetik Год назад +1

    YES! Finally the video I was waiting for from you :)

  • @Raykazen
    @Raykazen Год назад +1

    Very cool video! Thank you for sharing

  • @llcoolchris_
    @llcoolchris_ Год назад +5

    The thing with Yew that really bothers me, is that the styling is still painful. Well, was painful, idk if today we have solid solutions. But once we’re getting something solid like CSS Modules or Styled components, I’m JUMPING in it!

    • @NoBoilerplate
      @NoBoilerplate  Год назад +3

      Take your pick and jump in! crates.io/crates/yew-style-in-rs

  • @extremrams
    @extremrams Год назад +3

    Great video as always :)
    I love yew. As always, don't underestimate the learning curve (as with everything rust) - you need to spend some time with the current webassembly stack in rust to really get going. Once you have that, you pick up speed and that's the point where it gets really great.
    For example we had to process a big excel file and send some parts to the server.. well, guess what: Just use an excel reader crate - process everything client side and send a payload of a few kb instead of 20mb. You can even have shared types in your front and backend and send the payloads back and fourth in the perfect format - apply some validators there and you have input validation everywhere!
    Just some input to underline the things you can have for free :)

  • @eyemotif
    @eyemotif Год назад +1

    amazing video as always 🧡

  • @awwastor
    @awwastor Год назад +8

    I think Swift and Nim would be really nice languages for WASM too, for people who don’t want to/have issues with learning the borrow checker. Both of them are getting closer and closer to making their GC/RC less often used. Swift is a lovely language, it kind of sucks it’s so heavily intertwined with the apple ecosystem.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +3

      I also wish that, but we must play the hand we are dealt!
      Rust isn't my favourite language because it's perfect, it's my favourite language because it's practical and we can build a team and get good work done NOW!

    • @morkallearns781
      @morkallearns781 Год назад

      Doesn’t Swift now have a borrow checker?

    • @awwastor
      @awwastor Год назад

      @@morkallearns781 Not yet I don’t think? inout arguments block you from passing both an immutable and mutable “reference” to a value, but no ownership (yet)

  • @notusingmyrealnamegoogle6232
    @notusingmyrealnamegoogle6232 Год назад +1

    incredible content, thank you

  • @ar4ys
    @ar4ys Год назад +13

    Now, just imagine: Yew + Tauri. The perfect duo for cross platform desktop apps with the flexibility of WEB technologies and power/safety of Rust.
    Damn I want that now... Somebody knows Web-Rust Tauri bindgen tools? That's literally the last piece in the puzzle for seamless Rust-only desktop development.

    • @ArgoIo
      @ArgoIo Год назад +3

      I don't know, whether this fits what you are looking for, but the Tauri documentation does state, that one can build a Yew project with Tauri.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +3

      the dream!

    • @TheNewJavaman
      @TheNewJavaman Год назад +6

      Tauri has the `create-tauri-app` cli tool, which includes a template for Yew 🙂

    • @NoBoilerplate
      @NoBoilerplate  Год назад +3

      @@TheNewJavaman omg yesssss

  • @markquinn1146
    @markquinn1146 Год назад +11

    Looks interesting. How would the styling side of things work? I guess it would be an external stylesheet with classNames though.
    Also if it had a way to hot reload the way most front end frameworks/libraries do it could be a winner!

    • @NoBoilerplate
      @NoBoilerplate  Год назад +10

      Yew hot reloads without a page load. I nearly fell of my chair when it did it first!

  • @jak3legacy
    @jak3legacy Год назад +3

    The best part about this series is that once each video is finished, a new JS framework is released queuing up content for the next video

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Ugh, you're not even exaggerating that much XD

  • @OrtinFargo
    @OrtinFargo Год назад +1

    This is so funny. I was exactly thinking about this

  • @job4753
    @job4753 Год назад +3

    I had so much hope for this being a video about perseus. Even though perseus is still in very early development, it absolutely crushes nextjs with SSR *and* SSG support. It also is a backend and frontend in one framework.
    Their own website looks super good and only after like 2 seconds you are like "wow did it just instantly load"?
    I highly recommend checking it out, even if it is just for fun and giggles.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +3

      Wow, I just checked it out! That is SUPER impressive. I'll watch Perseus with great interest, thank you!

    • @job4753
      @job4753 Год назад +1

      @@NoBoilerplate You are welcome:) Happy to share.
      Ever considered making a podcast or short video every month / 2 weeks, about new things in the rust ecosystem. Bit like the code report from Fireship but for Rust.
      There is a lot of new stuff happening in the Rust ecosystem and I think a lot of Rusteans would love to to get to know the new stuff, but sometimes are overwhelmed with all new things. Especially deciding if it is quality or garbage with a cool name.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +2

      @@job4753 Great idea! But I think I'll leave that to the professionals. My videos are featured in the various weekly roundup posts, newsletters and threads round about.
      I prefer to produce high impact, high value videos. I saw there was a lack of highly-produced introductory content in the Rust community (Though Fireship is an exception), and I want to make sure as many people get excited about this world-changing language as possible.
      Once they're listening/reading the weekly roundups, the work is done, and the language sells itself 🙂

    • @job4753
      @job4753 Год назад

      @@NoBoilerplate fully understand that:))

  • @Speykious
    @Speykious Год назад +2

    You always nail the sponsors.

  • @jeffg4686
    @jeffg4686 Год назад +22

    @1:51 - I'd say that graph/chart alone sells Rust - want to do WA, likely gonna want rust.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +4

      Right! check the sourcecode for the links for more info

    • @user-dh8oi2mk4f
      @user-dh8oi2mk4f Год назад

      smh, imagine not deciding on using the boilerplate driven language designed for writing verbose, object oriented, instant legacy code

  • @peruibeloko
    @peruibeloko Год назад +2

    The way you handle state and mutations on Yew feels almost identical to the Elm Architecture, and I'm all in for it

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Huge fan of elm - it's all functional programming sensible defaults!

    • @Tsudico
      @Tsudico Год назад +2

      I think Yew was heavily influenced by Elm, which is why they chose Yew for a name.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      @@Tsudico omg

  • @adamd0ggg2
    @adamd0ggg2 Год назад +2

    The biggest issue with react is implementation details bleeding into the abstraction. having to constantly duplicate objects with {...something, prop:"new value"} to set a new state because things are immutable being a key example. When you have an account balance and do +10 no one envisions that a brand new account is created with a value 10 more. The yew way of updates reminds me of a required useReducer hook as the only way to update.

  • @Crux161
    @Crux161 Год назад +1

    These videos and the level of content they maintain (more importantly) absolutely wonderful 🎉 Every time I think “how’s he going to make this interesting?” And yet you absolutely floor me. Please, just teach a class or something already. 🤦‍♂️ 💕

  • @somedooby
    @somedooby Год назад +3

    At 0:25 you mentioned that AWS supports Rust. That is sort of true, but not quite. Everywhere that the AWS Rust SDK is mentioned, they state that the SDK is a preview and that it should not be used in production. Rusoto is the alternative

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Sure, and gmail was beta for two decades ;-)
      Rusoto is in maintenance mode, since the aws sdk dropped, it's great!

  • @sharperguy
    @sharperguy Год назад +7

    It seems like the only thing holding back Rust right now is time. Time for people to realize its potential, time for people to get used to the slightly different paradigms that it uses, and time for the ecosystem to develop and the language to stabilize a little.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +4

      Absolutely. I am trying to push the needle slightly in the right direction with my Rust series!

  • @_modiX
    @_modiX Год назад +1

    You do an excellent job in selling this technology, and I'm sold.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Thank you, but it's the tech that sells itself, honestly! The reason I'm over here making these videos is that I NEED more people to know that a pleasant programming life is possible :-)
      Have you tried much Rust yet? Make sure you've watched this intro video of mine ruclips.net/video/CJtvnepMVAU/видео.html

    • @_modiX
      @_modiX Год назад +1

      @@NoBoilerplate Thank you for sharing. Rust is on my scope for a while now. As of now I have to maintain a lot of hybrid web/apps (native), so things like ReactNative with Expo and Flutter. I'm already keen to try Dioxus, despite Rust still treating mobile as 2nd Tier target. I soon have to make a good decision and I couldn't thank you more for bringing this on my radar, once again.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      @@_modiX I hear good things about Dioxus - do try out yew.rs and tauri.app too!

  • @codetothemoon
    @codetothemoon Год назад +1

    Fantastic! 🔥

  • @2raddude
    @2raddude Год назад +2

    THANK YOU

  • @mannycalavera121
    @mannycalavera121 Год назад +2

    Rust aside, you're videos are therapeutic

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Thank you! You might find my gentle scifi podcast even MORE so! I'd love to know what you think ruclips.net/video/p3bDE9kszMc/видео.html

  • @phenanrithe
    @phenanrithe Год назад +1

    Looks great, thanks for sharing! A little disagreement though, macros offer poor visibility in general regarding errors at compilation, and average support in IDEs because it's complex for them to interpret (for ex. with refactorization and type inference).

  • @tudbut
    @tudbut Год назад +2

    Awh yeah, another fast, technical video!

  • @miguelguthridge
    @miguelguthridge Год назад +5

    I've been learning Rust for a couple of weeks now and although it hasn't been without it's headaches, those headaches have always been because of additional complexity that other languages keep hidden.
    A great example I ran into a couple of hours ago was when I tried to convert a char into uppercase. I was expecting to get a character out the other end, but I ended up with a completely different type which I couldn't convert.
    It turns out that converting certain characters to uppercase can result in more than one character being produced - an edge case that I never would have considered had I been writing in any other language.
    Over the years, there have been many crashes on operating systems like Android and iOS due to them missing edge cases of Unicode such as the one above. I can't help but wonder how many of them could have been avoided if the operating systems were programmed using Rust's spectacular error checking.

    • @MaakaSakuranbo
      @MaakaSakuranbo Год назад +2

      Hah, thats a cool. My main issue in getting into Rust tends to be to find good up-to-date tutorials. I only find very simple tutorials. And then keep getting stuck trying to write my own stuff.
      But trying to find an answer to my issues tends to find tons of outdated answers because Rust changed so much over time

    • @miguelguthridge
      @miguelguthridge Год назад +1

      @@MaakaSakuranbo yeah I'm really lucky in that I'm taking a university course on it so there's a whole team of dedicated teachers making the process as smooth running as possible.

    • @peter9477
      @peter9477 Год назад +1

      @@miguelguthridge If you were asking about the uppercase char thing on Stackoverflow, I just saw your question. And if that wasn't you, a practically identical question is there.... fun and eye-opening discussion in comments and answers.

    • @miguelguthridge
      @miguelguthridge Год назад +2

      @@peter9477 it wasn't me, but I'm pretty sure I encountered a similar question while figuring out what was wrong.

  • @noabstruction
    @noabstruction Год назад +1

    You know JS congratulation you are a backend developer. :). Just Keding great video bro. I am seriously considering Rust now.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Ha! Yes good point, node is really great!
      Have you seen my other videos? Here's the playlist, get excited! ruclips.net/video/CJtvnepMVAU/видео.html

  • @sids911
    @sids911 Год назад +3

    Not related to wasm in general but tauri + rust is a great tool to build things specifically if you want to create something which can work with system level features like running a custom-built ml model and pipeline but have a fast to prototype and great UI using web frameworks (although its slow but it gets the job done)

  • @thanatosor
    @thanatosor Год назад +1

    Nice job promo from quadratic.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Thank you, my whole goal is to increase Rust adoption - once you know to pay attention to it, the language is self-evidently great!

  • @yapayzeka
    @yapayzeka Год назад +2

    liked. time to watch the video.

  • @ruvasqm
    @ruvasqm Год назад +2

    When I watch your videos I feel like I'm being roped into a sect and it looks so good!

    • @TheAndrejP
      @TheAndrejP Год назад +2

      The cargo cult! 😄

    • @ruvasqm
      @ruvasqm Год назад +1

      @@TheAndrejP a very funny coincidence en.wikipedia.org/wiki/Cargo_cult
      I do know what you meant though hahaha!

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      new channel name right there tbh

  • @TheDRAGONFLITE
    @TheDRAGONFLITE Год назад +1

    I just learned vue, but this seems pretty cool!

  • @lucky-segfault4219
    @lucky-segfault4219 Год назад +1

    wake up babe new no boilerplate video just dropped

  • @luisdef_
    @luisdef_ Год назад +1

    Great video.

  • @alexzander__6334
    @alexzander__6334 Год назад +1

    please make more examples with multi-threading/async on WASM

  • @rollingreene1220
    @rollingreene1220 Год назад +1

    I'm very new to Rust, but this pretty sweet

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      It is! Check out my other videos in this rust series for more incredible features you can't get anywhere else!

  • @TheNewJavaman
    @TheNewJavaman Год назад +1

    Now we need a video on Tauri 🙂

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Yeah! With the yew defaults! A future video :-)

  • @sohn7767
    @sohn7767 Год назад +1

    1:57 can’t unhear “shit-compiler performance cliffs”

  • @sosignon
    @sosignon Год назад +7

    I'd love it if Yew could render CSS in the same way it renders HTML!

    • @NoBoilerplate
      @NoBoilerplate  Год назад +11

      BAM thanks for making me look this up, this is great!
      crates.io/crates/yew-style-in-rs

    • @sosignon
      @sosignon Год назад +6

      @@NoBoilerplate Oh sweet Lord, it's scoped as well. I may have to ditch Vue.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      @@sosignon let me know how it goes! (are you on the discord?)

    • @sosignon
      @sosignon Год назад

      @@NoBoilerplate Ha, I don't know when I'll next get a chance, but yes of course. Not in the Discord yet, will hop on.

  • @BosonCollider
    @BosonCollider Год назад +1

    Dioxus is another option which is less verbose than yew and is faster than Svelte once loaded, which is a higher bar to beat than being faster than react.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Yeah, I've become much more interested in Dioxus since making this video, very impressive!

  • @HoloTheDrunk
    @HoloTheDrunk Год назад +1

    My current Rust project is the peak of Rust full-stack development:
    Compiler for the esolang? Rust with Pest for lexing/parsing and Inkwell for compilation to LLVM IR.
    Website frontend for the esolang? Rust with Yew.
    Website backend with public compilation API (also used by the frontend)? Rust with Actix and possibly Diesel.
    Hotel? Trivago.
    I absolutely love this language and its ecosystem

  • @olaniyanayodele5986
    @olaniyanayodele5986 Год назад +1

    Special request: Can you do a video on rust use cases (what you can do with rust) and also what you should actually use it for and not use it for. Cause I hear people say "Rust shouldn't be used for web dev (backend ofc) "
    Love the channel btw thank you

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Thank you so much! I think you can and should use Rust for anything! My video on this is here ruclips.net/video/4dvf6kM70qM/видео.html

  • @guilherme5094
    @guilherme5094 Год назад +1

    👍!

  • @pandavroomvroom
    @pandavroomvroom 19 часов назад

    not to mention the fact that rust macros are a whole different beast to tame

  • @KiranasOfRizon
    @KiranasOfRizon Год назад +2

    No Boilerplate: The best Rust shill on youtube.

  • @KingJellyfishII
    @KingJellyfishII Год назад +2

    I'd _really_ love to write an app using egui and have the same codebase for both web and native, but at least from my testing the performance isn't quite there yet. Also the accessibility issues. Definitely going to use yew in the future, though.

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Yes, I think that if I were in your position, I'd use Tauri and Yew. Much more mature, html is *the* interface!

  • @yiyoascen
    @yiyoascen Год назад +1

    your voice is soothing

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Thank you so much! I've been doing a gentle scifi podcast for the last 2 years, I'd love to know what you think of it ruclips.net/video/p3bDE9kszMc/видео.html

  • @user-vb1gr6ci4d
    @user-vb1gr6ci4d Год назад +1

    As a web developer with 8 years of experience, using react since the beginning, recently vue, I really really want this. But at the same time, I'm fairly confident that the industry won't be able to make the switch, not in the next 10 years at least.

  • @barbietripping
    @barbietripping Год назад +1

    “… and I’ve used eMacs”
    Alright alright already I’ll subscribe

  • @VECT4GAMING
    @VECT4GAMING Год назад +2

    I’m trying to get into using rust for web developement, my expirience with web developement as a whole is limited to AWS, goHugo, and an understanding of html and css. Would you say that learning yew as a front end and Axum would be a smart step foreward?

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Yew - absolutely!
      Backend, I'd try rocket.rs first. I love Poem, too.

  • @tos3378
    @tos3378 Год назад +1

  • @joshaustintech
    @joshaustintech 9 месяцев назад +1

    This and the Good Rust Web Stack video have inspired me to go full-stack Rust! I'm sure you have a lot on your plate, but I was curious if a Rust WebGL demo video is still in the works?

    • @NoBoilerplate
      @NoBoilerplate  9 месяцев назад

      I didn't go too crazy with it, but I did put out part 2! ruclips.net/video/y10jJX35shE/видео.html
      And if you'd like my recommendations on how to learn rust further, here's my playlist:
      ruclips.net/video/2hXNd6x9sZs/видео.html

  • @ahuman32478
    @ahuman32478 Год назад +1

    You mentioned that we don't usually manipulate the DOM directly using Rust or JS? Why not? I recently made a web application to display content from a site, and I used DOM manipulation to add labels with extra data. I did what you showed at 2:43 where I created elements to append to another element, which I then appended to the page.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      I don't think I said that - I mean that most of your application logic is plumbing, not UI code.
      JS can access the DOM directly, through the window.document api. WASM applications have to call js to then call window.document, so there's a layer of indirection.

  • @MaximilienNoal
    @MaximilienNoal Год назад +1

    When targeting WASM, C# is compiled ahead of time. There is no JIT, no GC.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Thank you for the information.
      Have you seen what else Rust can do? I tried to cover many topics here: ruclips.net/video/0rJ94rbdteE/видео.html

  • @WizardofWestmarch
    @WizardofWestmarch Год назад +2

    At the end where you are talking about where rust runs probably would be wise to mention for valid llvm targets. Until the gcc frontend is done there are still a lot of places rust won't run like a lot of embedded environments

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Oh really, I wasn't aware. There's a bunch of embedded targets it DOES run on though, right? What would gcc get us?

    • @WizardofWestmarch
      @WizardofWestmarch Год назад +3

      @@NoBoilerplate There are some that LLVM runs on yeah, like I believe Pi's. Part of the whole "get Rust into the Rust Kernel" debate was because of the limits in what platforms LLVM allowed. But thanks to them agreeing to allow it for drivers (which clearly not every environment needs drivers) the lack of what targets LLVM allows doesn't matter so much.
      Now mind you some specialized hardware doesn't even get compiled to from GCC, in cases where the hardware vendor actually supplies their own compiler tool chain. That's an area where we may need to see the rust specification that is in the works come through before Rust can make inroads there.

  • @federicodibernardo2719
    @federicodibernardo2719 Год назад +1

    Doom on the phone must be very difficult to play :) interesting content, thank you

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Yes, bit awkward on-screen controller - but possible!

  • @DavidAlsh
    @DavidAlsh 20 дней назад

    One thing I haven't gotten my head around yet with Rayon is blocking the underlying Rayon worker with a channel. With Tokio, async channels allow for the future to pause while the worker executes other tasks while Rayon uses std::sync::mpsc::channel which will block the entire thread if you .recv() on it.
    Can you use Tokio with wasm?

  • @ivanschuetz9458
    @ivanschuetz9458 Год назад +1

    But what about the WASM binary size? I remember that there's an article on some wiki about how to reduce it (compiler optimizations etc), but it still adds quite a bit, for example an optimized WASM file for a web project I'm doing (without any clearly "special" dependencies) is ~2MB..

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Interesting problem. Are you compiling in release mode?

  • @edgeeffect
    @edgeeffect Год назад +1

    0:30 ..... AND on microcontrollers! :)

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Yeah! I should call out microcontrollers specifically, not just say "bare metal" all the time. Brilliant!

  • @i_am_feenster
    @i_am_feenster Год назад +2

    Hi, thanks for another video! Where did you get the statistic that Rust the cheapest language for lambda functions? Seems like a powerful argument to use in a classic "ehh guys, maybe we should start using Rust?" company discussion :)

    • @NoBoilerplate
      @NoBoilerplate  Год назад +2

      Lambda is charged on run time and memory usage. Rust is as fast as C, and with a tiny runtime overhead. THEREFORE: Cheap on lambda!
      My next video, writing now, actually goes in to detail.
      I dread talking about it, because I'll have to talk about benchmarks - always an area of contention!

    • @i_am_feenster
      @i_am_feenster Год назад

      ​@@NoBoilerplate Awesome, looking forward to it! Yeah, I can imagine, folks in general can be quite 'particular' in language discussions :)

  • @bananaboye3759
    @bananaboye3759 Год назад +1

    At 7:39, are you inserting rust code right into the button's onclick attribute? I thought you could only put JS in there.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      amazing, right? Yew is generating some js plumbing code for you! Try the yew.rs tutorial!

  • @marcombo01
    @marcombo01 Год назад +1

    The Yew framework seems cool because of the performance it gives you. But I want some that allows me to work like with React. I mean I want JSX and don't manipulate directly the DOM nodes

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      Please rewatch the second half of the video, this is what Yew does.

  • @Jianju69
    @Jianju69 Год назад +1

    How about a video on using Yew for an app with both web and native targets?

  • @casenc
    @casenc Год назад +2

    Ferb: I know what we're doing today!

  • @AntonioNoack
    @AntonioNoack Год назад +1

    Nice video, but the blue progress bar is kind of superfluous on RUclips, where we already have a red progress bar.

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      I put it there for people in fullscreen - on desktop or mobile, to see where along in the video it is - as the red progress bar disappears!

  • @nahiyanalamgir7056
    @nahiyanalamgir7056 9 месяцев назад +1

    The fact is that many people aren't switching to Rust for frontend for speed (contrary to what people think). Instead, they want a strong codebase where the compiler (and language design) makes runtime errors almost impossible. Anyone who worked with a large React-based project knows how messy it gets over a short time.

  • @3DWithLairdWT
    @3DWithLairdWT Год назад +1

    Have you done any work on Rust for gamedev? I'm looking to learn Rust from a dev angle

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      The game developers on my discord talk about bevyengine.org all the time - try it out!

  • @mattjohnson2975
    @mattjohnson2975 4 месяца назад +1

    1:10 True, but why should javascript even be ported to wasm when it runs directly on browsers anyway?

  • @eduardabramovich1216
    @eduardabramovich1216 Год назад +1

    Quick question, is it possible to create Desktop Environment, like Gnome, KDE for linux, using WASM?

    • @NoBoilerplate
      @NoBoilerplate  Год назад

      in-browser? Very possibly! But you'd have a lot of work to do there!

  • @noblenetdk
    @noblenetdk Год назад +1

    I'm trying to use rust to write files. I have various problems with creating text and files. I would love a video explaining howto work with text (or strings) I find it quite cumbersome in rust. Do you have a video og strings and io?

    • @NoBoilerplate
      @NoBoilerplate  Год назад +1

      Come and chat to us on the Discord - ask your question in #newbie-advice!