Issue 1:
https://discourse.julialang.org/t/suggestion-julia-version-header-in-jl-files/16316

strongly suggest a header in .jl files that indicates the version under which the file is running. issue a warning if this is not the first line in the .jl file. I would suggest

#!julia 1.0.0 1.0.1

where the first version on which this .jl was tested on is 1.0.0 and the last version is 1.0.1.

In the distant future, such a requirement will help you by making it easier for you to deprecate and break features without incurring the wrath of every user who has ever written a julia program. I understand that packages have some REQUIRE aspects already, but this is different. the shebang line should be in every .jl file, user or packaged.

a secondary minor advantage is easier recognition for unix file.

regards,

/iaw

Issue 2:
There's a test in DataFrames that's intermittently failing due to something that looks like an inference bug. When I run finfer(getindex, (BitArray{2}, Int64, Range1{Int64})) immediately after starting Julia, I sometimes get:

finfer(getindex, (BitArray{2}, Int64, Range1{Int64}))
:($(Expr(:lambda, {:B, :(I::top(apply_type)(Vararg,Union(Real,AbstractVector)))}, {{:X, :Xc}, {{:B, BitArray{2}, 0}, {:I, Any, 2}, {:X, BitArray{2}, 2}, {:Xc, Array{Uint64,1}, 2}}, {{:getindex_cache, Any, 7}}}, quote # bitarray.jl, line 471:
I = top(tuple)(indices(tupleref(I::(Int64,Range1{Int64}),1)::Union(Range1{Int64},Int64)),indices(tupleref(I::(Int64,Range1{Int64}),2)::Union(Range1{Int64},Int64)))::(Any,Any) # line 472:
X = BitArray(index_shape(top(tupleref)(I::(Any,Any),1),top(tupleref)(I::(Any,Any),2))::Union((),(Any,),(Any,Any)))::BitArray{2} # line 473:
Xc = top(getfield)(X::BitArray{2},:chunks)::Array{Uint64,1} # line 475:
unless is(getindex_cache,nothing)::Bool goto 0 # line 476:
getindex_cache = $(Dict{Any,Any})()::Dict{Any,Any}
0: # line 478:
gen_cartesian_map(getindex_cache,$(AST(:($(Expr(:lambda, {:(ivars::Any)}, {{:#s143, :#s137}, {{:ivars, Any, 0}, {:#s143, Array{Any,1}, 2}, {:#s137, Array{Any,1}, 2}}, {}}, quote # bitarray.jl, line 478:
#s143 = top(ccall)(:jl_alloc_array_1d,$(Array{Any,1}),top(tuple)(Any,Int)::(Type{Any},Type{Int64}),$(Array{Any,1}),0,1,0)::Array{Any,1}
top(arrayset)(#s143::Array{Any,1},:B,1)::Array{Any,1}
#s137 = #s143::Array{Any,1}
return top(Expr)(:block,top(Expr)(:line,480,:bitarray.jl)::Expr,top(Expr)(:call,:setindex_unchecked,:Xc,top(splicedexpr)(:ref,top(append_any)(#s137::Array{Any,1},ivars)::Array{Any,1})::Expr,:ind)::Expr,top(Expr)(:line,481)::Expr,top(Expr)(:+=,:ind,1)::Expr)::Expr
end))))),I::(Any,Any),top(tuple)(:B,:Xc,:ind)::(Symbol,Symbol,Symbol),B::BitArray{2},Xc::Array{Uint64,1},1) # line 483:
return X::BitArray{2}
end)))

which looks okay. Other times I get:

finfer(getindex, (BitArray{2}, Int64, Range1{Int64}))
:($(Expr(:lambda, {:B, :(I::top(apply_type)(Vararg,Union(Real,AbstractVector)))}, {{:X, :Xc}, {{:B, BitArray{2}, 0}, {:I, Any, 2}, {:X, BitArray{1}, 2}, {:Xc, Array{Uint64,1}, 2}}, {{:getindex_cache, Any, 7}}}, quote # bitarray.jl, line 471:
I = top(tuple)(indices(tupleref(I::(Int64,Range1{Int64}),1)::Union(Int64,Range1{Int64})),indices(tupleref(I::(Int64,Range1{Int64}),2)::Union(Int64,Range1{Int64})))::(Any,Any) # line 472:
X = BitArray(index_shape(top(tupleref)(I::(Any,Any),1),top(tupleref)(I::(Any,Any),2))::Union((),(Any,Any),(Any,)))::BitArray{1} # line 473:
Xc = top(getfield)(X::BitArray{1},:chunks)::Array{Uint64,1} # line 475:
unless is(getindex_cache,nothing)::Bool goto 0 # line 476:
getindex_cache = $(Dict{Any,Any})()::Dict{Any,Any}
0: # line 478:
gen_cartesian_map(getindex_cache,$(AST(:($(Expr(:lambda, {:(ivars::Any)}, {{:#s143, :#s137}, {{:ivars, Any, 0}, {:#s143, Array{Any,1}, 2}, {:#s137, Array{Any,1}, 2}}, {}}, quote # bitarray.jl, line 478:
#s143 = top(ccall)(:jl_alloc_array_1d,$(Array{Any,1}),top(tuple)(Any,Int)::(Type{Any},Type{Int64}),$(Array{Any,1}),0,1,0)::Array{Any,1}
top(arrayset)(#s143::Array{Any,1},:B,1)::Array{Any,1}
#s137 = #s143::Array{Any,1}
return top(Expr)(:block,top(Expr)(:line,480,:bitarray.jl)::Expr,top(Expr)(:call,:setindex_unchecked,:Xc,top(splicedexpr)(:ref,top(append_any)(#s137::Array{Any,1},ivars)::Array{Any,1})::Expr,:ind)::Expr,top(Expr)(:line,481)::Expr,top(Expr)(:+=,:ind,1)::Expr)::Expr
end))))),I::(Any,Any),top(tuple)(:B,:Xc,:ind)::(Symbol,Symbol,Symbol),B::BitArray{2},Xc::Array{Uint64,1},1) # line 483:
return X::BitArray{1}
end)))

which gives the wrong return type.