Hello All!
I've been using gccgo from GCC 4.8.2 (which fully supports 1.1.2 as they claimed) for a while now and I've got something to share with you.
First of all I was surprised that there is a lot of source code duplication. GCC' libgo/go directory contains the entire golang/src/pkg directory (with a very few changes if any). I thought GCC has its own golang's library implementation.
Second - gccgo doesn't really improves situation with different architectures support (mostly due to that was said above regarding code duplication). Although it's possible to compile things on PowerPC (and I suppose on s390(x) as well) the resulting binaries refuse to run throwing error message about an unsupported architecture.
Otherwise it looks quite good - everything works well. Also from the visible changes the resulting binaries are significantly smaller (from megabytes to hundreds of kilobytes) if anyone still care about this.
On Sun, Oct 27, 2013 at 11:31:15PM +0400, Peter Lemenkov wrote:
Otherwise it looks quite good - everything works well. Also from the visible changes the resulting binaries are significantly smaller (from megabytes to hundreds of kilobytes) if anyone still care about this.
Is this due to dynamic linking?
Do you have any idea about golang 1.2 compatibility?
2013/10/28 Matthew Miller mattdm@fedoraproject.org:
On Sun, Oct 27, 2013 at 11:31:15PM +0400, Peter Lemenkov wrote:
Otherwise it looks quite good - everything works well. Also from the visible changes the resulting binaries are significantly smaller (from megabytes to hundreds of kilobytes) if anyone still care about this.
Is this due to dynamic linking?
I wouldn't oppose golang and gccgo as "static" vs. "dynamic" since golang also links dynamically, just only with a fewer libs than gccgo does. However the answer is yes, gccgo shares much more code across the binaries with /usr/lib64/libgo.so.4.0.0.
work ~/work/eclus (git::further_systemd_enhancements): ldd eclus.gccgo eclus.golang eclus.gccgo: linux-vdso.so.1 => (0x00007fffb7dfe000) libgo.so.4 => /lib64/libgo.so.4 (0x00007f6d39811000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6d395f5000) libm.so.6 => /lib64/libm.so.6 (0x00007f6d392f2000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6d390dc000) libc.so.6 => /lib64/libc.so.6 (0x00007f6d38d1b000) /lib64/ld-linux-x86-64.so.2 (0x00007f6d3a550000) eclus.golang: linux-vdso.so.1 => (0x00007fffceffe000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4a162f6000) libc.so.6 => /lib64/libc.so.6 (0x00007f4a15f35000) /lib64/ld-linux-x86-64.so.2 (0x00007f4a16533000) work ~/work/eclus (git::further_systemd_enhancements): ls -la eclus.gccgo eclus.golang -rwxrwxr-x. 1 petro petro 518989 окт 22 23:16 eclus.gccgo -rwxrwxr-x. 1 petro petro 3480336 окт 22 23:17 eclus.golang work ~/work/eclus (git::further_systemd_enhancements):
Do you have any idea about golang 1.2 compatibility?
Nope, no idea.
golang@lists.fedoraproject.org