CGlue 0.3 now supports Future, Stream, and Sink in version 0.3! They're not only safe, but also, relatively fast. All this took around a year to build, and I may now explain the keys to the async. Recap CGlue is an ABI safety solution, that focuses on expressing dynamic trait objects in a stable manner. A #[cglue_trait] attribute is added to a trait, which triggers CGlue's code generator to spit out C-ABI wrappers. These wrappers can then be used to build plugin systems, and with cglue-bindge...| blaz.is
I recently read 2 of Eckhart Tolle's books - "The Power of Now" and "A New Earth". Without a doubt, some of the most important books I've read in a really long time. Instead of trying to explain them through content, though, let me lead you through a hypothetical scenario. Imagine you are a God. The whole reality, the whole universe, everything is your creation. Every person you know, every concept you grasp, everything is a reminiscent of the world beyond, the world outside the dream you liv...| blaz.is
I'm extremely proud to announce the first release of mfio, mfio-rt, and mfio-netfs! This is the most flexible Rust I/O framework, period. Let's get into it, but before that, warning: this is going to be a dense post, so if you want a higher level overview, check out the release video :) mfio is an ambitious project that builds on the ideas of No compromises I/O. In the YouTube video, I say mfio is a framework defined by 2 traits, so, let's have a look at them: #[cglue_trait] pub trait PacketI...| blaz.is
In my previous post I made a fairly inaccurate attempt at describing one of the primary problems plaguing current async ecosystem and an idea of solving it. Redditors criticized me, and rightfully so - the post was written in one go without giving it time to rest and the solution was not optimal. So I thought about it more, and I think I am on to something. Recap The core premise of my original post was stating that Send+Sync are constructs that work at thread boundaries and don't map well to...| blaz.is
If you've done any async programming in Rust, you will have encountered the problem, where you can't run tokio::spawn, because the future cannot be sent between threads safely. This is a tale about why this problem exists, how it could be solved for good, and why it's not trivial to do without breaking existing code. Rust Thread Safety Rust ensures thread safety through 2 really ingenious mechanisms - lifetimes and Send/Sync traits. We won't talk about lifetimes, but we will instead focus on ...| blaz.is
I've always been a strong proponent of dynamic linking, and last month a new Rust proposal dropped - interoperable_abi. It sparked discussions, plans forward, and my excitement was immeasurable. Then, one member said something that got me thinking. And after much thinking, I don't think ABI is what we need today. What we need is type information. Let me explain. Preface Rust has been a black hole of programming for many years - everything is being rewritten in it, and for a good reason - Rust...| blaz.is
"Mr. h33p, what kind of substance are you on? All I want is 2 simple read/write functions!", said everyone in the room. Well, if you just let me get into the weeds, I'll tell you why that's not enough, and why we can do much, much better. Preface Happy holidays, everyone! I/O is at the heart of memflow - it is the path from read/write invokation on a virtual process all the way to low level LeechCore calls. That path may cross several translation steps, it may even cross machines through netw...| blaz.is
Edward Snowden's autobiography is a story about young man's journey leading up to arguably one of the most important events of the second decade, a story about rejection of evil, a story about rejection of being complicit, a story about standing up, even though all the cards are stacked up against one. Welcome to the book club! This is the first installment of the series, far too long coming, but it's finally here! We are starting with "Permanent Record", because Ed's story is one of the more...| blaz.is
If you've been following me, you probably noticed I have gone silent. I wish I was able to say it was a massive project that is done now and I'm ready to share it with the world, no, I simply didn't do anything. Until April I had my dissertation, and after that, I've been simply not living up to my standards. It's fun and all to float around, but one day you will have to pick yourself up and do everything you have put off, which for me, is far too many things. Why don't we simply start today?...| blaz.is
What If We Pretended That a Task = Thread?| blaz.is