mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
- `system.substr` now uses `copymem` when available, introducing a small template for nimvm detection (#12517 #12518) - Docs are updated to clarify behaviour on out-of-bounds input - Runnable examples cover more edge cases and do not repeat between overloads - Docs now explain the difference between overloads What bothers me is that the `substr*(a: openArray[char]): string =` which was added by @beef331 is practically an implementation of #14810, which is just a conversion from `openArray` to `string` but somehow it ended up being a `substr` overload, even though its behaviour is totally different, _the "substringing" is performed by a previous step_ (conversion to openArray) and the bounds are not checked. I'm not sure it's that great for overloads to differ in subtle ways so much. What are the cases that `substr` covers now, that prohibit renaming it to `toString` (or something like that)?