release-notes/devel/en_US Devel.xml,NONE,1.1
Paul W. Frields (pfrields)
fedora-docs-commits at redhat.com
Sun Sep 24 21:16:40 UTC 2006
Author: pfrields
Update of /cvs/docs/release-notes/devel/en_US
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv17288/en_US
Added Files:
Devel.xml
Log Message:
Oops, forgot this beat
--- NEW FILE Devel.xml ---
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.docbook.org/xml/4.4/docbookx.dtd">
<section id="sn-Devel">
<title>Development</title>
<!--RAW HTML: <h2>Development</h2>-->
<para>
This section covers various development tools and features.
</para>
<section>
<title>Runtime</title>
<para>
These are the new features in <code>glibc</code>:
</para>
<itemizedlist>
<listitem>
<para>
Support for priority inheriting and priority protecting
mutexes. These are two features described in the POSIX
standards.
</para>
<itemizedlist>
<listitem>
<para>
Priority inheriting mutexes automatically prevent
priority inversion caused by waiting for the
availability of mutexes. The kernel automatically boosts
the priority of the thread holding the mutex until it
unlocks the mutex.
</para>
</listitem>
<listitem>
<para>
Priority protection allows to specify a priority that
all threads that acquire the mutex will run with until
the mutex is unlocked. This feature is not available for
robust mutexes.
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
The destination address sorting performed by the
<code>getaddrinfo()</code> interface for hostname lookup can
now be customized by rules in the <code>/etc/gai.conf</code>
file.
</para>
</listitem>
<listitem>
<para>
Significant speed-ups in NIS and NIS+ processing.
</para>
</listitem>
<listitem>
<para>
RFC 3542 support completed (advanced socket APIs for IPv6).
</para>
</listitem>
<listitem>
<para>
Significant speed-ups of dynamic symbol lookup.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Tools</title>
<para>
The linker includes support for the new ELF symbol hash table
format. Use the <code>--hash-style</code> option of the linker
to select the format(s).
</para>
<section>
<title>Kernel header files</title>
<para>
This release of Fedora has been built using Linux kernel
headers exported directly from the kernel, using the new
<code>headers_install</code> feature of the 2.6.18 kernel.
Thus, the <code>glibc-kernheaders</code> package has been
removed and replaced with <code>kernel-headers</code>, a
subpackage of <code>kernel</code>.
</para>
<para>
Developers may notice some changes between these new kernel
headers and what was present before, including but not limited
to the following:
</para>
<itemizedlist>
<listitem>
<para>
The <code><linux/compiler.h></code> header file has
been removed, since it contains nothing of use to
userspace.
</para>
</listitem>
<listitem>
<para>
The <code>_syscallX()</code> macros are removed. Userspace
should use <code>syscall()</code> from the C library
instead.
</para>
</listitem>
<listitem>
<para>
The <code>PAGE_SIZE</code> macro is removed from some
architectures, since the page size is variable. Userspace
should be using <code>sysconf(_SC_PAGE_SIZE)</code> or
<code>getpagesize()</code> instead.
</para>
</listitem>
<listitem>
<para>
The <code><asm/atomic.h></code> and
<code><asm/bitops.h></code> header files have been
removed. These were not designed for use in userspace, and
would fail to compile on some architectures while silently
giving non-atomic behaviour on others. The C compiler
provides its own
<ulink url='http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Atomic-Builtins.html#Atomic-Builtins'>atomic
builtin functions</ulink> which are suitable for use in
userspace programs instead.
</para>
</listitem>
<listitem>
<para>
Content which was previously protected with <code>#ifdef
__KERNEL__</code> is now elided completely with the
<code>unifdef</code> tool. Defining
<code>__KERNEL___</code> in order to see parts which
should not be visible to userspace is no longer effective.
</para>
</listitem>
</itemizedlist>
<para>
In addition, some other header files which are not suitable
for use in userspace have been removed, and still more headers
have been edited to remove unsuitable content.
</para>
<para>
<note>
<title>Kernel header changes are not Fedora-specific</title>
<para>
These changes are inherited from the upstream kernel and
are not specific to Fedora. Any distribution using the
current officially-exported kernel headers would be the
same.
</para>
</note>
</para>
</section>
<section>
<title>GCC Compiler Collection</title>
<para>
This release of Fedora has been built with GCC 4.1, which
is included with the distribution.
</para>
<section>
<title>Caveats</title>
<itemizedlist>
<listitem>
<para>
Fedora developers have introduced changes in the ELF
.hash section that provides symbols for dynamic
linking. This new .gnu.hash section, which is
produced with the new default
<code>--hash-style=gnu</code> option for
<code>gcc</code>, serves the same purpose as
previous hash sections. It provides, however, an
approximately 50% increase in dynamic linking speed.
Binaries and libraries produced with the new hashing
function are incompatible with older
<code>glibc</code> and dynamic linker releases. To
use the old-style hashing routines for compatibility
with older <code>glibc</code>-based systems, pass
the <code>--hash-style=sysv</code> option instead.
</para>
</listitem>
<listitem>
<para>
You need GDB 6.1 or newer to debug binaries, unless
they are compiled using the
<code>-fno-var-tracking</code> compilation option.
</para>
</listitem>
<listitem>
<para>
The <code>-fwritable-strings</code> option is no
longer accepted.
</para>
</listitem>
<listitem>
<para>
English-language diagnostic messages now use Unicode
quotes. If you cannot read this, set your
<code>LC_CTYPE</code> environment variable to
<code>C</code> or change your terminal emulator.
</para>
</listitem>
<listitem>
<para>
The <code>specs</code> file is no longer installed
on most systems. Ordinary users will not notice, but
developers who need to alter the file can use the
<code>-dumpspecs</code> option to generate the file
for editing.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Code Generation</title>
<itemizedlist>
<listitem>
<para>
The SSA code optimizer is now included and brings
with it better constant propagation, partial
redundancy elimination, load and store code motion,
strength reduction, dead storage elimination, better
detection of unreachable code, and tail recursion by
accumulation.
</para>
</listitem>
<listitem>
<para>
Autovectorization is supported. This technique
achieves higher performance for repetitive loop
code, in some circumstances.
</para>
</listitem>
</itemizedlist>
</section>
<section>
<title>Language Extensions</title>
<itemizedlist>
<listitem>
<para>
The new sentinel attribute causes the compiler to
issue a warning if a function such as
<code>execl(char *path, const char *arg,
...)</code>, which requires a NULL list terminator,
is missing the NULL.
</para>
</listitem>
<listitem>
<para>
The <code>cast-as-lvalue</code>,
<code>conditional-expression-as-lvalue</code>, and
<code>compund-expression-as-lvalue</code> extensions
have been removed.
</para>
</listitem>
<listitem>
<para>
The <code>#pragma pack()</code> semantics are now
closer to those used by other compilers.
</para>
</listitem>
<listitem>
<para>
Taking the address of a variable declared with the
register modifier now generates an error instead of
a warning.
</para>
</listitem>
<listitem>
<para>
Arrays of incomplete element types now generate an
error. This implies no forward reference to
structure definitions.
</para>
</listitem>
<listitem>
<para>
The basic compiler, without any optimization
(<code>-O0</code>), has been measured as much as 25%
faster in real-world code.
</para>
</listitem>
<listitem>
<para>
Libraries may now contain function-scope static
variables in multi-threaded programs. Embedded
developers can use the
<code>-fno-threadsafe-statics</code> to turn off
this feature, but ordinary users should never do
this.
</para>
</listitem>
</itemizedlist>
</section>
</section>
</section>
<section>
<title>Ruby</title>
<para>
The standard search path for Ruby libraries, <code>$:</code>, has
changed in accordance with
<ulink url='http://fedora-test.fedoraproject.org/fedora-docs/fedora-docs/Packaging/Ruby'>the
packaging guidelines</ulink>. Changes were also made to some of
the entries in <code>Config::CONFIG</code> in the
<code>rbconfig</code> module. The most important changes include:
</para>
<itemizedlist>
<listitem>
<para>
<code>sitedir</code> and related directories
(<code>sitelibdir</code>, <code>sitearchdir</code>) are now
under <code>rubylibdir</code>. Instead of
<code>/usr/lib/site_ruby</code> they are underneath
<code>/usr/lib/ruby/site_ruby</code>.
</para>
</listitem>
<listitem>
<para>
The directories for architecture-independent pure Ruby code
are always under <code>/usr/lib</code>, even on x86_64
architecture, where they used to be under
<code>/usr/lib64</code>. This change affects the
<code>Config::CONFIG</code> entries <code>rubylibdir</code>
and <code>sitelibdir</code>.
</para>
</listitem>
</itemizedlist>
<para>
Directories that were previously in <code>$:</code> remain there
for the time being, so that existing code, such as
<code>/usr/lib/site_ruby</code>, does not need to be modified.
These directories are deprecated though, and will be removed by
the release of Fedora Core 8. Build Ruby RPM packages in
accordance with
<ulink url='http://fedora-test.fedoraproject.org/fedora-docs/fedora-docs/Packaging/Ruby'>the
packaging guidelines</ulink>. In particular, Ruby libraries should
only be installed into <code>sitelibdir</code> and
<code>sitearchdir</code>. You should also follow this rule for
Ruby code that is not packaged as an RPM.
</para>
</section>
</section>
More information about the Fedora-docs-commits
mailing list