SIGN IN SIGN UP

fix some major issues with `map(f, ::BitArray...)` (#61895)

previously:

```julia
# WRONG. output should be length 5, not 6. the last value here is junk from `similar`
julia> map(&, rand(6) .> 0.5, rand(5) .> 0.5)
6-element BitVector:
 0
 0
 0
 1
 0
 0

julia> dest = falses(64);

julia> map!(&, dest, trues(65), trues(64));

# what on earth?? should be 64
julia> count(dest)
1
```

the `and_iteratorsize` change is slightly drive-by but it makes the
implementation nicer (and more parallel to `Array`, so if one changes
they'll stay in sync). incidentally, it actually helps performance for
some `collect(zip(..))` calls too
```julia
julia> using BenchmarkTools

julia> @btime collect(z) setup=z=zip(1:10000, rand(100, 100));
  15.875 μs (16 allocations: 437.53 KiB) # master
  3.344 μs (3 allocations: 160.06 KiB) # PR
```


codeveloped (mostly tests) with codex 5.5

---------

Co-authored-by: Nathan Zimmerberg <39104088+nhz2@users.noreply.github.com>
A
Andy Dienes committed
8cb3325be27eda2dc8c798f22b4be4f822f1b848
Parent: 9f531e1
Committed by GitHub <noreply@github.com> on 5/26/2026, 1:44:34 PM