[swift-evolution] Optimization attributes
Jacob Bandes-Storch
jtbandes at gmail.com
Thu Jan 7 16:10:03 CST 2016
Would these be more appropriate as scoped modifiers similar to
#available(...)?
func foo() {
...
#unchecked {
// stuff in here is unchecked
}
}
On Thu, Jan 7, 2016 at 1:55 PM, Charles Kissinger via swift-evolution <
swift-evolution at swift.org> wrote:
> I wanted to float the idea of adding new attributes for function and
> method declarations that would allow various safety checks to be turned off
> (or on) at the level of individual functions. Examples of such attributes
> would be:
>
> @uncheckedmath // integer overflow
> @uncheckedbounds // array bounds
> @unchecked // no safety checks, equivalent to -Ounchecked
> @fastmath // if the —fastmath compiler option becomes available in
> the future
>
> These attributes could have an argument with a value of true or false,
> allowing the global compiler option to be overridden for particular
> functions.
>
> This is primarily motivated by the fact that the -Ounchecked compiler
> option is a very blunt instrument. It globally disables several unrelated
> safety checks such as integer overflow and array bounds checking. And it
> operates only at the level of an entire compilation unit. It is hard to
> reason about all the effects of this option across a large module, and
> isolating specific code to be compiled separately with -Ounchecked is
> inconvenient.
>
> These new attributes would allow specific safety checks to be enabled or
> disabled on a per-function basis. I think the overall effect would be safer
> programs, because developers would be less likely to resort to the global
> -Ounchecked compiler option when searching for better performance.
>
> Are optimization attributes such as these feasible?
>
> -CK
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160107/0e7fcb64/attachment.html>
More information about the swift-evolution
mailing list