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