On Jul 18, 2017, at 1:00 PM, Daryle Walker via swift-evolution 
<[email protected]> wrote:
>> On Jul 17, 2017, at 3:26 AM, Félix Cloutier <[email protected]> wrote:
>> 
>> I think that you're getting ahead of yourself. Fixed-size arrays are still 
>> useful even if they have to have been demonstrably initialized before you 
>> can use dynamic indices with them. A ton of people have already gotten into 
>> the habit of writing `int foo[40] = {}` in C.
> 
> The person with the initial suggestion regrets this habit and deliberately 
> doesn’t want it. In other words, don’t support the waste of cycles to 
> pre-initialize just for the elements to be immediately paved over with the 
> real initial data. And we may make arrays of types that are heavy to 
> initialize and may not have a default initializer, so even using a 
> default-value term at declaration will lead to a big waste of cycles.
> 
> We eventually have to decide how to modify deterministic initialization. Do 
> we take the safe path with dynamic deterministic initialization (and add 
> extra resources)? Or the fast path with suspension of checks (and risk 
> undefined behavior)? We’re probably going to lean toward the former, 
> especially since we can limit its scope (and therefore cost).

In my opinion, there is an easy three step plan :-) to solving this problem, 
riffing on Array:

1) Fixed size arrays should have an initializer to init all the elements to 
some concrete value.
2) They should have an init that takes a closure, and runs it once per element, 
passing in the index.
3) Either through a magic value or a third initializer, it should be possible 
to *explicitly* create a fixed size array with uninitialized garbage for the 
elements.  This is important for specific optimizations, and should also come 
to Array as well.

IMO, it isn’t a problem that C allows arrays to be uninitialized - the problem 
is that it is a really bad default.

-Chris


_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to