Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Array{T}(n) constructors #20114

Closed
TotalVerb opened this issue Jan 18, 2017 · 9 comments
Closed

Array{T}(n) constructors #20114

TotalVerb opened this issue Jan 18, 2017 · 9 comments
Labels
performance Must go faster types and dispatch Types, subtyping and method dispatch

Comments

@TotalVerb
Copy link
Contributor

TotalVerb commented Jan 18, 2017

As @tkelman (and others) have noted, it's faster to compile and infer leaf type constructors, like Array{T,1}, than Array{T}. The following uses of Array{T}(n) should accordingly be modified to Array{T,1}(n) or Vector{T}(n):

$ grep -Er 'Array\{[^,]+\}\(0\)' base
base/pcre.jl:    buffer = Array{UInt8}(256)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            mx = Array{Float64}(1)
base/sparse/umfpack.jl:            mx = Array{Float64}(1)
base/sparse/umfpack.jl:            mz = Array{Float64}(1)
base/sparse/umfpack.jl:            lnz = Array{$itype}(1)
base/sparse/umfpack.jl:            unz = Array{$itype}(1)
base/sparse/umfpack.jl:            n_row = Array{$itype}(1)
base/sparse/umfpack.jl:            n_col = Array{$itype}(1)
base/sparse/umfpack.jl:            nz_diag = Array{$itype}(1)
base/sparse/umfpack.jl:            lnz = Array{$itype}(1)
base/sparse/umfpack.jl:            unz = Array{$itype}(1)
base/sparse/umfpack.jl:            n_row = Array{$itype}(1)
base/sparse/umfpack.jl:            n_col = Array{$itype}(1)
base/sparse/umfpack.jl:            nz_diag = Array{$itype}(1)
base/sparse/sparsevector.jl:    nzinds = Array{Ti}(0)
base/sparse/sparsevector.jl:    nzvals = Array{Tv}(0)
base/sparse/cholmod.jl:const cholmod_com_offsets = Array{Csize_t}(19)
base/sparse/cholmod.jl:const build_version_array = Array{Cint}(3)
base/sparse/cholmod.jl:            current_version_array = Array{Cint}(3)
base/sparse/cholmod.jl:    xmatched = Array{SuiteSparse_long}(1)
base/sparse/cholmod.jl:    pmatched = Array{SuiteSparse_long}(1)
base/sparse/cholmod.jl:    nzoffdiag = Array{SuiteSparse_long}(1)
base/sparse/cholmod.jl:    nzdiag = Array{SuiteSparse_long}(1)
base/sparse/sparsematrix.jl:    I, J = Array{Int}(0), Array{Int}(0) # indices of nonzero elements
base/sparse/sparsematrix.jl:    rows = Array{Int}(0)
base/sparse/sparsematrix.jl:    SparseMatrixCSC(m, n, ones(Ti, n+1), Array{Ti}(0), Array{Tv}(0))
base/array.jl:    r = Array{eltype(a)}(0)
base/array.jl:    ret = Array{promote_eltype(vs...)}(0)
base/linalg/lapack.jl:            ihi = Array{BlasInt}(1)
base/linalg/lapack.jl:            ilo = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            rnk   = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rnk = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            rnk   = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rwork = Array{$relty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rnk = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            k = Array{BlasInt}(1)
base/linalg/lapack.jl:            l = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            k = Array{BlasInt}(1)
base/linalg/lapack.jl:            l = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            ilo = Array{BlasInt}(1)
base/linalg/lapack.jl:            ihi = Array{BlasInt}(1)
base/linalg/lapack.jl:            abnrm = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            ilo = Array{BlasInt}(1)
base/linalg/lapack.jl:            ihi = Array{BlasInt}(1)
base/linalg/lapack.jl:            abnrm = Array{$relty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            sestpr = Array{$elty}(1)
base/linalg/lapack.jl:            s = Array{$elty}(1)
base/linalg/lapack.jl:            c = Array{$elty}(1)
base/linalg/lapack.jl:            sestpr = Array{$relty}(1)
base/linalg/lapack.jl:            s = Array{$elty}(1)
base/linalg/lapack.jl:            c = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rank = Array{BlasInt}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            nsplit = Array{BlasInt}(1)
base/linalg/lapack.jl:            abstol = Array{$elty}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            iwork  = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            m = Array{BlasInt}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            rwork  = Array{$relty}(1)
base/linalg/lapack.jl:            iwork  = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            sdim = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            scale = Array{$relty}(1)
base/linalg/blas.jl:            result = Array{$elty}(1)
base/linalg/blas.jl:            result = Array{$elty}(1)
base/linalg/arpack.jl:    TOL = Array{TR}(1)
base/linalg/arpack.jl:    rwork  = cmplx ? Array{TR}(ncv) : Array{TR}(0)
base/bitarray.jl:BitVector() = BitArray{1}(0)
base/libc.jl:    timestr = Array{UInt8}(128)
base/libc.jl:    hn = Array{UInt8}(256)
base/essentials.jl:    out = Array{Any}(4)
base/float.jl:const basetable = Array{UInt16}(512)
base/float.jl:const shifttable = Array{UInt8}(512)
base/channels.jl:        new(Condition(), Condition(), :open, Nullable{Exception}(), Array{T}(0), sz, Array{Condition}(0))
base/libdl.jl:    dynamic_libraries = Array{AbstractString}(0)
base/dates/io.jl:const SLOT_RULE = SlotRule(Array{Type}(256))
base/LineEdit.jl:        visited = Array{Any}(0)
base/associative.jl:    badkeys = Array{keytype(d)}(0)
base/sysinfo.jl:    UVcpus = Array{Ptr{UV_cpu_info_t}}(1)
base/sysinfo.jl:    count = Array{Int32}(1)
base/sysinfo.jl:    uptime_ = Array{Float64}(1)
base/sysinfo.jl:    loadavg_ = Array{Float64}(3)
base/profile.jl:    iplist = Array{T}(0)
base/profile.jl:    n = Array{Int}(0)
base/profile.jl:    bt = Array{Vector{UInt64}}(0)
base/profile.jl:    counts = Array{Int}(0)
base/libgit2/reference.jl:            res = Array{typeof(val)}(0)
base/file.jl:    b = Array{UInt8}(1024)
base/file.jl:    temppath = Array{UInt16}(32767)
base/file.jl:    tname = Array{UInt16}(32767)
base/file.jl:    dirs = Array{eltype(content)}(0)
base/file.jl:    files = Array{eltype(content)}(0)
base/iostream.jl:const _chtmp = Array{Char}(1)
base/datafmt.jl:    a = Array{UInt8}(8192)
base/mpfr.jl:const lgamma_signp = Array{Cint}(1)
base/random.jl:        RandomDevice() = new(Array{UInt128}(1))
base/random.jl:    a = Array{UInt8}(36)
base/special/bessel.jl:    const ai::Array{Float64,1} = Array{Float64}(2)
base/special/bessel.jl:    const ae::Array{Int32,1} = Array{Int32}(2)
base/special/bessel.jl:const cy = Array{Float64}(2)
base/special/bessel.jl:const ae = Array{Int32}(2)
base/special/bessel.jl:const wrk = Array{Float64}(2)
base/special/gamma.jl:    signp = Array{Int32}(1)
base/special/gamma.jl:    signp = Array{Int32}(1)
base/socket.jl:            #    host = Array{UInt128}(1)
base/socket.jl:        #   host = Array{UInt128}(1)
base/util.jl:    p = Array{UInt8}(128) # mimic Unix getpass in ignoring more than 128-char passwords
base/grisu/fastshortest.jl:function fastshortest(v, buffer = Array{UInt8}(17))
base/grisu/fastprecision.jl:function fastprecision(v, requested_digits, buffer = Array{UInt8}(100))

This is an incomplete list; there are constructors of the form Array{T}(x) also that are not caught by this regular expression.

cc @tkelman

@nalimilan
Copy link
Member

+1 for Vector, which is also almost as short and more precise for the reader than Array.

@ararslan ararslan added performance Must go faster types and dispatch Types, subtyping and method dispatch labels Jan 18, 2017
@vtjnash
Copy link
Member

vtjnash commented Jan 18, 2017

It looks like some of those (mostly linalg) could use Ref instead, since they only wanted a one-element array.

@JeffBezanson
Copy link
Member

Aren't constants ok? E.g. Array{Int32}(n) will be fully inlined?

@pkofod
Copy link
Contributor

pkofod commented Jan 20, 2017

I think I moved a lot of these to the new syntax, so I'll grab a broom...

@Sacha0
Copy link
Member

Sacha0 commented Apr 24, 2017

As of today:

$ grep -Er 'Array\{[^,]+\}\(0\)' base
base/array.jl:    r = Array{eltype(a)}(0)
base/array.jl:    ret = Array{promote_eltype(vs...)}(0)
base/associative.jl:    badkeys = Array{keytype(d)}(0)
base/bitarray.jl:BitVector() = BitArray{1}(0)
base/file.jl:    dirs = Array{eltype(content)}(0)
base/file.jl:    files = Array{eltype(content)}(0)
base/libgit2/reference.jl:            res = Array{typeof(val)}(0)

@TotalVerb
Copy link
Contributor Author

There's a typo in the regex in the first post; this one catches more results:

$ grep -Er '\bArray\{[^,]+\}\([0-9]+\)' base
base/libgit2/reference.jl:            res = Array{typeof(val)}(0)
base/array.jl:    r = Array{eltype(a)}(0)
base/array.jl:    ret = Array{promote_eltype(vs...)}(0)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            rnk   = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rnk = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            rnk   = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rwork = Array{$relty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rnk = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            k = Array{BlasInt}(1)
base/linalg/lapack.jl:            l = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            k = Array{BlasInt}(1)
base/linalg/lapack.jl:            l = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            sestpr = Array{$elty}(1)
base/linalg/lapack.jl:            s = Array{$elty}(1)
base/linalg/lapack.jl:            c = Array{$elty}(1)
base/linalg/lapack.jl:            sestpr = Array{$relty}(1)
base/linalg/lapack.jl:            s = Array{$elty}(1)
base/linalg/lapack.jl:            c = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            rank = Array{BlasInt}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            nsplit = Array{BlasInt}(1)
base/linalg/lapack.jl:            abstol = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:#             work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            iwork  = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work  = Array{$elty}(1)
base/linalg/lapack.jl:            work   = Array{$elty}(1)
base/linalg/lapack.jl:            rwork  = Array{$relty}(1)
base/linalg/lapack.jl:            iwork  = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            rcond = Array{$elty}(1)
base/linalg/lapack.jl:            rcond = Array{$relty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            sdim = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            work = Array{$elty}(1)
base/linalg/lapack.jl:            iwork = Array{BlasInt}(1)
base/linalg/lapack.jl:            scale = Array{$relty}(1)
base/associative.jl:    badkeys = Array{keytype(d)}(0)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/umfpack.jl:            tmp = Array{Ptr{Void}}(1)
base/sparse/cholmod.jl:const cholmod_com_offsets = Array{Csize_t}(19)
base/sparse/cholmod.jl:const build_version_array = Array{Cint}(3)
base/sparse/cholmod.jl:            current_version_array = Array{Cint}(3)
base/file.jl:    dirs = Array{eltype(content)}(0)
base/file.jl:    files = Array{eltype(content)}(0)

@Sacha0
Copy link
Member

Sacha0 commented Apr 24, 2017

Nice catch! :)

@musm
Copy link
Contributor

musm commented Apr 24, 2017

#21533 should close this and also #21501 added others that I noticed

@tkelman
Copy link
Contributor

tkelman commented Apr 28, 2017

I think we can call this closed, thanks gents

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Must go faster types and dispatch Types, subtyping and method dispatch
Projects
None yet
Development

No branches or pull requests

9 participants