First, I apologize for my general feelings about the Julia suitability for HPC physics simulation: probably not what the OP expected.
I have already mentioned (in the Pros paragraph) the main features that makes Julia so convenient for my work. Functions that are generic by default (duck typing), abstract types for implementation swiches, nice and light syntax for parametric types, first class citizenship for functions, introspection, macros… Each time I have to switch back to C++, I feel like putting on an heavy dragon’s class armor.
I should also mention integrated features like @code_native and @btime that accelerate the tuning of computationally intensive functions. Obviously there are very good tools (vtune, valgrind…) for C++ for profiling or assembly investigation but they are external/commercial tools. The Julia’s ecosystem is also becoming very competitive. For example Makie that allows for rather sophisticated and performant visualizations
Package system of modern languages like Julia (or Rust or Python) does not exist for C++ or Fortran.
Of course they are still some missing features/ perf issues like:
- allocating array views
- OpenCl (Vulkan ?) backends competitive to CUDA’s Julia handling
- Polished multi-threading API
but the Julia’s evolution is so fast that I am pretty confident for the future.