How to know the libuv version used by julia?

I need to know the libuv version used by julia, since some functions i need to ccall are available only after v1.34. What is the recommanded way to do it ?

I wonder if Julia uses its own version of libuv for now ? I have seen GitHub - JuliaLang/libuv: Cross-platform asynchronous I/O that is referenced in the makefile, stdlib, binarybuilder, yggdrasil, the whole stuff.

1 Like
using LibUV_jll
VersionNumber(unsafe_string(ccall((:uv_version_string, libuv), Cstring, ())))

Both 1.6.4 & 1.7.0 use v"2.0.0-dev".

Yes but, embarrassingly, libuv does not have any v2 !
Wikipedia can proove it, but let’s trust github @ Releases · libuv/libuv · GitHub this time

Meanwhile, elsewhere on this github @ Yggdrasil/build_tarballs.jl at master · JuliaPackaging/Yggdrasil · GitHub, another julian, ok the same, waits for some new upcoming things to blast away all version lies about it

julia use master branch, maybe with some patchs

Maybe this branch is compatible with 1.42.0.

Working and talking constructively is my motto but “master with some patch” this seems like a black hole in the field of everything we know about versioning, ci/cd etc. those days. Some good news come from here

LIBUV_BRANCH=julia-uv2-1.42.0
LIBUV_SHA1=3a63bf71de62c64097989254e4f03212e3bf5fc8

Nearly, typed at the same time! You’re right. That’s my best bet for now.

The cache invalidation problem is a matter of copy and paste in ID10T power user land now !

Yes, exactly, for the longest time (forked libuv, and used since the beginning I think). It’s an implementation detail, and I’m not sure what you can rely on. I looked in the docs could only find:

https://docs.julialang.org/en/v1/devdocs/stdio/#Libuv-wrappers-for-stdio

You can look for libuv functions and try to call them, but I’m not sure what’s part of the public API. Maybe nothing. Whatever function you find and may be able to call, might go away? Probably not a future minor version (any guarantee?), possibly any major Julia update (not likely?).

help?> uv

finds nothing, while I did find with (I believe means non-exported, i.e. not part of public API?):

help?> Base.LibuvStream

help?> Base.LibuvServer

help?> Base.uv_error

It has for several years, not really now.

Thanks to all for your feedback