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