arduino / arduino-cli

Arduino command line tool
https://arduino.github.io/arduino-cli/latest/
GNU General Public License v3.0
4.35k stars 379 forks source link

Q: are executable after `task dist:Linux_64bit` in Release mode? #1541

Open 4ntoine opened 2 years ago

4ntoine commented 2 years ago

I've build the arduino-cli executable (with task dist:Linux_64bit), but it provides low performance at some environment. I wonder whether executables are compiled in Release or Debug mode. I can see the executable is not stripped, which makes me think it's in Debug mode:

file arduino-cli
arduino-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=Zz60NJg_l4m1AvQOVjSx/dM1hmpgIM7armTx0thNs/_6NAp6OcmjPhXjfQc9rK/r7wrkhfpwfikCFp3Qvwc, not stripped

I can definitely strip it, but is there anything to make it compiled with optimizations (in Release mode)? Can/how can i compile it statically?

PS. i've looked into release binaries and x86-64 has similar size and is also not stripped which makes me think the once compiled by me might be also built in Release mode but just both are not stripped

silvanocerza commented 2 years ago

Nice idea, I didn't think about it. I guess performance won't change but the binary size seems to be cut quite a bit, at least on Linux where I tested.

My only concern would be if we lose detailed stacktraces in case of crashes. :thinking:

4ntoine commented 2 years ago

@silvanocerza i'm not sure about the binary tools, but on mobile when the apps are processed the sourcemap (or renamings) is stored separately during the release (even on CI server). Later when crash happens the addresses are processed with the tool that accepts that stored sourcemap and provides a full human-readable stacktrace.

You could smth similar, so the binaries will be faster/smaller, but you will still have the information when smth goes wrong.

umbynos commented 1 year ago

This is actually a legit request, I think we can take this in consideration. Apparently the stacktrace seems the same between a stripped and a not stripped binary, but the size of the binaries is different