{"action":"created","issue":{"url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/144","repository_url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl","labels_url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/144/labels{/name}","comments_url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/144/comments","events_url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/144/events","html_url":"https://github.com/SimonDanisch/FixedSizeArrays.jl/pull/144","id":164758790,"number":144,"title":"Core type rewrite","user":{"login":"c42f","id":601473,"avatar_url":"https://avatars.githubusercontent.com/u/601473?v=3","gravatar_id":"","url":"https://api.github.com/users/c42f","html_url":"https://github.com/c42f","followers_url":"https://api.github.com/users/c42f/followers","following_url":"https://api.github.com/users/c42f/following{/other_user}","gists_url":"https://api.github.com/users/c42f/gists{/gist_id}","starred_url":"https://api.github.com/users/c42f/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c42f/subscriptions","organizations_url":"https://api.github.com/users/c42f/orgs","repos_url":"https://api.github.com/users/c42f/repos","events_url":"https://api.github.com/users/c42f/events{/privacy}","received_events_url":"https://api.github.com/users/c42f/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2016-07-11T04:36:44Z","updated_at":"2016-07-26T12:41:19Z","closed_at":"2016-07-25T21:25:06Z","pull_request":{"url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/pulls/144","html_url":"https://github.com/SimonDanisch/FixedSizeArrays.jl/pull/144","diff_url":"https://github.com/SimonDanisch/FixedSizeArrays.jl/pull/144.diff","patch_url":"https://github.com/SimonDanisch/FixedSizeArrays.jl/pull/144.patch"},"body":"~~WIP!  Do not merge!~~\r\n\r\nUpstream 0.5 changes seem to have broken FixedArray in a pretty fundamental way ( #137 #138 https://github.com/JuliaLang/julia/issues/17247 )\r\n\r\nI started trying to address the complete breakage in 0.5 by rethinking how the core type inheritance is arranged.  There's a lot of things commented out and broken here which will need to be cleaned up later, but I'm throwing this up here for discussion.\r\n\r\nThe basic idea is that only low-dimensional fixed arrays are much use in practice since there's already a fairly strong assumption about stack allocation and loop unrolling in the existing code which only makes sense for a few elements.  Given this assumption, it's probably ok to have an upper bound on the dimensionality:\r\n\r\n```julia\r\nabstract FixedArray{T,D} <: AbstractArray{T,D}  # No fixed extents present in the base type\r\n\r\nabstract FixedArray1{N,T}       <: FixedArray{T,1}  # length N vector\r\nabstract FixedArray2{N,M,T}     <: FixedArray{T,2}  # NxM matrix\r\nabstract FixedArray3{N,M,P,T}   <: FixedArray{T,3}  # NxMxP tensor\r\n# ... Up to some MaxD dimensional tensors\r\n```\r\n\r\nDoing it this way means you can dispatch on either the dimensionality using `FixedArray{T,D}`, or the exact D-dimensional shape using `FixedArrayD{N1,N2,N3,...,T}`.\r\n\r\n~~As part of the experiment, I'm seeing what happens if I make FixedArray a subtype of AbstractArray.~~ I ran out of steam on this - another time maybe."},"comment":{"url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/comments/235255253","html_url":"https://github.com/SimonDanisch/FixedSizeArrays.jl/pull/144#issuecomment-235255253","issue_url":"https://api.github.com/repos/SimonDanisch/FixedSizeArrays.jl/issues/144","id":235255253,"user":{"login":"c42f","id":601473,"avatar_url":"https://avatars.githubusercontent.com/u/601473?v=3","gravatar_id":"","url":"https://api.github.com/users/c42f","html_url":"https://github.com/c42f","followers_url":"https://api.github.com/users/c42f/followers","following_url":"https://api.github.com/users/c42f/following{/other_user}","gists_url":"https://api.github.com/users/c42f/gists{/gist_id}","starred_url":"https://api.github.com/users/c42f/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c42f/subscriptions","organizations_url":"https://api.github.com/users/c42f/orgs","repos_url":"https://api.github.com/users/c42f/repos","events_url":"https://api.github.com/users/c42f/events{/privacy}","received_events_url":"https://api.github.com/users/c42f/received_events","type":"User","site_admin":false},"created_at":"2016-07-26T12:41:19Z","updated_at":"2016-07-26T12:41:19Z","body":"TBH I'm wondering whether just migrating to StaticArrays might make more sense once 0.5 comes around - so many of the design decisions in FixedSizeArrays were tradeoffs or workarounds for missing compiler capabilities in 0.4 and I'm a little burned out by trying to work around them ;-)  The issue will be avoiding ecosystem fragmentation... at the moment it looks like we have one FSA-equivalent package for each julia version!"}}
{"actor":{"display_login":"c42f"}}