As another aside I was storing many Strings that didn’t need modification in a hashmap and found that Box saved significantly more space! Since I didn’t incur the additional information that needs to be added to a String. Neat trick if anything is strapped for space and knows they don’t have to modify their string data (there are also several crates that do something similar)
Interning was relevant in a few languages I used in the past, an optimization mostly.
Since then it’s been something that I’ve used for performance in some tricky situations where I knew the string cardinality was limited. In a “big data” context you’ll see people talk about dictionaries which is related.
This is a very interesting post! One takeaway is that you don’t need to re-write the world. Transitioning new development to a memory safe language can bring meaningful improvements. This is much easier (and cheaper) than needing to port everything over in order to get an effect.
agree! I love rust, but swift’s interop story with cpp is very intriguing. Facebook shared in a podcast about the difficulties of cpp interop with rust’s async await paradigm. I feel the hard problem is Cpp being difficult to use as a lingua franca.
Oxide rolls their own silicon when :) ?
Silica, if you will
As another aside I was storing many Strings that didn’t need modification in a hashmap and found that Box saved significantly more space! Since I didn’t incur the additional information that needs to be added to a String. Neat trick if anything is strapped for space and knows they don’t have to modify their string data (there are also several crates that do something similar)
This starts rubbing up against string interning more generally doesn’t it?
Huh, I’ve never heard the term before. I guess it absolutely does!
Interning was relevant in a few languages I used in the past, an optimization mostly.
Since then it’s been something that I’ve used for performance in some tricky situations where I knew the string cardinality was limited. In a “big data” context you’ll see people talk about dictionaries which is related.
Neat! thanks for the knowledge :)
I love anyhow, but his seems like a pretty big footgun.
I wrote up some documentation on how all this works and known issues here: https://docs.fedoraproject.org/en-US/fedora-asahi-remix/x86-support/
You can also watch Alyssa’s talk at XDC2024 here: https://www.youtube.com/watch?v=pDsksRBLXPk (starts around ~20 minutes after stream start).
Thank you to everyone who worked to make all this possible! ^^
Wow… Fallout 4 on Linux on an M1. I would never have thought that possible. Incredible!
ya’ll are awesome! Inspired me to learn rust and get into hardware more!
I don’t have anything insightful to add but I’d like to say anyway that this is incredibly impressive.
love what you Asahi guys are doing! next level stuff
Very very nice! I sponsor one of you (sorry, I forget who… probably multiple) on github for a reason!
What’s the priority (if any) on getting these things working on the M3 or the soon-to-be-released M4? (and of course the Pro and Max variants)
The way the blogpost just drops well-known AAA games inline while discussing the latest efforts is hilarious.
Keep on hackin’!
This is a very interesting post! One takeaway is that you don’t need to re-write the world. Transitioning new development to a memory safe language can bring meaningful improvements. This is much easier (and cheaper) than needing to port everything over in order to get an effect.
agree! I love rust, but swift’s interop story with cpp is very intriguing. Facebook shared in a podcast about the difficulties of cpp interop with rust’s async await paradigm. I feel the hard problem is Cpp being difficult to use as a lingua franca.
hunting for a rust job!