Maybe we need more than one level of standard library: The core (which is most 
of what we have now (but maybe not all of it) and multiple opt-in standard 
modules for hash functions, math, specialized data structures, etc.

> On Jul 31, 2017, at 11:10 AM, Taylor Swift <kelvin1...@gmail.com> wrote:
> 
> I’m not sure why only the stdlib is inlineable and specializable, but I 
> believe it has something to do with ABI. I’m not an ABI expert though. I 
> strongly disagree that a Swift Math library should be delegated to a third 
> party. Math is “common” enough that there should really only be one 
> “standard” implementation of it, under the direction of the Swift Project; we 
> don’t want 5 competing third party Vector standards.
> 
> On Mon, Jul 31, 2017 at 2:02 PM, Hooman Mehr <hoo...@mac.com 
> <mailto:hoo...@mac.com>> wrote:
> I know. I hear you. I have some special arrangmnents to keep such things 
> manageable, and I am not happy about how things stand right now.
> 
> What I am hoping to open up stdlib special compiler mode to other (low-level) 
> libraries and also letting such libraries gain optimizations similar to 
> stdlib when included in a project.
> 
> So, instead of putting things in stdlib, I want stdlib’s special privileges 
> being made available to a certain category of third-party or internal modules.
> 
> 
>> On Jul 31, 2017, at 10:54 AM, Taylor Swift <kelvin1...@gmail.com 
>> <mailto:kelvin1...@gmail.com>> wrote:
>> 
>> Isn’t the point of standard inlineable library module to prevent the need to 
>> copy and paste code like this into every project? Currently I have a 
>> “math.swift” file I copy and paste into all of my projects, and since I 
>> occasionally update it, there exists about 15 different versions of it 
>> floating around, so I know this is not a sustainable practice.
>> 
>> On Mon, Jul 31, 2017 at 1:45 PM, Hooman Mehr <hoo...@mac.com 
>> <mailto:hoo...@mac.com>> wrote:
>> I prefer an approach that preserves how I am used to seeing math 
>> expressions. I use this myself:
>> 
>> protocol FloatingPointMath: FloatingPoint
>> {
>>     static func sqrt(_ value: Self) -> Self
>> 
>>     static func sin(_ value: Self) -> Self
>>     static func cos(_ value: Self) -> Self
>>     static func tan(_ value: Self) -> Self
>>     static func asin(_ value: Self) -> Self
>>     static func acos(_ value: Self) -> Self
>>     static func atan(_ value: Self) -> Self
>>     
>>     static func ln(_ value: Self) -> Self
>>     static func log(_ value: Self, base: Self) -> Self
>>     static func pow(_ value: Self, exponent:Self) -> Self
>>     static func exp(_ value: Self) -> Self
>> }
>> 
>> It does not pollute the global namespace and gives nice contextual 
>> auto-completion.  And I don’t want it in the standard library: I only add 
>> the file when I need it. (it is not a separate module for optimization 
>> reasons).
>> 
>>> On Jul 31, 2017, at 10:29 AM, Taylor Swift via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> 
>>> 
>>> On Mon, Jul 31, 2017 at 1:23 PM, Adrian Zubarev 
>>> <adrian.zuba...@devandartist.com <mailto:adrian.zuba...@devandartist.com>> 
>>> wrote:
>>> I’m not sure how I would feel about this. To be honest I’d avoid such 
>>> additional changes from the stdlib, because they really don’t belong there. 
>>> Instead some `Math` module/package would be a better fit than clustering 
>>> everything into stdlib until we end up also adding UI stuff.
>>> 
>>> Furthermore, I don’t think a function would make any sense here. It really 
>>> should be a computed property.
>>> 
>>> 
>>> 
>>> I think a standard Math module would be a good idea, but only if it 
>>> benefits from the same inlining and specialization as the standard library. 
>>> Also squareRoot() should be moved to the Math module if it is ever created.
>>>  
>>> Am 31. Juli 2017 um 19:03:49, Taylor Swift via swift-evolution 
>>> (swift-evolution@swift.org <mailto:swift-evolution@swift.org>) schrieb:
>>> 
>>>> How would people feel about adding a protocol
>>>> 
>>>> protocol MathFloatingPoint:FloatingPoint
>>>> {
>>>>     func sin() -> Self
>>>>     func cos() -> Self
>>>>     func tan() -> Self
>>>>     func asin() -> Self
>>>>     func acos() -> Self
>>>>     func atan() -> Self
>>>> 
>>>>     func ln() -> Self
>>>>     func log(base:Self) -> Self
>>>>     func pow(exponent:Self) -> Self
>>>>     func exp() -> Self
>>>> }
>>>> 
>>>> to the standard library? Float and Double would then be made to conform by 
>>>> default using Swift implementations instead of having to import Glibc / 
>>>> Darwin and writing the extensions, depending on platform.
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> 
> 
> 

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

Reply via email to