> > Forgot to say Base.== returns bool, so this now makes == type unstable.
Type stable (in the context of Julia) means that the return type can be statically inferred from the argument types. This means that + is type stable, even though it returns a Float64 if the arguments are Float64 and Int if the arguments are Int. +(a::Int, b::Int) would be type unstable if typemax(Int) + 1 would be a BigInt, because then you'd have to look at the value of a and b to figure out what the type of the returned value would be. This is an easy mistake to make, but the distinction is important.