IssueRaiser

Critical issues before stabilization

I wanted to put together a more technical list of issues to be solved before we can stabilize (see rust-lang/rust#86656). There are many more important issues like performance on some targets, or important missing functions, but IMO those don't prevent stabilization. In this list I've trimmed down the issues to major API-related issues that can't be changed, or are difficult to change, after stabilization. ### Issues to be solved - **Restricting the number of lanes**. In my opinion, the `LaneCount<N>: SupportedLaneCount` bound makes the API exceptionally cumbersome. I've also had some trouble writing generics around it, particularly when making functions that change the number of lanes (the trait solver sometimes simply fails). Adding the bound often feels like boilerplate, and I found myself looking for ways to launder the bound, like adding unnecessary const parameters. Making this a post-monomorphization error (I found rust-lang/lang-team#195 helpful) might be the way to go, or perhaps there's a way to make a const fn panic. Cons: the trait bound is very explicit and hiding the error states could possibly do more harm than good when identifying the source of a build failure. - **Mask element type**. I'm not confident that the mask type for `Simd<f32, N>` should be `Simd<i32, N>` (see rust-lang/portable-simd#322 for discussion). I think it would be much more straightforward if the types simply matched. Cons: this would require an extra cast when using `i32` masks

Posted by calebzulawski on Sep 10, 2023, 4:41 PM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.2,000 issues0 comments

reliability (Other)

Critical issues before stabilization

calebzulawskiSep 10, 2023, 4:41 PM

I wanted to put together a more technical list of issues to be solved before we can stabilize (see rust-lang/rust#86656). There are many more important issues like performance on some targets, or important missing functions, but IMO those don't prevent stabilization. In this list I've trimmed down the issues to major API-related issues that can't be changed, or are difficult to change, after stabilization. ### Issues to be solved - **Restricting the number of lanes**. In my opinion, the `LaneCount<N>: SupportedLaneCount` bound makes the API exceptionally cumbersome. I've also had some trouble writing generics around it, particularly when making functions that change the number of lanes (the trait solver sometimes simply fails). Adding the bound often feels like boilerplate, and I found myself looking for ways to launder the bound, like adding unnecessary const parameters. Making this a post-monomorphization error (I found rust-lang/lang-team#195 helpful) might be the way to go, or perhaps there's a way to make a const fn panic. Cons: the trait bound is very explicit and hiding the error states could possibly do more harm than good when identifying the source of a build failure. - **Mask element type**. I'm not confident that the mask type for `Simd<f32, N>` should be `Simd<i32, N>` (see rust-lang/portable-simd#322 for discussion). I think it would be much more straightforward if the types simply matched. Cons: this would require an extra cast when using `i32` masks

Comments (0)

No comments yet. Start the discussion.

Comment on this issue