Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This is why Virgil has support for ranges in the language, which are better than slices. They are value types that represent a subset of a larger array. They can also be off-heap, which allows a Range<byte> to safely refer to memory-mapped buffers.

https://github.com/titzer/virgil/blob/master/doc/tutorial/Ra...



Isn't Span<T> the exact same concept?


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...


Memory<T> is the heap compatible version of Span<T> in C# for anyone curious.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: