Calling Rust code from Python

  Рет қаралды 40,855

Let's Get Rusty

Let's Get Rusty

Күн бұрын

Пікірлер: 110
@letsgetrusty
@letsgetrusty 2 жыл бұрын
📝Get your *FREE Rust cheat sheet* : www.letsgetrusty.com/cheatsheet
@pdblouin
@pdblouin 2 жыл бұрын
I followed a web guide to use Rust code from within a Python Dash web app. It blows my mind how many different ways there are to do things in programming. Makes it very difficult to learn.
@ZZDryno
@ZZDryno 2 жыл бұрын
Can you share link?
@johanngambolputty5351
@johanngambolputty5351 2 жыл бұрын
Well it's modular, you learn the bits you need now - now and the bit you need tomorrow - tomorrow... you don't necessarily need to do it all at once
@mysterry2000
@mysterry2000 2 жыл бұрын
Imo it makes it easier to learn since you have an abundance of choices and can choose which one resonates with you the most
@DmitryRomanov
@DmitryRomanov Жыл бұрын
Just breathe and focus on getting the product (and the next obvious step) done. You will figure it out. Discuss it with somebody from time to time. You will find mentor, and it will work out. Do not forget to focus on the goal of your code, and push for getting the result - the code doing the stuff you want - done. Keep the log, write stuff you learn along the way in a form which will help you to reproduce again it if you get lost. And good luck to you in your journey!
@CJCJCJCJ
@CJCJCJCJ Жыл бұрын
Difficult? Or just more time consuming. Learning assembly is difficult. Having multiple ways of doing one thing is just called having options.
@utsavbasu2501
@utsavbasu2501 2 жыл бұрын
I am slowly moving over to Rust from C++ since I have come to despise the package management in it. Cargo provides easy-to-use package management, which I love dearly. Now I can focus more on the actual logic than worrying about how to link up my whole code. However, sometimes I wish to access Rust's robustness and 'easy-to-use'-ness through C/C++. So, please, it'll be beneficial if you make a video on how to call Rust from C/C++ and vice versa. PS: I really love your videos. If possible, I would love to get in touch with you to discuss Rust's future prospects and how to improve myself in this language.
@stevenhe3462
@stevenhe3462 2 жыл бұрын
I guess Mozilla has some of the best instructions in their Firefox contribution guides.
@TRLYx
@TRLYx 2 жыл бұрын
Love the channel, Bogdan! I kind of just stopped learning Rust until I came across your channel and you’ve reinvigorated my interest. I appreciate your work, my dude!!
@MrMediator24
@MrMediator24 2 жыл бұрын
Wow, timing is perfect, just finishing my diploma where I use PyTorch in Rust
@hariangr
@hariangr 2 жыл бұрын
didn't know you can use pytorch on rust, thx u
@MrMediator24
@MrMediator24 2 жыл бұрын
@@hariangr there's crate tch-rs. Works just like libtorch (since it just bindings for it)
@JoshPeak
@JoshPeak 2 жыл бұрын
This is such an amazingly concise quick start. Did not realise Maturin existed to bridge the tooling between languages so well. Thank you! 🙏🏻
@jabuci
@jabuci 2 жыл бұрын
Important detail: `maturin develop` creates a slow, unoptimized build. Use `maturin develop --release` for fast execution.
@Ryan-xq3kl
@Ryan-xq3kl 2 жыл бұрын
Your content has helped me learn rust tremendously well
@jesusmtz29
@jesusmtz29 2 жыл бұрын
That looks seamless and reasonable. Great demo
@jongeduard
@jongeduard Жыл бұрын
The fact that Rust can build a C compatible shared library, which is what Rust calls a cdylib, is really important. This feature combined with FFI exports enables support not just for C and C++, but for a whole series of other programming languages too. And although I am still quite new to the Rust itself, this realization has already triggered me to explore several things. In this way I know that for Java there is really good JNI crate, and which is also really straightforward to use due to the abstractions in this crate. And if you have ever used JNI in C with the regular header files, and know how much of a serious pain that is to use, then it's actually really great what the authors of the crate have done. But since I am mostly a C# dotnet developer while not being scared to make make hands dirty on low level stuff, I also know how to use libraries with PInvoke, while taking care to use the Cdecl calling convention, mapping correct data type sizes and things like that.
@mutley11
@mutley11 2 жыл бұрын
Wow, I'm constantly diappointed you don't have a merch store or such, because I'm always binge-watching your wonderful content. I would love to see Rust integrated with Lua, as Lua is a wonderful language designed to be embedded into lower-level software environment like C/C++.
@jakobdunnebeil9063
@jakobdunnebeil9063 2 жыл бұрын
More guides on how to integrate Rust into other languages like Dart/Flutter would be great!
@WouterStudioHD
@WouterStudioHD 2 жыл бұрын
Take a look at flutter_rust_bridge. It’s pretty doable.
@jakobdunnebeil9063
@jakobdunnebeil9063 2 жыл бұрын
@@WouterStudioHD Thank you mate
@paulzupan3732
@paulzupan3732 2 жыл бұрын
This is quite possibly the coolest thing I’ve ever seen
@mkvalor
@mkvalor 2 жыл бұрын
Really great content. As I recall, other similar cross language integrations often lose a good bit of performance when jumping between the hidden glue code that allows them to be used together (such as Java with C++). Best practice is to make course-grained functions in the lower-level language (such as rust in this case). This way you do not waste too much time going back and forth across languages before calling the more important function which will do the bulk of the work.
@dazealex
@dazealex 2 жыл бұрын
Really good content. Short and concise!
@ndil-adjimsoungadoy1245
@ndil-adjimsoungadoy1245 2 жыл бұрын
I love the channel and its definitely helping me fall in love with the language! Could you do a similar video to call rust from Node?
@KamyarMohajerani
@KamyarMohajerani 2 жыл бұрын
@ 6:31: shouldn’t it be `.or_insert(0)` instead of 1, as it’s incremented at the first occurrence as well?
@KamyarMohajerani
@KamyarMohajerani 2 жыл бұрын
Never mind I hadn’t watched the whole video lol Thanks for the great work BTW! Your videos are really good.
@Redditard
@Redditard 2 жыл бұрын
@@KamyarMohajerani it happens
@Ned478
@Ned478 2 жыл бұрын
wow, I was looking at tutorials for this a few days ago and couldnt find a great one. Thanks bogdan !
@teagancollyer
@teagancollyer 2 жыл бұрын
Is there any difference between using `pyo3` and `rust-cython` when doing `maturn init`? From what I've understood of pyo3 its using rust-cython anyway. Is one of them more efficient or something.
@aaskxaz4536
@aaskxaz4536 2 жыл бұрын
As a beginner, just trying to watch some Rust: kind of hard to follow when you type and whole screen (because it is zoomed) blinks with completion hints (when you start to write a function and entire docstring pops up).
@gendrik754
@gendrik754 2 жыл бұрын
I've already done so from Java and Kotlin. It was even faster than calling normal c or c++ via JNI.
@giannialbertoagudeloarbela9523
@giannialbertoagudeloarbela9523 2 жыл бұрын
Great video!! Could you please talk about performance or any case that makes it necessary? Thanks!!!
@EngineerNick
@EngineerNick 2 жыл бұрын
This was awesome thankyou :) I'd love more videos integrating with python please! PyO3's type mechanisms for guarding the GIL are unbelievably difficult to understand for more complex tasks... it uses `std::marker::PhantomData` which melted my brain a bit... I gave up trying to understand it.
@ThanhHoQuangCSE
@ThanhHoQuangCSE 2 жыл бұрын
Great content, some how we need another version too: "Calling Python from Rust"
@JOHNSMITH-ve3rq
@JOHNSMITH-ve3rq Жыл бұрын
This but a real life example where we can drop in rust for some kind of expensive function in prod and get some massive juicy speed up
@danielsan901998
@danielsan901998 2 жыл бұрын
an example of using Python from Rust would also be interesting.
@benshapiro9731
@benshapiro9731 Жыл бұрын
My brother, u need some sleep. I understand the grind, but remember to get some rest as well!! Great video, going to use some ideas from this video in the project which I’m hoping to leverage into a job, so thank you for this
@_diversable_
@_diversable_ Жыл бұрын
For a similar domain (data science & ML) but different language, check out Rust, Julia, and the Jlrs crate ! Two new languages, when used together, are insanely easy to prototype & develop with ❤
@lord12790
@lord12790 2 жыл бұрын
How about nodejs and rust?
@guanguolin9249
@guanguolin9249 2 жыл бұрын
I recently tried to use cgo to call rust in the go language, and it worked
@sig0001
@sig0001 Жыл бұрын
concise and to the point
@SB-qm5wg
@SB-qm5wg 2 жыл бұрын
How are you getting all that popup info, auto-complete, and syntax checking in VS code?
@xavhow
@xavhow 2 жыл бұрын
noob here. just wondering which approach is better? 1. python calling rust via pyo binding 2. python calling rust via wasm(wasi)
@KostiantynSalnykov
@KostiantynSalnykov Жыл бұрын
Nice video 👍 Could you do some examples with WebAssembly development?
@jonathanbroadbent1587
@jonathanbroadbent1587 2 жыл бұрын
I have two programs (one in rust and one in python) that I want to package together for a single functionality. Is it generally better to call python from Rust or Rust from python?
@CuriousSpy
@CuriousSpy 2 жыл бұрын
i want to create nodejs package for my work project in rust. Could you please show your vision on how to do it?
@PouriyaJamshidi
@PouriyaJamshidi 2 жыл бұрын
Does calling code like this improve the performance or we're still limited by GIL? For instance, can we benefit from Rust's concurrency and all the other good stuff similar to what Numpy and PyTorch are doing or Python's interpreter gets in the way?
@pokemanic101
@pokemanic101 2 жыл бұрын
Since we are calling outside of Python, I don't see why you wouldn't be able to release the GIL
@PouriyaJamshidi
@PouriyaJamshidi 2 жыл бұрын
@@pokemanic101 I think we’re still depending on Python’s interpreter. But I might be wrong.
@murugarajuperumalla5508
@murugarajuperumalla5508 2 жыл бұрын
Waiting for this
@wihlarkop
@wihlarkop 2 жыл бұрын
thank you for making this video
@kuma9239
@kuma9239 2 жыл бұрын
That is some beautiful tooling. I'm never using c extensions again!
@konstantinta2803
@konstantinta2803 2 жыл бұрын
C# and Rust integration
@thebutlah
@thebutlah 2 жыл бұрын
Good luck - You have to use pinvoke and write C bindings, which kinda sucks
@konstantinta2803
@konstantinta2803 2 жыл бұрын
@@thebutlah yes, I'm aware of the way using Rust from C#. What about using C# from Rust?
@ashutoshgarg9126
@ashutoshgarg9126 2 жыл бұрын
Please do Javascript and rust
@DJenriqez
@DJenriqez 2 жыл бұрын
and tauri,.... :D
@jesusmtz29
@jesusmtz29 2 жыл бұрын
I can't help see when you call `maturin develop` there's a mention of CPython. What is actually happening? Is maturin converting rust code to C code or is it running truly as rust code?
@Alche_mist
@Alche_mist 2 жыл бұрын
I'm not sure if it's what you want to know, but CPython is the standard interpreter for Python (which itself is written in C). So I'd expect maturin to just hook into CPython (the interpreter) with some commands like "if you notice functions exposed from the Rust package being called, call them in the compiled Rust crate here".
@recsysml
@recsysml 2 жыл бұрын
Bogdan, what shell do you use? I love the auto complete in it!
@recsysml
@recsysml 2 жыл бұрын
Also what is the VSCode extension that helps show these types in Rust. Like in minute 7:41 Bogdan writes 0 and it shows "default: 0"
@alextrotta796
@alextrotta796 2 жыл бұрын
I'd like to see you checkout CXX, for interop between Rust and C++.
@sigstackfault
@sigstackfault Жыл бұрын
could you do LUA?
@yashinshekh802
@yashinshekh802 2 жыл бұрын
now rust and python will take over the world 😅 great video.
@uwuzote
@uwuzote 2 жыл бұрын
Wow, that's such awesome ability to use Rust in Python, great! It also would be cool to dive into gamedev in Rust. (sorry for bad english)
@cerulity32k
@cerulity32k 2 жыл бұрын
me, using (or trying to use) CUDA, Rust, and Python all for the same project:
@scritch9549
@scritch9549 Жыл бұрын
This is pretty cool. Does that mean I can control python only APIs by calling python scripts though Rust?
@praenubilus1980
@praenubilus1980 2 жыл бұрын
I want to see the way rust is comile to wasm and them being interoperated by other language. that will apply to more scenarios
@jasonlantz3808
@jasonlantz3808 2 жыл бұрын
sweet.... javascript next...
@white5493
@white5493 2 жыл бұрын
it doesn't work without pyenv :(
@after_alec
@after_alec 2 жыл бұрын
Do Elixir NIFs next!
@stevenhe3462
@stevenhe3462 2 жыл бұрын
Writing Python modules in Rust is dead easy. Searched on Ruby modules and it is much more complicated.
@JarradAB1
@JarradAB1 Жыл бұрын
Awesome!!!!
@roussafiomar5741
@roussafiomar5741 2 жыл бұрын
please can you make tuto about do yeet
@GlobalYoung7
@GlobalYoung7 2 жыл бұрын
thank you
@coolbrotherf127
@coolbrotherf127 2 жыл бұрын
You probably sound like you're talking in another language to anyone who isn't super familiar with these technical terms.
@JulianBolivarGaleno74
@JulianBolivarGaleno74 2 жыл бұрын
Realy excelent video, but how about call C++ libraries on Rust, because are a lot of ML implementations but they are on C++.
@hackermann99
@hackermann99 2 жыл бұрын
I'd like to see Rust code integration in C#
@dmitriidemenev5258
@dmitriidemenev5258 2 жыл бұрын
Добавил в друзья в ВК.
@reellezahl
@reellezahl 4 ай бұрын
This is a decent hello-world presentation! Could you please not be zoomed right in but? I know you have to make it so that people can read, but this level of zoom (which other YTers use too) is too much and frustrating, esp. when you want to "see the big picture" (and esp. when intellisense pops up and blocks half of what is happening).
@empyrean-music
@empyrean-music 2 жыл бұрын
I vote for Javascript as next
@samuelfischer3764
@samuelfischer3764 2 жыл бұрын
please do c from rust
@CT-cx8yi
@CT-cx8yi 2 жыл бұрын
Rust and RISC-V Assembly Rust and C Rust and Nim Rust and Haskell
@nothingisreal6345
@nothingisreal6345 2 жыл бұрын
To bad you have to specifically wrap the Rust code. That limits the possible use. It would be better if Python could simply use Rust object code.
@nebularzz
@nebularzz 11 ай бұрын
why does the facecam kinda look ai generated
2 жыл бұрын
Replace your Python code with Rust.
@vasylpavuk391
@vasylpavuk391 2 жыл бұрын
awsome
@QmVuamFtaW4
@QmVuamFtaW4 2 жыл бұрын
why.
@tedp9146
@tedp9146 2 жыл бұрын
This is basically how every big Python library works. Python is slow and therefore libraries like numpy have to be written in another language but still have to be provided to Python. It’s basically C/C++ code hidden behind a Python interface. This is the same just with Rust.
@l4fourier75
@l4fourier75 2 жыл бұрын
@@tedp9146 But Rust is for its high level really fast
@Alche_mist
@Alche_mist 2 жыл бұрын
@@l4fourier75 Which is why this makes sense - you want something fast (i.e. Rust, C, C++ or in some cases even Fortran) to do the backend work while you call those fast functions from Python, where it is easy to write (but slow to execute in pure Python - luckily, the fast and easier to optimize language does the hard work on the execution) and thus exploit their power.
@prashantm9856
@prashantm9856 11 ай бұрын
Use neovim instead vs code If you are a cool dev❤❤❤
@coldsir5406
@coldsir5406 2 жыл бұрын
No, please no, I had started to learn rust just because I didn't want to learn python
@l4fourier75
@l4fourier75 2 жыл бұрын
Oh.. is Rust your first programming lang?
@coldsir5406
@coldsir5406 2 жыл бұрын
@@l4fourier75 the second one, I've started with JavaScript when I was 14 yo
@l4fourier75
@l4fourier75 2 жыл бұрын
@@coldsir5406 Cool, i´ve been programming python for four years and think of Python as a simple, easy-to-use language, why are u so afraid? Of course, you don´t want to do anything with Python but for simple backend jobs its the best coice
@coldsir5406
@coldsir5406 2 жыл бұрын
@@l4fourier75 Yes, definitely python is really easy to learn and use but all of us have that mania of trying very hard things and languages and experimenting with it, personally I want to invest my time in something harder to learn but in long run to have performance, that's why I chose Rust. Tbh I chose between python and rust :D. My next language will be go or python.
@l4fourier75
@l4fourier75 2 жыл бұрын
@@coldsir5406 That depends on your purposes, e. g. try to design an explorer with CLI in python so that you are able to do any stuff requiring the explorer can be done by your terminal in a easy way, including a module and project template - that is not easy even if u use Python. But i know what you mean, good luck for u, i would recommend you "The Morpheus Tutorials", who really makes the best python tutorials, but he speaks german.
@kamurashev
@kamurashev 2 жыл бұрын
Why spoil something so great as rust with something so ugly as python.
@gustavojoaquin_arch
@gustavojoaquin_arch Жыл бұрын
Zzzzzz Python is dead
@azgan123
@azgan123 2 жыл бұрын
if you're going to interop rust with anything why not interop with language thats not an interpreted pile of junk? XD
@shipudentavo
@shipudentavo 2 жыл бұрын
Because python is one of the most used for things like DataScience and ML.
@azgan123
@azgan123 2 жыл бұрын
@@shipudentavo Its time high time python becomes the least used thing for everything.
@gendrik754
@gendrik754 2 жыл бұрын
what about rust interop in some good ol' aot native binaries for graalvm? could increase overall cloud performance
@kevinmcfarlane2752
@kevinmcfarlane2752 2 жыл бұрын
@@azgan123 That's an ignorant comment. Python has become popular for fields such a ML and Data Science because of the exploratory and iterative nature of those fields. Programming languages are tools. You use appropriate tools for the domain you wish you want to tackle.
@julians.2597
@julians.2597 Жыл бұрын
because very unfortunately for data science we're stuck with python for at least the next 5 years, 😪, so I'll do what every responsible programmer this far has done and write as much of the code in a better language and just the glue code in python.
8 deadly mistakes beginner Rust developers make
14:14
Let's Get Rusty
Рет қаралды 181 М.
uv: An Extremely Fast Python Package Manager
40:34
Jane Street
Рет қаралды 69 М.
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
1% vs 100% #beatbox #tiktok
01:10
BeatboxJCOP
Рет қаралды 67 МЛН
5 deadly Rust anti-patterns to avoid
13:25
Let's Get Rusty
Рет қаралды 40 М.
Rust Experiment Failed - Static Dispatch IS Hard | Prime Reacts
25:44
5 Python Libraries You Should Know in 2025!
22:30
Keith Galli
Рет қаралды 90 М.
Combining Rust and Python: The Best of Both Worlds?
11:08
ArjanCodes
Рет қаралды 77 М.
C++ Super Optimization: 1000X Faster
15:33
Dave's Garage
Рет қаралды 334 М.
C++ vs Rust: which is faster?
21:15
fasterthanlime
Рет қаралды 412 М.
Rust Demystified 🪄 Simplifying The Toughest Parts
14:05
Code to the Moon
Рет қаралды 194 М.
Build your Rust lightsaber
11:51
No Boilerplate
Рет қаралды 163 М.
The Rust Survival Guide
12:34
Let's Get Rusty
Рет қаралды 178 М.