Note: I file this as a wishlist so that the discussion gets archived in a
place where it is retreived easily.
The fact:
Currently, bigloo ships its own version of libgc, which is compiled with
some special parameters in order to get the best performance for the
application.
The problems:
- Although upstream does a good job at tracking CVS, it is not sufficient
for our needs, and the build of libbigloogc regularly breaks on some archs.
- We use 2 slightly different versions of the same sources, with little good
reasons.
My basic idea:
Using the same libgc source for both packages (and possibly for other
packages that would need otherwise-tuned versions of the libs).
Some possibilities I thought about:
- use the libgc from the libgc6 package. Upstream kindly added the option
of doing that, specially for us (I believe that could be used as well to
point to an optimized libgc, with some minor modifications)
=> problem: upstream did some benchmarks recently, and that would really be
a measurable loss
- have the libgc source package build the libbigloogc package
=> problem: puts the burden over the libgc maintainer
- have a libgc-source package, somewhat similarly as we have kernel-source
packages, and have both libgc and libbigloogc built with this libgc-source
as a build-dependency.
=> problem: puts most of the burden over the libgc maintainer as well
What do you think of this ?
I think this bug has no information in it of the actual details of what options you are talking about, and if they aren't added, I'll close it.
Manuel Serrano wrote: | everything is compilation options + the file runtime/Clib/inline-alloc.c The files he refers to contains specific allocation functions for a couple of data types (cons and floats). Manuel: what difference does this one make when this is not in libbigloogc ? The Makefile reads: CFLAGS= -O -I$(srcdir)/include -DATOMIC_UNCOLLECTABLE -DNO_SIGNALS -DNO_EXECUTE_PERMISSION -DSILENT -DALL_INTERIOR_POINTERS Manuel: is this only those options you're using for tuning purposes ? Regards,
If this is really important. I will try to see with Hans Boehm (the author of the GC) what could be done.
You can live without the runtime/Clib/inline-alloc.c file but you have to take care not to define the CPP symbol BGL_GC_CUSTOM, so that in runtime/Include/bigloo.h the expansion of the macro MAKE_PAIR is correct. runtime/Clib/inline-alloc.c is optional. It impacts performance. With runtime/Clib/inline-alloc.c Bigloo is about 10% faster. The GC file gc_inl.h could be improved so that a portable version of inline-alloc.c could be written with close performance to the current one. I will try to remember to send a mail to Hans Boehm about that.
You mean it 10% faster when used as part of libgc rather as used otherway ?