Conceptually they are almost identical, though Virgil has explicit source syntax for making a subrange. One important difference, according to [1] Span<T> can only live on the stack. There are no lifetime restrictions for Range<T> in Virgil.
[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2018...