Good job, I have some questions that maybe someone can/want to answer:
> The -d:release switch now does not disable runtime checks anymore
why? Is this to avoid the criticism of undefined behavior? does -d:danger do
the same that previously release did?
> Implicit imports via --import: module in a config file are now restricted to
> the main package.
What does that mean? Does something like
path = "$projectDir/../../OtherProject"
import = OtherProject/Blah
Run
still work?
> With the exception of uint and uint64, conversion to unsigned types are now
> range checked during runtime.
Do you mean conversion between different sizes like in int32 -> uint8, or int8
-> uint8 ?
> const x = uint32(-1) now gives a compile time error instead of being
> equivalent to const x = 0xFFFFFFFF'u32.
This was really useful, shall we rely now on cast[uint32](-1) ?
> procs string.add(int) and string.add(float) which implicitly convert ints and
> floats to string have been deprecated. Use string.addInt(int) and
> string.addFloat(float) instead.
What's the reason behind this decision? This looks redundant to me, sure there
must be an explanation on why is needed. Can't the compiler figure out when a
variable/literal is of type int/float?
I think that's all.