This is only glancingly related to the topic of multicore but I figure I’ll venture the question anyways:
There were three big reasons pushing me towards other languages (C++, Rust) for a certain class of throughput-focused workflows:
1. Lack of multicore execution
2. Lack of control over how many bytes a datatype is (useful for many things, like ensuring something fits in a machine word or can avoid chasing a pointer in a loop)
3. Difficulty controlling where memory is allocated/copied vs moved (though some of this is less relevant when everything uses reference semantics and mutability is tracked with ref/mutable)
I’ll be glad to see (1) fading into history! Do you have any personal tips/anecdotes for memory optimizations in practice, or any suggestions for something to read/follow/search?