Is the number of coins limited by rule or by computational infeasibility?
No it does not become computationally infeasible, 1 halving per 210.000 blocks leads to a total of 21m due to math.

Bitcoin block reward is 50 for 210.000 blocks then 25 for 210.000 blocks then 12.5 etc. So the total reward is 210.000 * (50 + 25 + 12.5 + ...). Inside the parenthesis is a geometric series which can be rewritten as 50 * (1 + 1/2 + 1/4 + ...).

Now using the formula in the link we have a = 50 and r = 1/2 and the sum of this infinate series is 100. Multiply that by 210.000 and you get 21 million bitcoins total (actually a little less than that because a bitcoin is not infinately dividable).