Rust has "an adaptive, iterative merge sort inspired by timsort" to implement the stable sort() method if you have an allocator, and a pattern-defeating quicksort to implement unstable_sort() which is provided even if you don't have an allocator (no_std embedded environments).