-
Notifications
You must be signed in to change notification settings - Fork 11.1k
libgrpc_csharp_ext.x64.so in Grpc.Core NuGet package is huge (115 MB) #25862
Description
What version of gRPC and what language are you using?
Grpc.Core NuGet package 2.36.4
What operating system (Linux, Windows,...) and version?
Linux (and Windows)
What runtime / compiler are you using (e.g. python version or version of gcc)
.NET 5.0
What did you do?
Upgraded the Google.Cloud.PubSub.V1 NuGet package used by my application from 1.0.0 to 2.4.0.
What did you expect to see?
No significant increase in the size of our application's published binaries.
What did you see instead?
An increase of 83 MB in the size of my our application's published binaries, because the size of libgrpc_csharp_ext.x64.so increased by ~100 MB (but libgrpc_csharp_ext.x86.so was deleted, reducing the total increase somewhat). This is included in the Grpc.Core NuGet package, which is referenced by Google.Cloud.PubSub.V1.
Anything else we should know about your project / environment?
I found the workaround on the mailing list: strip --strip-debug libgrpc_csharp_ext.x64.so - and that was posted in response to someone complaining that 15 MB was too large, but now it's 115MB, which doubled our total deployment size. Yes, this single file is bigger than all the rest of our (by no means trivial) application and all its other dependencies combined! (The Windows native DLL is also quite large at 9.5 MB.)
Please publish a NuGet package without this huge bloat - the vast majority of NuGet users will not debug your library, especially not the native code in it. Debug info can be distributed separately. Yes, of course, I can strip it myself, just like I can compile it myself, but the point of NuGet is to provide a "ready to use" package for the average user.