note: github pages is very slow - after I update gh-pages branch, it takes the old version offline whilst jekyll builds..prebuilt html files. https://book.avr-rust.com/ has been out of commission for the last 10 minutes updating
TODO: need a place for people to raise general ecosystem issues (non-rustc, non crate specific) - feature requests etc
would be good to have a place to track them
agreed... otherwise there's nowhere for me to put bugs...
Or for Ayke to record them if they are just affecting the TinyGo frontend.
but I don't know how much it actually respects #[inline(never)]
The set_high can still be inlined, for example
(I don't really know Rust but I'm assuming it works similar to C here)
yeah but wouldn't that function boundary of test produce the same error?
no, that's a direct call
it's a call within a call?
an indirect call is a function pointer, whenever you're storing a reference to a function and calling it elsewhere
closures are also a kind of function pointer (not sure whether Rust has them tbh)
yeah it does have closures
Ok, I get it now—is there a problem with the VTable for Futures? I've totally skipped over Wakers for now and am just busy-loop polling.
That's a bit out of my Rust knowledge, but normally a vtable is basically an array of function pointers that is usually stored as a global (for virtual functions in C++ for example). Calling a method from a vtable means doing an indirect call (as you're not directly calling the function, but loading the function address from the vtable and calling the function through that).
Again, the compiler will try to optimize the vtable away if possible, which may definitely happen in small programs
You could try looking at the disassembly, if you have any experience with that.