From ad2c4908ae8523b0aedacaf84e52d61332df36c1 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 00:26:45 +0200 Subject: [PATCH 01/10] try reduce alloc --- src/ReadWrite.jl | 15 +++++++++------ src/grids/main.jl | 6 ++++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ReadWrite.jl b/src/ReadWrite.jl index f53ead5..256d7a2 100644 --- a/src/ReadWrite.jl +++ b/src/ReadWrite.jl @@ -21,7 +21,7 @@ Read array from file and return as a MeshArray. _The second argument (MeshArray or gcmgrid) provides the grid specifications (x.grid.ioSize)._ ``` """ -function read(fil::String,x::AbstractMeshArray) +function read(fil::String,x::AbstractMeshArray; y=similar(x; m=x.meta)) (n1,n2)=x.grid.ioSize (nFaces,n3,n4)=nFacesEtc(x) @@ -32,7 +32,7 @@ function read(fil::String,x::AbstractMeshArray) xx = reshape(hton.(xx),(n1,n2,n3,n4)) close(fid) - return x.grid.read(xx,x) + return x.grid.read(xx,x; y=y) end """ @@ -76,8 +76,7 @@ end Reformat Array data into a MeshArray similar to `x`. """ -function read(xx::Array,x::AbstractMeshArray) - y=similar(x; m=x.meta) +function read(xx::Array,x::AbstractMeshArray; y=similar(x; m=x.meta)) read!(xx,y) return y end @@ -128,12 +127,16 @@ function read_one!(xx::Array,x::AbstractMeshArray; verbose=false) if format==:compact i0=i1+1 i1=i1+nn*mm - x.f[iFace]=reshape(xx[:][i0:i1,:],(nn,mm)) + for jj in 1:mm, ii in 1:nn + x.f[iFace][ii,jj] = xx[i0 + (ii-1) + (jj-1)*nn] + end else i0=(mod(i1,n1)==0 ? 1 : i1+1) j0=(mod(i1,n1)==0&&iFace!==1 ? j0+mm : j0) i1=i0+nn-1; j1=j0+mm-1 - x.f[iFace]=reshape(xx[i0:i1,j0:j1],(nn,mm)) + for jj in 1:mm, ii in 1:nn + x.f[iFace][ii,jj] = xx[i0+ii-1, j0+jj-1] + end end end diff --git a/src/grids/main.jl b/src/grids/main.jl index 4701e26..2c9b66e 100644 --- a/src/grids/main.jl +++ b/src/grids/main.jl @@ -210,7 +210,8 @@ function GridLoadVar(nam::String,γ::gcmgrid) if sum(nam.==list_n)==1 ii=findall(nam.==list_n)[1] m=varmeta(list_u[ii],list_p[ii],missing,list_n[ii],list_n[ii]) - tmp1=γ.read(joinpath(γ.path,list_n[ii]*".data"),MeshArray(γ,γ.ioPrec;meta=m)) + y=MeshArray(γ,γ.ioPrec;meta=m) + tmp1=γ.read(joinpath(γ.path,list_n[ii]*".data"),y; y=y) elseif sum(nam.==list1d_n)==1 fil=joinpath(γ.path,nam*".data") γ.ioPrec==Float64 ? reclen=8 : reclen=4 @@ -227,7 +228,8 @@ function GridLoadVar(nam::String,γ::gcmgrid) ii=findall(nam.==list3d_n)[1] m=varmeta(list3d_u[ii],list3d_p[ii],missing,list3d_n[ii],list3d_n[ii]) - tmp1=γ.read(joinpath(γ.path,list3d_n[ii]*".data"),MeshArray(γ,γ.ioPrec,n3;meta=m)) + y=MeshArray(γ,γ.ioPrec,n3;meta=m) + tmp1=γ.read(joinpath(γ.path,list3d_n[ii]*".data"),y; y=y) else tmp1=missing end From 5b9e5ef4e72ee2cc8b2268be10bd931f7fc16cff Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 00:55:46 +0200 Subject: [PATCH 02/10] try reduce alloc --- src/ReadWrite.jl | 25 ++++++++++++++++++++++--- src/grids/main.jl | 13 ++++++++----- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/ReadWrite.jl b/src/ReadWrite.jl index 256d7a2..669e901 100644 --- a/src/ReadWrite.jl +++ b/src/ReadWrite.jl @@ -21,7 +21,7 @@ Read array from file and return as a MeshArray. _The second argument (MeshArray or gcmgrid) provides the grid specifications (x.grid.ioSize)._ ``` """ -function read(fil::String,x::AbstractMeshArray; y=similar(x; m=x.meta)) +function read(fil::String,x::AbstractMeshArray) (n1,n2)=x.grid.ioSize (nFaces,n3,n4)=nFacesEtc(x) @@ -32,7 +32,25 @@ function read(fil::String,x::AbstractMeshArray; y=similar(x; m=x.meta)) xx = reshape(hton.(xx),(n1,n2,n3,n4)) close(fid) - return x.grid.read(xx,x; y=y) + return x.grid.read(xx,x) +end + +""" + read!(fil::String, y::AbstractMeshArray) + +Read binary file `fil` into pre-allocated MeshArray `y` (in-place, no allocation). +""" +function read!(fil::String, y::AbstractMeshArray) + (n1,n2)=y.grid.ioSize + (nFaces,n3,n4)=nFacesEtc(y) + + fid = open(fil) + xx = Array{eltype(y),1}(undef,n1*n2*n3*n4) + read!(fid,xx) + xx = reshape(hton.(xx),(n1,n2,n3,n4)) + close(fid) + + read!(xx,y) end """ @@ -76,7 +94,8 @@ end Reformat Array data into a MeshArray similar to `x`. """ -function read(xx::Array,x::AbstractMeshArray; y=similar(x; m=x.meta)) +function read(xx::Array,x::AbstractMeshArray) + y=similar(x; m=x.meta) read!(xx,y) return y end diff --git a/src/grids/main.jl b/src/grids/main.jl index 2c9b66e..c39d281 100644 --- a/src/grids/main.jl +++ b/src/grids/main.jl @@ -210,8 +210,9 @@ function GridLoadVar(nam::String,γ::gcmgrid) if sum(nam.==list_n)==1 ii=findall(nam.==list_n)[1] m=varmeta(list_u[ii],list_p[ii],missing,list_n[ii],list_n[ii]) - y=MeshArray(γ,γ.ioPrec;meta=m) - tmp1=γ.read(joinpath(γ.path,list_n[ii]*".data"),y; y=y) + tmp1=MeshArray(γ,γ.ioPrec;meta=m) + read!(joinpath(γ.path,list_n[ii]*".data"),tmp1) + return tmp1 elseif sum(nam.==list1d_n)==1 fil=joinpath(γ.path,nam*".data") γ.ioPrec==Float64 ? reclen=8 : reclen=4 @@ -221,6 +222,7 @@ function GridLoadVar(nam::String,γ::gcmgrid) tmp1 = Array{γ.ioPrec,1}(undef,n3) read!(fid,tmp1) tmp1 = hton.(tmp1) + return tmp1 elseif sum(nam.==list3d_n)==1 fil=joinpath(γ.path,"RC.data") γ.ioPrec==Float64 ? reclen=8 : reclen=4 @@ -228,10 +230,11 @@ function GridLoadVar(nam::String,γ::gcmgrid) ii=findall(nam.==list3d_n)[1] m=varmeta(list3d_u[ii],list3d_p[ii],missing,list3d_n[ii],list3d_n[ii]) - y=MeshArray(γ,γ.ioPrec,n3;meta=m) - tmp1=γ.read(joinpath(γ.path,list3d_n[ii]*".data"),y; y=y) + tmp1=MeshArray(γ,γ.ioPrec,n3;meta=m) + read!(joinpath(γ.path,list3d_n[ii]*".data"),tmp1) + return tmp1 else - tmp1=missing + return missing end end From 03d3984c19489002743147ac1aa86e9ce26fbb02 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 01:42:00 +0200 Subject: [PATCH 03/10] streamline read methods --- src/ReadWrite.jl | 48 ++++++++++++++++++------------------------------ 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/src/ReadWrite.jl b/src/ReadWrite.jl index 669e901..71a2306 100644 --- a/src/ReadWrite.jl +++ b/src/ReadWrite.jl @@ -13,45 +13,33 @@ function nFacesEtc(a::AbstractMeshArray) return nFaces, n3, n4 end +function _load_binary(fil::String, y::AbstractMeshArray) + (n1,n2) = y.grid.ioSize + (_,n3,n4) = nFacesEtc(y) + fid = open(fil) + xx = Array{eltype(y),1}(undef, n1*n2*n3*n4) + read!(fid, xx) + xx = reshape(hton.(xx), (n1,n2,n3,n4)) + close(fid) + xx +end + """ read(fil::String,x::AbstractMeshArray) -Read array from file and return as a MeshArray. +Read array from file and return as a MeshArray. _The second argument (MeshArray or gcmgrid) provides the grid specifications (x.grid.ioSize)._ ``` """ -function read(fil::String,x::AbstractMeshArray) - - (n1,n2)=x.grid.ioSize - (nFaces,n3,n4)=nFacesEtc(x) - - fid = open(fil) - xx = Array{eltype(x),1}(undef,n1*n2*n3*n4) - read!(fid,xx) - xx = reshape(hton.(xx),(n1,n2,n3,n4)) - close(fid) - - return x.grid.read(xx,x) -end +read(fil::String, x::AbstractMeshArray) = x.grid.read(_load_binary(fil, x), x) """ read!(fil::String, y::AbstractMeshArray) Read binary file `fil` into pre-allocated MeshArray `y` (in-place, no allocation). """ -function read!(fil::String, y::AbstractMeshArray) - (n1,n2)=y.grid.ioSize - (nFaces,n3,n4)=nFacesEtc(y) - - fid = open(fil) - xx = Array{eltype(y),1}(undef,n1*n2*n3*n4) - read!(fid,xx) - xx = reshape(hton.(xx),(n1,n2,n3,n4)) - close(fid) - - read!(xx,y) -end +read!(fil::String, y::AbstractMeshArray) = read!(_load_binary(fil, y), y) """ read(xx::Array,γ::gcmgrid) @@ -113,7 +101,7 @@ function read!(xx::Array,x::AbstractMeshArray) tmp=zeros(x.grid) for i3 in 1:n3 for i4 in 1:n4 - read_one!(xx[:,:,i3,i4],tmp) + _read_one!(xx[:,:,i3,i4],tmp) for f in 1:nFaces if (n3>1)&&(n4>1) x[f,i3,i4].=tmp[f] @@ -128,11 +116,11 @@ function read!(xx::Array,x::AbstractMeshArray) end """ - read!(xx::Array,x::AbstractMeshArray) + _read_one!(xx::Array,x::AbstractMeshArray) -Reformat one array of size x.grid.ioSize, and write **in-place** into MeshArray `x``. +Reformat one array of size x.grid.ioSize, and write **in-place** into MeshArray `x`. """ -function read_one!(xx::Array,x::AbstractMeshArray; verbose=false) +function _read_one!(xx::Array,x::AbstractMeshArray; verbose=false) test1=in(x.grid.class,["PeriodicChannel","PeriodicDomain"]) format=(test1 ? :simple : :compact) From 7197384bb01cc25867fae8efefdb064a38fd7e35 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 02:13:19 +0200 Subject: [PATCH 04/10] streamline read methods --- src/ReadWrite.jl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ReadWrite.jl b/src/ReadWrite.jl index 71a2306..ebf4035 100644 --- a/src/ReadWrite.jl +++ b/src/ReadWrite.jl @@ -69,12 +69,14 @@ function read(xx::Array,γ::gcmgrid; verbose=false) verbose ? println(size(yy)) : nothing if n3==1&&n4==1 - read(yy,MeshArray(γ,γ.ioPrec)) + y = MeshArray(γ,γ.ioPrec) elseif n4==1 - read(yy,MeshArray(γ,γ.ioPrec,n3)) + y = MeshArray(γ,γ.ioPrec,n3) else - read(yy,MeshArray(γ,γ.ioPrec,n3,n4)) + y = MeshArray(γ,γ.ioPrec,n3,n4) end + read!(yy,y) + return y end """ From d2f87a0933f338f41bb9430cf04a551a0a9cf3c6 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 09:31:27 +0200 Subject: [PATCH 05/10] streamline read methods --- src/grids/simple.jl | 20 ++++++-------------- test/testsets/transport.jl | 13 +++++++++---- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/grids/simple.jl b/src/grids/simple.jl index 4a54a74..80d0988 100644 --- a/src/grids/simple.jl +++ b/src/grids/simple.jl @@ -79,12 +79,13 @@ function GridLoad_ones(γ::gcmgrid;option="minimal") list_u=(u"°",u"°") list_p=(pc,pc) end - + + tmp1=fill(1.,(ioSize[:])) for ii=1:length(list_n) - tmp1=fill(1.,(ioSize[:])) m=varmeta(list_u[ii],list_p[ii],missing,list_n[ii],list_n[ii]) - tmp1=γ.read(tmp1,MeshArray(γ,Float64;meta=m)) - Γ[list_n[ii]]=tmp1 + tmp2=MeshArray(γ,Float64;meta=m) + read!(tmp1,tmp2) + Γ[list_n[ii]]=tmp2 end XC=[i-0.5 for i in 1:ioSize[1], j in 1:ioSize[2]] @@ -104,7 +105,7 @@ function GridLoad_ones(γ::gcmgrid;option="minimal") Γ["YC"][i]=YC[ip,iq] option=="full" ? Γ["YG"][i]=YG[ip,iq] : nothing end - + Dict_to_NamedTuple(Γ) end @@ -121,17 +122,8 @@ etc accordingly with global `XC,YC` etc . function UnitGrid(ioSize::NTuple{2, Int},tileSize::NTuple{2, Int}; option="minimal") nF=div(prod(ioSize),prod(tileSize)) fSize=fill(tileSize,nF) - γ=gcmgrid("","PeriodicDomain",nF,fSize, ioSize, Float32, read_tiles, write_tiles) Γ=GridLoad_ones(γ;option=option) - - Γ.XC[:]=γ.read([i-0.5 for i in 1:ioSize[1], j in 1:ioSize[2]],γ) - Γ.YC[:]=γ.read([j-0.5 for i in 1:ioSize[1], j in 1:ioSize[2]],γ) - if option=="full" - Γ.XG[:]=γ.read([i-1.0 for i in 1:ioSize[1], j in 1:ioSize[2]],γ) - Γ.YG[:]=γ.read([j-1.0 for i in 1:ioSize[1], j in 1:ioSize[2]],γ) - end - return Γ,γ end diff --git a/test/testsets/transport.jl b/test/testsets/transport.jl index ef8b890..d348fb6 100644 --- a/test/testsets/transport.jl +++ b/test/testsets/transport.jl @@ -6,8 +6,8 @@ @suppress show(Γ.XC) path=MeshArrays.Dataset("GRID_LLC90") - Tx=γ.read(joinpath(path,"TrspX.bin"),MeshArray(γ,Float32)) - Ty=γ.read(joinpath(path,"TrspY.bin"),MeshArray(γ,Float32)) + Tx=MeshArray(γ,Float32); read!(joinpath(path,"TrspX.bin"),Tx) + Ty=MeshArray(γ,Float32); read!(joinpath(path,"TrspY.bin"),Ty) plot(Γ.XC) hFacC=GridLoadVar("hFacC",γ) @@ -56,8 +56,13 @@ ones(y) zeros(y) - GM_PsiX=read(randn(90,1170,50),Γ.hFacW) - GM_PsiY=read(randn(90,1170,50),Γ.hFacS) + m=varmeta(1.0, [0.0, 0.5, 0.5], missing, "GM_PsiX", "GM_PsiX") + GM_PsiX=MeshArray(γ,γ.ioPrec,50, meta=m) + read!(randn(γ.ioSize...,50),GM_PsiX) + m=varmeta(1.0, [0.5, 0.0, 0.5], missing, "GM_PsiY", "GM_PsiY") + GM_PsiY=MeshArray(γ,γ.ioPrec,50, meta=m) + read!(randn(γ.ioSize...,50),GM_PsiY) + bolusU, bolusV, bolusW=MeshArrays.calc_bolus(GM_PsiX,GM_PsiY, Γ) read(rand(90*1170),γ) From 20863ca086b0076511a3a9a8e399bb9153306615 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 09:31:44 +0200 Subject: [PATCH 06/10] fix --- src/grids/simple.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/grids/simple.jl b/src/grids/simple.jl index 80d0988..854f088 100644 --- a/src/grids/simple.jl +++ b/src/grids/simple.jl @@ -67,7 +67,7 @@ function GridLoad_ones(γ::gcmgrid;option="minimal") pc=fill(0.5,2); pg=fill(0.0,2); pu=[0.,0.5]; pv=[0.5,0.] if option=="full" - list_n=("XC","XG","YC","YG","RAC","RAW","RAS","RAZ","DXC","DXG","DYC","DYG","Depth","hFacC","hFacS","hFacW") + list_n=("XC","XG","YC","YG","RAC","RAW","RAS","RAZ","DXC","DXG","DYC","DYG","Depth","hFacC","hFacW","hFacS") list_u=(u"m",u"m",u"m",u"m",u"m^2",u"m^2",u"m^2",u"m^2",u"m",u"m",u"m",u"m",u"m",1.0,1.0,1.0) list_p=(pc,pg,pc,pg,pc,pu,pv,pg,pu,pv,pv,pu,pc,fill(0.5,3),[0.,0.5,0.5],[0.5,0.,0.5]) elseif option=="light" From 5d0747073f8075cbb98a1a24d27003720bfa02d4 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 10:04:41 +0200 Subject: [PATCH 07/10] =?UTF-8?q?use=20read!=20instead=20of=20=CE=B3.read?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/GridPaths.jl | 8 ++++---- src/grids/simple.jl | 2 +- src/grids/tiles.jl | 8 ++++++-- src/types/gcmarray.jl | 5 +++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/GridPaths.jl b/src/GridPaths.jl index 7a823ff..980aed0 100644 --- a/src/GridPaths.jl +++ b/src/GridPaths.jl @@ -47,7 +47,7 @@ function rotate_XCYC(Γ,R) tmpx2=tmp3[1,:]; tmpy2=tmp3[2,:]; tmpz2=tmp3[3,:] tmpx[tmp1]=tmpx2; tmpy[tmp1]=tmpy2; tmpz[tmp1]=tmpz2 - x=γ.read(tmpx,Γ.XC); y=γ.read(tmpy,Γ.XC); z=γ.read(tmpz,Γ.XC) + read!(tmpx,x); read!(tmpy,y); read!(tmpz,z) x,y,z end @@ -75,15 +75,15 @@ function shorter_paths!(xyz,xyz0,msk_in) msk_out=[] for kk in 1:3 #select field to treat: - mm=msk_in[kk] + mm=similar(msk_in[kk]) #select the shorther segment: - tmpm=γ.write(mm) + tmpm=γ.write(msk_in[kk]) if theta[2]-theta[1]<=pi tmpm[findall( (tmptheta.>theta[2]).|(tmptheta.=theta[1]) )].=0.0 end - mm=γ.read(tmpm,mm) + read!(tmpm,mm) #store result: push!(msk_out,mm) end diff --git a/src/grids/simple.jl b/src/grids/simple.jl index 854f088..6bf52d8 100644 --- a/src/grids/simple.jl +++ b/src/grids/simple.jl @@ -95,7 +95,7 @@ function GridLoad_ones(γ::gcmgrid;option="minimal") YG=[j-1.0 for i in 1:ioSize[1], j in 1:ioSize[2]] end - (mp,mq)=Int.(γ.ioSize[:]./γ.fSize[1][:]) + (mp,mq)=Int.(γ.ioSize[:]./γ.fSize[1][:]) #wont work with LLC grid for i in 1:nFaces (np,nq)=γ.fSize[i] ip=(1:np) .+ (mod1(i,mp)-1).*np diff --git a/src/grids/tiles.jl b/src/grids/tiles.jl index cdcd660..78599c1 100644 --- a/src/grids/tiles.jl +++ b/src/grids/tiles.jl @@ -43,8 +43,12 @@ Return an `Array` of tiles which cover `x` according to tile partition `τ`. ```jldoctest; output = false using MeshArrays -γ=GridSpec("LatLonCap",MeshArrays.Dataset("GRID_LLC90")) -d=γ.read(γ.path*"Depth.data",MeshArray(γ,γ.ioPrec)) + +γ=GridSpec(ID=:LLC90) +d=MeshArray(γ,γ.ioPrec) +f=joinpath(γ.path,"Depth.data") +read!(f,d) + τ=Tiles(γ,30,30) td=Tiles(τ,d) diff --git a/src/types/gcmarray.jl b/src/types/gcmarray.jl index 86836cb..180254a 100644 --- a/src/types/gcmarray.jl +++ b/src/types/gcmarray.jl @@ -40,10 +40,11 @@ function gcmarray(A::Array{T,N}; ios=[s[1] s[2]] γ=gcmgrid("","PeriodicDomain",1, fs, ios, T, read, write) if N==2 - B=γ.read(A,gcmarray(γ,T;meta=meta)) + B=gcmarray(γ,T;meta=meta) else - B=γ.read(A,gcmarray(γ,T,size(A)[3];meta=meta)) + B=gcmarray(γ,T,size(A)[3];meta=meta) end + read!(A,B) B end From aa27ebf65f47ecf6fe696e5e4d5cd9ff5461fb94 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 10:37:35 +0200 Subject: [PATCH 08/10] streamline read methods --- src/ReadWrite.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ReadWrite.jl b/src/ReadWrite.jl index ebf4035..c279b10 100644 --- a/src/ReadWrite.jl +++ b/src/ReadWrite.jl @@ -32,7 +32,11 @@ Read array from file and return as a MeshArray. _The second argument (MeshArray or gcmgrid) provides the grid specifications (x.grid.ioSize)._ ``` """ -read(fil::String, x::AbstractMeshArray) = x.grid.read(_load_binary(fil, x), x) +function read(fil::String, x::AbstractMeshArray) + y = similar(x; m=x.meta) + read!(fil, y) + return y +end """ read!(fil::String, y::AbstractMeshArray) From 8b397b26a1704287fd32092aa7af0fbef8e41747 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 10:45:35 +0200 Subject: [PATCH 09/10] add ci with 1.10 (LTS) --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 24dc51a..37cd327 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,8 +15,9 @@ jobs: fail-fast: false matrix: version: - - '1.9' # Replace this with the minimum Julia version that your package supports. E.g. if your package requires Julia 1.5 or higher, change this to '1.5'. - - '1' # Leave this line unchanged. '1' will automatically expand to the latest stable 1.x release of Julia. + - '1.9' # minimum Julia version supported + - '1.10' # current LTS version of Julia + - '1' # latest stable 1.x release of Julia. # - 'nightly' os: - ubuntu-latest From c8f1d3620e65c3c8c1b8829886de216983ca8921 Mon Sep 17 00:00:00 2001 From: gaelforget Date: Mon, 13 Jul 2026 10:45:46 +0200 Subject: [PATCH 10/10] bump version --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index f0982ff..18f588d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "MeshArrays" uuid = "cb8c808f-1acf-59a3-9d2b-6e38d009f683" -version = "0.5.7" +version = "0.5.8" authors = ["gaelforget "] [deps]