But currently, arr.capacity check depends on the getting block size of GC-heap. (See `_d_arraysetcapacity` in druntime code.)

On the other hand, we have an alternative safe way to shrink array length:
```
arr = arr[0 .. new_len];
```
It is a combination of slicing + binding array reference, and it's totally GC-free.
I think it is reasonable to enforce code rewriting from `arr.length = n;` to `arr = arr[0 .. n];` under the nogc semantics.