{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/15367","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/15367/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/15367/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/15367/events","html_url":"https://github.com/JuliaLang/julia/pull/15367","id":138672331,"number":15367,"title":"StridedArray->AbstractArray in many places","user":{"login":"timholy","id":1525481,"avatar_url":"https://avatars.githubusercontent.com/u/1525481?v=3","gravatar_id":"","url":"https://api.github.com/users/timholy","html_url":"https://github.com/timholy","followers_url":"https://api.github.com/users/timholy/followers","following_url":"https://api.github.com/users/timholy/following{/other_user}","gists_url":"https://api.github.com/users/timholy/gists{/gist_id}","starred_url":"https://api.github.com/users/timholy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timholy/subscriptions","organizations_url":"https://api.github.com/users/timholy/orgs","repos_url":"https://api.github.com/users/timholy/repos","events_url":"https://api.github.com/users/timholy/events{/privacy}","received_events_url":"https://api.github.com/users/timholy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2016-03-05T12:01:58Z","updated_at":"2016-03-06T02:18:58Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/15367","html_url":"https://github.com/JuliaLang/julia/pull/15367","diff_url":"https://github.com/JuliaLang/julia/pull/15367.diff","patch_url":"https://github.com/JuliaLang/julia/pull/15367.patch"},"body":"This is a largely janitorial change that allows us to defer the definition of `StridedArray` until much later in the bootstrap process. This was motivated by my (still unfinished) work on `ReshapedArray`s, but this appears to have some value on its own merits: now that we have nice iterators and indexing, \"strides\" simply aren't a very important concept anymore for pure julia code. So the usage of `StridedArray` should generally be limited to interactions with outside libraries that require strided data layout.\r\n\r\nThis also fixes a bug (currently on master):\r\n```jl\r\nimmutable MyArray{T,N} <: AbstractArray{T,N}\r\n    data::Array{T,N}\r\nend\r\n\r\nBase.size(A::MyArray) = size(A.data)\r\nBase.getindex(A::MyArray, indexes...) = A.data[indexes...]\r\n\r\nA = MyArray(rand(4,5))\r\nb = rand(5)\r\n\r\njulia> A*b\r\nERROR: LoadError: MethodError: no method matching A_mul_B!(::Array{Float64,1}, ::MyArray{Float64,2}, ::Array{Float64,1})\r\nClosest candidates are:\r\n...\r\n```\r\n\r\nThe most important reason I decided to submit this separately is that janitorial changes have a nasty habit of generating unexpected performance regressions, so I wanted to `runbenchmarks(\"array\", vs = \"JuliaLang/julia:master\")`."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/192782203","html_url":"https://github.com/JuliaLang/julia/pull/15367#issuecomment-192782203","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/15367","id":192782203,"user":{"login":"tkelman","id":5934628,"avatar_url":"https://avatars.githubusercontent.com/u/5934628?v=3","gravatar_id":"","url":"https://api.github.com/users/tkelman","html_url":"https://github.com/tkelman","followers_url":"https://api.github.com/users/tkelman/followers","following_url":"https://api.github.com/users/tkelman/following{/other_user}","gists_url":"https://api.github.com/users/tkelman/gists{/gist_id}","starred_url":"https://api.github.com/users/tkelman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkelman/subscriptions","organizations_url":"https://api.github.com/users/tkelman/orgs","repos_url":"https://api.github.com/users/tkelman/repos","events_url":"https://api.github.com/users/tkelman/events{/privacy}","received_events_url":"https://api.github.com/users/tkelman/received_events","type":"User","site_admin":false},"created_at":"2016-03-06T02:18:58Z","updated_at":"2016-03-06T02:18:58Z","body":"The fixed bug with a wrapper AbstractArray type should be tested for, no?"}}