Write a function to sort an array based on semantic versioning strings.
Treat inputs as valid Semantic Versioning 2.0.0 strings. Sort in ascending precedence order, compare prerelease identifiers according to SemVer rules, and ignore build metadata when determining precedence. Return a new sorted array without modifying the input.
Function signature: def sort_versions(versions):
Input is a list of strings, and output is a list containing the same strings in sorted order.
def sort_versions(versions):