kokkos / mdspan

Reference implementation of mdspan targeting C++23
Other
415 stars 69 forks source link

Explain differences from GSL multispan and std::mdspan #17

Closed eyalroz closed 2 years ago

eyalroz commented 4 years ago

The README should make it clear how this implementation is different from what's going into the standard (if it's different), and from the GSL multi-dimensional span, multispan (or at least MS GSL).

mhoemmen commented 4 years ago

I don't want to speak for the main mdspan developers, but as far as I know, the only intended differences between the implementation and the proposed standard come from wanting the implementation to work with earlier C++ language versions. I think it's OK to report any missing features in the implementation as bugs.

eyalroz commented 4 years ago

I wasn't asking for an explanation here, I'm saying that people finding this repo for the first time would be wondering "How is this different from XYZ?" and the README should have the answer.

dhollman commented 4 years ago

@eyalroz This is the first I've heard of GSL multi_span. As far as I can tell, it's deprecated and mostly hasn't been touched in four years. Are you aware of any widespread use of multi_span that would make this a useful point of comparison? I get what your saying, but even to go through every popular multi-dimensional array implementation in a "How is this different from XYZ?" would be a pretty substantial task.

eyalroz commented 4 years ago

@dhollman : GSL is an implementation of the C++ Core Guidelines Support Library. The guidelines are a project started by Bjarne, Herb and other committee members several years ago, and the GSL is a bunch of stuff found useful by the guidelines which doesn't/didn't exist in the standard library.

Microsoft's GSL implementation is quite popular, as you can tell by its number of stars. I don't know how popular its multispan is specifically, since there are no stats for that. I do believe it's the second most popular, so I'm only suggesting writing a "how is this different from" from the two most popular ones.

dhollman commented 4 years ago

Yeah, I'm of course aware of the GSL and the C++ Core Guidelines, and I've read and used both quite extensively. I'm just saying that even though I'm quite familiar with the GSL, this is the first I've heard of multi_span, which doesn't bode well for it's usage. The fact that the entirety of the interface for multi_span is marked deprecated in the latest GSL also isn't a good sign. I've talked with core guidelines authors about mdspan and never heard anyone mention multi_span. In a quick search of GitHub, the only uses I could find of multi_span were in GSL test suites that people had copied into their code bases from the GSL repo.

But all of that said, you make a good point—this is a predecessor to mdspan in that it is committee-tangential and related. I'll look through what Microsoft wrote four years ago and see if I can quickly summarize some key differences.

eyalroz commented 4 years ago

Even a non-exhaustive "this is quite unlike GSL::multi_span, for example in X and Y and Z" would be ok IMHO.