NINETY DAYS
NINETY INCIDENTS
NINETY PERCENT
YOU PAID FOR ALL FIVE NINES BUT YOU’LL ONLY NEED THE EDGE
| Cocoaphony Blog | https://robnapier.net |
| GitHub | https://github.com/rnapier |
| Twitter (defunct) | https://twitter.com/cocoaphony |
NINETY DAYS
NINETY INCIDENTS
NINETY PERCENT
YOU PAID FOR ALL FIVE NINES BUT YOU’LL ONLY NEED THE EDGE
RE: https://mastodon.social/@lapcatsoftware/116278367466232058
For me, the StM feature that’s worth the whole price. Everything else is just bonus. I hate autoplay videos so much.
I'm starting to wonder if it's related to number of modules? We have maybe 100 product dependencies over maybe 80-ish packages. If I remove some, it works. I thought it was some specific package, but it seems more related to the count (or maybe it's total package size?) When I add them back in, Previews can't access Foundation types during startup and crashes.
It's big, but it doesn't feel *that* big compared to other products. It happens for Previews in the top-level app.
With latest Swift from main, things go differently. We still bind the first IUO first:
let result = Int? + _ + _ + _ + _ + _
But before we select the next disjunction, we run the new disjunction pruning pass. Since + has no overloads where the first argument matches the type "Int?", we end up disabling all active choices in the first + disjunction.
Now, disjunction selection sees that one of the remaining disjunctions has zero active choices. This means the current partial solution cannot be extended to a full solution no matter what choices we make, so we backtrack.
We attempt the next choice in the first IUO:
let result = Int + _ + _ + _ + _ + _
This time, some choices from the first + disjunction are pruned, but nothing fails. We select the second IUO disjunction:
let result = Int + Int? + _ + _ + _ + _
With these choices so far, pruning is again able to detect that there are no suitable choices for the first + that take an "Int" and an "Int?", so we are left with zero active choices and we attempt the second choice in the second IUO:
let result = Int + Int + _ + _ + _ + _
This continues:
let result = Int + Int + Int? + _ + _ + _
let result = Int + Int + Int + _ + _ + _
let result = Int + Int + Int + Int? + _ + _
let result = Int + Int + Int + Int + _ + _
...
let result = Int + Int + Int + Int + Int + Int
At this stage, we've bound all the IUO disjunctions in linear time, and only the + disjunctions remain.
The optimizations that were already existing in Swift 6.3 take over. Disjunction selection favors the (Int, Int) -> Int overload choice in each +, these favored choices succeed, and the rest of the problem is solved without further backtracking.
I took a screenshot of this post last week which predicted layoffs at Atlassian including that it would be spun as AI driven layoffs.
Essentially a lot of software companies now have to pay the price for COVID overhiring and AI is a great justification. Amazon and Block led the way but they won’t be the last.