Sign in

AapoAlas

@aapoalas.trynova.dev
490 followers 202 following 1K posts

Nova JavaScript engine developer and OSS contributor by day and night. Avid choir singer. He/him. Give me data-oriented design or else (I will cry). trynova.dev

PostsRepliesMedia
AapoAlas @aapoalas.trynova.dev · 28/08/2026
I've sort of assumed it's not done because of safety considerations, but I'm not sure.
000
AapoAlas @aapoalas.trynova.dev · 28/08/2026
Is there any way to cut the Gordian Knot: get WebComponents to render correctly without complex de-shadowification logics, use the native browser print for speed, but avoid blocking the entire website while the user fiddles with their print settings?
100
AapoAlas @aapoalas.trynova.dev · 28/08/2026
Doing that also takes a ton of time so it's not exactly efficient. The native browser print is lightning fast, but if you use print() to trigger it then you get blocking - and for some applications that is a critical safety issue. Conversely Ctrl+P does not allow for any async work before printing.
100
AapoAlas @aapoalas.trynova.dev · 28/08/2026
You can make a copy of the HTML (or the DOM structure and calculated styles) and open it in another window, but it will have to import the WebComponents to render them correctly: that requires JS, at which point CORS/CSP will stop you. Same thing with using pdfjs or equivalent.
100
AapoAlas @aapoalas.trynova.dev · 28/08/2026
Internet, I need your help with #HTML, #JavaScript, #WebComponents, and printing! So you know how the print() method blocks while the dialog is open? How do you deal with that in an application where you have user expectations of a print button (to select what is being printed), and WebComponents?
121
Reposted by AapoAlas
Rust Language @rust-lang.org · 26/08/2026
We are very happy to announce our first Maintainers in Residence and Maintainer Grant recipients! Read all about the MiR program and the selected maintainers on our blog: blog.rust-lang.org/2026/08/26/a...
blog.rust-lang.org
Announcing our first Maintainers in Residence | Rust Blog
Empowering everyone to build reliable and efficient software.
07517
AapoAlas @aapoalas.trynova.dev · 23/08/2026
If you're interested, I can recommend (as a not-really involved party) the Oxide Computer company's Hubris OS for comparison: I think the repo includes all firmware to run their rack with the exception of the AMD CPU bootup related stuff. The amount of unsafe code was below 5% IIRC.
github.com
GitHub - oxidecomputer/hubris: A lightweight, memory-protected, message-passing kernel for deeply embedded systems.
A lightweight, memory-protected, message-passing kernel for deeply embedded systems. - oxidecomputer/hubris
120
AapoAlas @aapoalas.trynova.dev · 22/08/2026
Rewatching Hikaru no Go for the first time in ages (though I've read the manga every year or two) is such a nice experience <3 Makes me want to play again! But first I should finish my two go boards!
020
AapoAlas @aapoalas.trynova.dev · 22/08/2026
All according to keikaku! TL note: keikaku means "plan".
000
AapoAlas @aapoalas.trynova.dev · 17/08/2026
No, just JS things: ~100 bytes on temporary objects (immediately passed to a Node addon so necessarily created) that can be replaced with a mutated singleton, ~150 bytes on replacing a normal function + context based capturing with a class instance with explicit capturing and .bind(this).
010
Reposted by AapoAlas
Frans Mäyrä @fransmayra.bsky.social · 17/08/2026
It is great to hold our new book - Cultural Game Studies - on one’s hands, even if the Open Access pdf version will most likely be the most used edition. - Link to the Open Access book page below: www.taylorfrancis.com/books/oa-edi...
A pile of paperback and hardback copies of “Cultural Game Studies” book.Photo of the opened book, showing some black and white reproductions of games as art / art related to games.
24717
AapoAlas @aapoalas.trynova.dev · 17/08/2026
A smallish refactoring in a Node.js server application saved me 272 bytes per HTTP request. That's pretty nice, I think. Or at least it made me happy :)
150
AapoAlas @aapoalas.trynova.dev · 12/08/2026
The reason I've been gathering followers on social media? To share this beauty of course! youtu.be/4bOBMJVFGpU
youtu.be
赤ずきんと健康 英語字幕版 Little Red Riding Hood and Health
YouTube video by Tanoshimida / 井上涼公式チャンネル
010
AapoAlas @aapoalas.trynova.dev · 08/08/2026
I was interviewed at #RustWeek if you want to hear me talk about things :) #RustLang
youtu.be
RustWeek Interview: Aapo Alasuutari
YouTube video by Rust Programming Language
170
AapoAlas @aapoalas.trynova.dev · 06/08/2026
I think the answer is "no, but it's a prerequisite for fixing it". Either that or it was next-gen trait solver (also close to nightly merge) that would fix it...?
010
AapoAlas @aapoalas.trynova.dev · 03/08/2026
Roughly yeah. (And oops, that was supposed to be BaseClass.) But because Rust has (currently anyway) subobject provenance for references, it's more like a `NonNull<dyn BaseClassImpl>` where BaseClassImpl is the trait defined by the BaseClass's virtual methods.
010
AapoAlas @aapoalas.trynova.dev · 03/08/2026
TIL in C++ `BasClass&` can be created from a `Derived&`, thereby it does dynamic dispatch through the vtable instead of the reference being a guarantee that static dispatch is enough. Huh. This proves to be a mild issue with my C++/Rust interop crimes.
120
AapoAlas @aapoalas.trynova.dev · 01/08/2026
People don't change: in my Rust/C++ interop crimes I wanted to build an enum over "one-shot Request" vs "multi-response Request" even though both are just a C++ Request object at its core. An epiphany: this is what I always do in TypeScript as well! No wonder it felt so familiar and safe!
040
AapoAlas @aapoalas.trynova.dev · 31/07/2026
Indeed, Rust has untyped memory so it's for instance correct for &usize, &*const T, &f64, &(bool, u32) and even I think &Cell<u64> to all alias at the same time: the Cell is questionable as any mutation would have the other references see mutations under & and therefore UB. Rust memory = just bytes
040
AapoAlas @aapoalas.trynova.dev · 31/07/2026
Oh, I had completely missed that gccrs is also a thing and aims to become a complete Rust compiler in the long term as well.
020
AapoAlas @aapoalas.trynova.dev · 28/07/2026
That's definitely true. Somebody (possibly a little ... sitting sideways on their rocker?) should start a real competing Rust compiler I guess :D Though I guess arguably krabby could become a competing compiler.
010
AapoAlas @aapoalas.trynova.dev · 28/07/2026
There is a smattering of projects of various aims and sizes: mrustc, dozer, and krabby at least.
120
AapoAlas @aapoalas.trynova.dev · 28/07/2026
Not sure if relevant, but have you seen Anneal? It's a project combining Rust and Lean.
000
AapoAlas @aapoalas.trynova.dev · 28/07/2026
I don't know, but you _might_ enjoy gc-arena: it's more about GC than async, but it's implemented as a pre-empting system that produces what I think is similar to Go's asynchrony. Of course it is much more verbose than Go itself would be - maybe Rust coroutines might eventually help with that?
110
AapoAlas @aapoalas.trynova.dev · 20/07/2026
What's that? Also, the crimes are unfortunately in closed source (aside from that library that I wrote over a weekend day).
110
AapoAlas @aapoalas.trynova.dev · 20/07/2026
Life and people are weird, gotta just accept it all and say thank you at the end :)
000
AapoAlas @aapoalas.trynova.dev · 20/07/2026
It's quite the thrill, I say. I already started a library to make std:: function creation cross-platform, and now I'm honestly thinking I might need a library that auto-mangles function signatures into link_name attributes. Now that'd be fun!
github.com
GitHub - aapoalas/cxxfn: Infect your Rust with C++'s `std::function`!
Infect your Rust with C++'s `std::function`! Contribute to aapoalas/cxxfn development by creating an account on GitHub.
020
AapoAlas @aapoalas.trynova.dev · 20/07/2026
So lately I've been having obscene amounts of fun during absolutely hair-brained and -raising FFI crimes between Rust and C++. "Look ma, no C ABI!" Just going in raw, binding to C++ ABIs, inheriting C++ classes, creating C++ template instances like std::function's, all that good jazz direct in Rust.
292
AapoAlas @aapoalas.trynova.dev · 20/07/2026
As a full-on Rust user: Zig is really good and I want to steal their best parts for Rust. I also hope they steal the best parts of Rust for Zig, though it seems that is not really what they want to do.
110
AapoAlas @aapoalas.trynova.dev · 20/07/2026
Huh, that really is the issue name. A bit combative if you ask me, but I'm a big wuss after all :D
010
AapoAlas @aapoalas.trynova.dev · 20/07/2026
Hopefully I can make the case at my work place in the future as well :)
000
AapoAlas @aapoalas.trynova.dev · 20/07/2026
Also, if you're a company using Rust then please consider donating to the project. A personal recommendation: the next gen trait solver and Move trait work could perhaps use some targeted funding. That work has the possibility of massively improving async code ergonomics <3
120
AapoAlas @aapoalas.trynova.dev · 20/07/2026
On the reviewer side (libs, not compiler though) I must say I wouldn't appreciate big LLM PRs explained with volumes of text and whatnot. But also: hell yeah if we got more high quality performance optimisation contributions in the compiler! LLM-based or otherwise.
110
AapoAlas @aapoalas.trynova.dev · 03/07/2026
Happens more often than you'd guess in real life as well!
020
Reposted by AapoAlas
RustNL @rustnl.bsky.social · 29/06/2026
'Can I borrow that? (Reborrow traits)' by Aapo Alasuutari at RustWeek 2026! www.youtube.com/watch?v=2GE0... @aapoalas.trynova.dev #rustlang #RustWeek
youtube.com
Can I borrow that? (Reborrow traits) (Aapo Alasuutari at RustWeek)
Can I borrow that? (Reborrow traits) by Aapo Alasuutari. Exclusive references make Rust, yet they cannot be built within Rust: the core act of reborrowing, that is giving temporary exclusive access…
061
AapoAlas @aapoalas.trynova.dev · 23/06/2026
So I'm taking a choir conductor camp, and in the same music camp is a man who is a total doppelganger of a coworker of mine, like not just looks similar but they really look like a clone sometimes! Turns out: they're identical twins. I guess that explains that.
000
AapoAlas @aapoalas.trynova.dev · 23/06/2026
I should really read that one. I forgot to order it
010
AapoAlas @aapoalas.trynova.dev · 23/06/2026
Oh boy, it's such a great book! My absolute favourite. When I finished it originally I just had to send the author a thank you note on Twitter: too bad it wasn't her but some British athlete. Luckily later I got the chance to deliver the note though a friend <3
020
Reposted by AapoAlas
RustNL @rustnl.bsky.social · 19/06/2026
'Common Pitfalls of Rewriting Things In Rust' by Cliff L. Biffle at RustWeek 2026! www.youtube.com/watch?v=Wv88... #rustlang #RustWeek
youtube.com
Common Pitfalls of Rewriting Things In Rust (Cliff L. Biffle at RustWeek)
Common Pitfalls of Rewriting Things In Rust by Cliff L. Biffle. While a lot of systems code can be expressed easily in Rust, there are common patterns from C, C++, and Go that are just more effort…
0244
AapoAlas @aapoalas.trynova.dev · 12/06/2026
Useful!
010
AapoAlas @aapoalas.trynova.dev · 20/05/2026
Out of context: yes! Power to your ass!
090
AapoAlas @aapoalas.trynova.dev · 14/05/2026
Someone also had done a cloc comparison which discounted comments and found that the new Rust code had quite a bit more comments, as perhaps expected of LLM output.
040
Reposted by AapoAlas
RustNL @rustnl.bsky.social · 07/05/2026
The very first RustWeek 2026 badge!
0252
AapoAlas @aapoalas.trynova.dev · 07/05/2026
So in other news today, I had a terrible/fun time with figuring out printing of WebComponent elements in response to a user button click without blocking the event loop! Can't use print() because it blocks, can't use iframe.src URL because it loses DOM state. Painful world out there!
010
Reposted by AapoAlas
Jonathan Pallant @thejpster.org.uk · 03/05/2026
This paper finds that Rust on an microcontroller costs you about 10% extra flash space, actually saves you a bunch of RAM, and takes no extra time to deliver (as compared to C). Seems about right - especially as the C version needed a heap and the Rust version did not. arxiv.org/pdf/2604.25679
arxiv.org
57514
AapoAlas @aapoalas.trynova.dev · 30/04/2026
A night in the light. Terrible photography, but a beautiful scene. Also an obscenely warm end-of-April night that feels nearly tropical.
Full moon reflected off a still night-time lake.A full moon halo reflected dimly off a lake, otherwise mostly enshrouded in complete darkness.A frog rustling in the dry leaves next to the person taking the pictures.
010
AapoAlas @aapoalas.trynova.dev · 28/04/2026
Music for today: youtu.be/-8jFKl0GPh8?... Everything begins with tomorrow
youtu.be
Kaikki alkaa huomisesta
YouTube video by Kuusumun Profeetta - Topic
000
AapoAlas @aapoalas.trynova.dev · 25/04/2026
Yeah, not that I'm massively experienced in this area but just like exceptions are (I assume) hard to reason about due to being "implicit" in the code, unwinding is too. Rust std does a great job of thinking about unwinding usually, eg. see Vec::retain_mut, but it's easy to forget still.
000
AapoAlas @aapoalas.trynova.dev · 17/04/2026
Morning commute at 5:45 with the birds.
030
Reposted by AapoAlas
Mara Bos @mara.bsky.social · 16/04/2026
I'm *very* excited to report that we got initial funding and have hired our first Rust maintainers! RustNL's Rust Maintainers Team starts out with two full time maintainers, one intern, and five part-time maintainers, now stably employed to continue their work on Rust! 🎉 rustnl.org/maintainers/
Screenshot of the website, listing the eight team members: Oli (full-time), Waffle (full-time), Tiffany (intern), Mara (part-time), Jana (part-time), Nia (part-time), Bjorn (part-time), and Folkert (part-time).
420332