Yup, we're going to try to touch base, the authors of the current draft
that is, sometime this week. More to come, hopefully.


On Mon, Apr 25, 2016 at 8:13 PM, Dave Abrahams via swift-evolution <
swift-evolution@swift.org> wrote:

>
> on Mon Apr 11 2016, Dave Abrahams <swift-evolution@swift.org> wrote:
>
> > on Sun Apr 10 2016, Michel Fortin <michel.fortin-AT-michelf.ca> wrote:
> >
> >> So if you take this into account, storing the comparator as part of
> >> the stride makes the cost more predictable: not only there is one
> >> branch less in `next()`, but you avoid evaluating the condition which
> >> has an unknown cost: the `stride < 0` part.
> >>
> >> And ideally you should make sure the optimizer can replace the
> >> indirect call with a direct call to the comparator. You do that by not
> >> making the comparator choice dependent on a runtime value, hence why I
> >> suggested having distinct "down" variants for the convenience
> >> functions: `stride(from:downTo:by:)` and
> >> `stride(from:downThrough:by:)` and `Range.strindingDown(by:)`.
> >
> > A few points:
> >
> > 1. There's a balance to be struck between making sure the optimizer can
> >    do a good job under *absolutely all circumstances*, and keeping the
> >    API surface area small and simple.  That makes me somewhat reluctant
> >    to add “down” variants, if as I suspect the optimizer does well in
> >    the vast majority of cases without them.
> >
> > 2. Similarly, I view r.striding(by: x) as redundant with stride(from: x,
> >    to: y, by: z).  I'd rather not have them both.
> >
> > 3. The fact that we're migrating C-style for loops to
> >    uses of stride, as noted in https://github.com/apple/swift/pull/2125,
> >    has convinced me that, sadly, we may need an answer that doesn't
> >    involve ranges.  But maybe something like
> >
> >      for x in loop(from: 0.1, while: { $0 < 10 }, next: { $0 + .2 })
> >
> >    is sufficient for this purpose.
>
> After some reflection, I don't really want to see a construct like #3 in
> the standard library, and Chris has clarified for me that the standard
> library doesn't need to solve the migration problems created by the
> removal of C-style “for” loops.  So, if I have inadvertently killed
> progress on this proposal by bringing it up, please allow me to retract
> item 3 above.
>
> I'd love to see the floating-point stride thing solved for Swift 3, but
> the window for changes is getting narrower, so if the community wants to
> move forward with the proposal (and implementation), that would be
> awesome.
>
> Cheers,
>
> --
> Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> 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