It is 0.4 only so you can't add it from 0.3. On Sat, Sep 5, 2015 at 7:06 PM, David P. Sanders <dpsand...@gmail.com> wrote:
> > > El sábado, 5 de septiembre de 2015, 22:09:20 (UTC+1), Simon Danisch > escribió: >> >> Hi everyone, >> >> FixedSizeArrays <https://github.com/SimonDanisch/FixedSizeArrays.jl>offers >> an abstract interface to turn arbitrary types into arrays of fixed size >> with most array functionality defined. >> The types Point, Vec and Mat are already included per default. >> > > This is great news, congrats! > > There doesn't seem to be a version tagged. Should we do Pkg.clone()? Could > you add this info in the repo? > > David. > > >> >> Advantages are that they're stack allocated, often have less overhead >> than Julia arrays and you can dispatch on the dimension. >> Disadvantages are, that they're still immutable (advantage?!), 0.4 only >> and I still have some problems with compilation times for first calls of >> the function even with precompilation. >> Also the constructor code is pretty messy, as it is currently relatively >> hard to write constructors for abstract types. >> >> In the future I want to move this into base, by simply inheriting from >> AbstractArray, which is currently not possible for immutable arrays. >> Major blocking issue for this is my restricted time and #11610 >> <https://github.com/JuliaLang/julia/issues/11610>. >> Also, we might use Ref{NTuples} for fixed size arrays in the future, >> which would resolve quite a few issues. >> It's pretty fast but might get even faster as soon as NTuple gets >> translated into LLVM's vector type (currently array). >> >> Here's a short code sample: >> >> immutable RGB{T} <: FixedVectorNoTuple{T, 3} >> r::T >> g::T >> b::Tendimmutable Vec{N, T} <: FixedVector{N, T} # defined in GeometryTypes.jl >> _::NTuple{N, T}end >> Vec{3, Float32}(0) # constructor with 1 argument already definedrand(Vec{3, >> Int})+sin(Vec(0,2,2)) # a lot of array functions are already defined#There >> is also a matrix typeeye(Mat{3,3,Float32}) * rand(Vec{3, Float32}) # will >> also "just work" >> a = Vec(1,2,3)[1:2] # returns (1,2) >> >> >> Best, >> Simon >> >