Using OrdinaryDiffEq.jl as a native ODE solver library from Rust with JuliaC --trim

yes, basically at the end you have

yolhan@Mac testrs % ls lib  
julia                   libjulia.1.14.0.dylib   libjulia.1.14.dylib     libjulia.dylib          ssplib.dylib
yolhan@Mac testrs % ls share
julia
yolhan@Mac testrs % ls share/julia
cert.pem
yolhan@Mac testrs % ls lib/julia  
libatomic.1.dylib               libgmp.dylib                    libopenblas64_.dylib            libstdc++.6.dylib
libatomic.dylib                 libgomp.1.dylib                 libopenlibm.4.0.dylib           libstdc++.dylib
libblastrampoline.5.16.0.dylib  libgomp.dylib                   libopenlibm.4.dylib             libunwind.1.0.dylib
libblastrampoline.5.dylib       libjulia-internal.1.14.0.dylib  libopenlibm.dylib               libunwind.1.dylib
libblastrampoline.dylib         libjulia-internal.1.14.dylib    libpcre2-8.0.dylib              libunwind.dylib
libdSFMT.dylib                  libjulia-internal.dylib         libpcre2-8.dylib                libz.1.3.2.dylib
libgcc_s.1.1.dylib              libmpfr.6.dylib                 libquadmath.0.dylib             libz.1.dylib
libgfortran.5.dylib             libmpfr.dylib                   libquadmath.dylib               libz.dylib
libgfortran.dylib               libopenblas64_.0.3.34.dylib     libssp.0.dylib                  libzstd.1.dylib
libgmp.10.dylib                 libopenblas64_.0.dylib          libssp.dylib                    libzstd.dylib

its a lot less than full julia (without --trim) but some can still be remove like all the libblas basically which for now JuliaC doesn’t know how to proove its not used.

yolhan@Mac testrs % du -sh ./lib/julia/*
108K    ./lib/julia/libatomic.1.dylib
  0B    ./lib/julia/libatomic.dylib
  0B    ./lib/julia/libblastrampoline.5.16.0.dylib
2,5M    ./lib/julia/libblastrampoline.5.dylib
  0B    ./lib/julia/libblastrampoline.dylib
 68K    ./lib/julia/libdSFMT.dylib
176K    ./lib/julia/libgcc_s.1.1.dylib
2,1M    ./lib/julia/libgfortran.5.dylib
  0B    ./lib/julia/libgfortran.dylib
492K    ./lib/julia/libgmp.10.dylib
  0B    ./lib/julia/libgmp.dylib
444K    ./lib/julia/libgomp.1.dylib
  0B    ./lib/julia/libgomp.dylib
3,3M    ./lib/julia/libjulia-internal.1.14.0.dylib
  0B    ./lib/julia/libjulia-internal.1.14.dylib
  0B    ./lib/julia/libjulia-internal.dylib
528K    ./lib/julia/libmpfr.6.dylib
  0B    ./lib/julia/libmpfr.dylib
 11M    ./lib/julia/libopenblas64_.0.3.34.dylib
  0B    ./lib/julia/libopenblas64_.0.dylib
  0B    ./lib/julia/libopenblas64_.dylib
176K    ./lib/julia/libopenlibm.4.0.dylib
  0B    ./lib/julia/libopenlibm.4.dylib
  0B    ./lib/julia/libopenlibm.dylib
844K    ./lib/julia/libpcre2-8.0.dylib
  0B    ./lib/julia/libpcre2-8.dylib
356K    ./lib/julia/libquadmath.0.dylib
  0B    ./lib/julia/libquadmath.dylib
 72K    ./lib/julia/libssp.0.dylib
  0B    ./lib/julia/libssp.dylib
3,7M    ./lib/julia/libstdc++.6.dylib
  0B    ./lib/julia/libstdc++.dylib
 92K    ./lib/julia/libunwind.1.0.dylib
  0B    ./lib/julia/libunwind.1.dylib
  0B    ./lib/julia/libunwind.dylib
172K    ./lib/julia/libz.1.3.2.dylib
  0B    ./lib/julia/libz.1.dylib
  0B    ./lib/julia/libz.dylib
768K    ./lib/julia/libzstd.1.dylib
  0B    ./lib/julia/libzstd.dylib

and thats like half the size of the final lib.
And yes its pretty cool we can make “small” standalone dylib from julia and call it anywhere.

I did fortran here too with and without trimming and with Deep learning packages Embedding Julia code in Fortran - #14 by yolhan_mannes