This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFC: The CPU run-time library for C


Here is the updated proposal for the CPU run-time library for C.

Any comments?

H.J.
---
Memory and string functions in the current glibc are highly optimized for
the current processors on market.  But it takes years for glibc from
release to public to be on end-user’s machines:

1. In 2018, people are still using glibc 2.17, which was released in
February, 2013, on Intel Skylake server, even when the current released
glibc 2.28 has the new memory and string functions optimized for Skylake
server.
2. The same thing will happen five years from now.

One way to address is to make glibc modular by putting memory and string
functions into a separate library, which can be updated separately,
independent of other parts of glibc.  However, memory and string functions
are integral parts of glibc.  Making them a separate modular may not be
easy to achieve.

I am proposing a less aggressive approach by adding a --enable-cpu-rt
configure option to enable the CPU run-time library for C, libcpu-rt-c:

1. It contains a subset of glibc.  There are no new implementations of
any libc functions.  All functions in libcpu-rt-c come from inside of
glibc and are tested with the same test frame work.
2. Start with memory and string functions.  Any other additions must be
carefully screened.
3. It should support glibc tunables.
4. It should be binary compatible with all existing glibc binaries so
that LD_PRELOAD=libcpu-rt-c.so” can be used to override functions in
libc.so.

End users can obtain libcpu-rt-c from

1. Install libcpu-rt-c binary from their OS vendors if available.
2. Build libcpu-rt-c from source.
3. Download libcpu-rt-c binary from a central location.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]