> On Nov 2, 2017, at 8:50 PM, Chris Lattner <clatt...@nondot.org> wrote:
> 
> 
>> On Nov 2, 2017, at 9:52 AM, Erik Eckstein via swift-dev 
>> <swift-dev@swift.org> wrote:
>> 
>> Hi,
>> 
>> I’d like to propose to deprecate the -Ounchecked swift optimization mode.
>> 
>> The -Ounchecked mode actually contradicts one of the main goals of swift: to 
>> be a safe language.
>> In the past we didn’t see lot of significant performance differences 
>> compared to -O (there were some improvements but also some regressions).
>> Also, we want to reduce the effort of maintaining too many different 
>> optimization modes, especially because we recently added -Osize.
>> 
>> Deprecating would mean that we map -Ounchecked to -O.
>> 
>> If you have any comments or concerns, please let me know
> 
> What’s the motivation for this?  What problem does it solve?

There are several issues:
First, Ounchecked does not come for free. To really support this mode we would 
have to constantly track performance metrics for this, investigate 
performance/codesize regressions, etc. This is a lot of effort.

So if we replace Ounchecked with an option -unsafe-remove-checks (similar to 
-assume-single-threaded), as Johannes suggested, this is more like a “at your 
own risk” thing (regarding performance). For example, it might happen that 
users see perf regressions from one release to another, using this option.

The second thing is, IMO, that -Ounchecked suggests that it’s just another 
choice like -O. But I think we should encourage people to not use Ounchecked. I 
think it’s fine if experienced developers, who know what they are doing, use 
-unsafe-remove-checks, but we should not promote this mode in a prominent place 
like in the -O namespace. This is just my personal opinion and I’m sure some 
people have other opinions on this.

The third issue is that we now have -Osize. The -unsafe-remove-checks would be 
orthogonal to -O and -Osize.
BTW, we should rename -O to -Ospeed for consistency (keeping -O as an alias for 
-Ospeed).


> 
> Swift isn’t a "strict safety at all costs” language.  It is a pragmatic 
> language which aims to give people tools to solve problems.  One of the nice 
> things about -Ounchecked is that it provides an easy way to get a data point 
> about the cost of runtime checks.
> 
> -Chris
> 

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to