Skip to content

Piracy in the StdLibs #30945

@oxinabox

Description

@oxinabox

I have been playing with the idea of automatically detecting type piracy.
https://discourse.julialang.org/t/pirate-hunter/20402

Here is the results of running it will the standard libraries loaded.

  • [1] BigFloat(::Irrational{:SQRT_HALF}) in Random at irrationals.jl:158
  • [2] (T::Union{Type{Int8}, Type{UInt8}})(c::Char) in Base at char.jl:170
  • [3] Float64(::Irrational{:SQRT_HALF}) in Random at irrationals.jl:166
  • [4] Float32(::Irrational{:SQRT_HALF}) in Random at irrationals.jl:167
  • [5] (T::Union{Type{Int8}, Type{UInt8}})(c::Char) in Base at char.jl:170
  • [6] apropos(io::IO, needle::Regex) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:621
  • [7] apropos(io::IO, string) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:619
  • [8] apropos(string) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:618
  • [9] doc(binding::Base.Docs.Binding) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:85
  • [10] doc(obj::UnionAll) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:129
  • [11] doc(object) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:130
  • [12] formatdoc(d::Base.Docs.DocStr) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:58
  • [13] formatdoc(buffer, d, part) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:64
  • [14] parsedoc(d::Base.Docs.DocStr) in REPL at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/REPL/src/docview.jl:67
  • [15] adjoint(B::Union{BitArray{1}, BitArray{2}}) in LinearAlgebra at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/bitarray.jl:223
  • [16] fetch(x) in Distributed at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Distributed/src/remotecall.jl:533
  • [17] in(v::VersionNumber, r::VersionNumber) in Pkg.Types at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Pkg/src/versions.jl:141
  • [18] isless(a::Base.UUID, b::Base.UUID) in Pkg.Types at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Types.jl:38
  • [19] kron(a::BitArray{1}, b::BitArray{1}) in LinearAlgebra at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/bitarray.jl:96
  • [20] kron(a::BitArray{2}, b::BitArray{2}) in LinearAlgebra at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/bitarray.jl:108
  • [21] kron(a::Number, b::Union{Number, Union{AbstractArray{T,1}, AbstractArray{T,2}} where T}) in LinearAlgebra at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlid/v1.1/LinearAlgebra/src/dense.jl:359
  • [22] rand(X) in Random at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Random/src/Random.jl:224
  • [23] show(io::IO, ::MIME{Symbol("text/csv")}, a) in DelimitedFiles at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/DelimitedFiles/src/DelimitedFiles.jl:828
  • [24] show(io::IO, ::MIME{Symbol("text/tab-separated-values")}, a) in DelimitedFiles at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/DelimitedFiles/src/DelimitedFiles.jl:829
  • [25] string(x::Array{String,1}) in Pkg.Types at /Users/osx/buildbot/slave/package_osx64/build/usr/share (Pkg does a nonsensical type piracy. Pkg.jl#1034)
    /julia/stdlib/v1.1/Pkg/src/Types.jl:1453
  • [26] transpose(B::Union{BitArray{1}, BitArray{2}}) in LinearAlgebra at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/bitarray.jl:224
  • [27] wait(fd::RawFD) in FileWatching at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/FileWatching/src/FileWatching.jl:466

I'm not sure how many of these already have issues, eg #28234
and how many are harmless.
I am sure someone more knowledge-able than me can strike a bunch of them as not problematic.
But I figured I should share the list

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions