I thought I'd give 0.4 a spin to try out the new garbage collector. On my current codebase developed with 0.3 I ran into several warnings (*float32() should now be Float32()* - that sort of thing)
And then this error: *ERROR: LoadError: LoadError: LoadError: LoadError: LoadError: MethodError: `convert` has no method matching convert(::Type{Img.ImgHSV}, ::UTF8String)This may have arisen from a call to the constructor Img.ImgHSV(...),since type constructors fall back to convert methods.Closest candidates are: convert{T}(::Type{T}, ::T)* After poking around New Language Features and the list here a bit it seems that there are changes to how overloaded constructors work. In my case I've got: type ImgHSV name::ASCIIString data::Array{HSV{Float32},2} #data::Array{IntHSV,2} height::Int64 wid::Int64 h_mean::Float32 s_mean::Float32 v_mean::Float32 h_std::Float32 s_std::Float32 v_std::Float32 end # Given a filename of an image file, construct an ImgHSV function ImgHSV(fn::ASCIIString) name,ext = splitext(basename(fn)) source_img_hsv = Images.data(convert(Image{HSV{Float64}},imread(fn))) #scale all the values up from (0->1) to (0->255) source_img_scaled = map(x-> HSV( ((x.h/360)*255),(x.s*255),(x.v*255)), source_img_hsv) img_ht = size(source_img_hsv,2) img_wid = size(source_img_hsv,1) h_mean = (mean(map(x-> x.h,source_img_hsv)/360)*255) s_mean = (mean(map(x-> x.s,source_img_hsv))*255) v_mean = (mean(map(x-> x.v,source_img_hsv))*255) h_std = (std(map(x-> x.h,source_img_hsv)/360)*255) s_std = (std(map(x-> x.s,source_img_hsv))*255) v_std = (std(map(x-> x.v,source_img_hsv))*255) ImgHSV( name, float32(source_img_scaled), img_ht, img_wid, h_mean, s_mean, v_mean, h_std, s_std, v_std ) end Should I rename this function to something like buildImgHSV so it's not actually a constructor and *convert* doesn't enter the picture? Phil