Skip to content

Measuring the size of Nim hello-world executables. This repo was created mainly as a citation for https://nim-lang.org/blog/2022/12/21/version-20-rc.html

License

Notifications You must be signed in to change notification settings

ee7/binary-size

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nim binary size

"Hello, World!" binary size in Nim.

Instructions

Run

nim c -r build.nim

which compiles the Nim program

echo "Hello, World!"

with various sets of compilation options.

Results

-d:release1 LTO2 strip3 --opt:size4 statically link Linux macOS Windows
98.2 KiB 109.4 KiB 188.7 KiB
✔️ 67.3 KiB 71.7 KiB 151.5 KiB
✔️ ✔️ 39.5 KiB 67.6 KiB 132.0 KiB
✔️ ✔️ ✔️ 34.5 KiB 65.1 KiB 79.5 KiB
✔️ ✔️ ✔️ ✔️ 26.5 KiB 49.1 KiB 64.0 KiB
✔️ ✔️ ✔️ ✔️ via musl-gcc5 30.0 KiB
✔️ ✔️ ✔️ ✔️ via musl-clang6 30.0 KiB
✔️ ✔️ ✔️ ✔️ via zig cc7 6.1 KiB

Details

All results from 2023-03-31 on x86_64 with Nim 2.0 nightly release 2023-03-30 (corresponding to a Nim compiler built from commit nim-lang/Nim@2e4ba4a).

Linux

  • Arch Linux
  • glibc 2.37
  • gcc 12.2.1
  • clang 15.0.7
  • musl 1.2.3
  • zig 0.10.1

macOS

  • macOS 12
  • clang 14.0.0

Windows

  • Windows Server 2022
  • Mingw-w64 11.2.0

Footnotes

  1. Perform a release build: -d:release (the default is a debug build)

  2. Enable Link-Time Optimization: --passC:-flto --passL:-flto

  3. Remove debug symbols: --passL:-s

  4. Optimize for reduced binary size: --opt:size (the default is --opt:speed)

  5. Add --cc:gcc --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --passL:-static

  6. Add --cc:clang --clang.exe:musl-clang --clang.linkerexe:musl-clang --passL:-static

  7. Add --panics:on -d:useMalloc --os:any -d:posix -d:noSignalHandler --cc=clang --clang.exe='zigcc' --clang.linkerexe='zigcc' --passC:'-target x86_64-linux-musl' --passL:'-target x86_64-linux-musl'

About

Measuring the size of Nim hello-world executables. This repo was created mainly as a citation for https://nim-lang.org/blog/2022/12/21/version-20-rc.html

Topics

Resources

License

Stars

Watchers

Forks