<commit_before><br/> 
<hr/> 
<a name="core"></a> 
<h3>Platform Support</h3>

<p>Temorarily for version 6.00/00, ROOT has a reduced set of supported platforms.
Most notably Windows is not supported until at least 6.02.
6.00/00 supports only</p>
<ul>
<li>Linux 32bit and 64 bit, i32 and x86-64 and x32 (see below). Likely also PPC but that is untested, please report.</li>
<li>MacOS on Intel CPUs.</li>
</ul>
<p>More platforms are expected to be available later; the lack of support stems from cling not being ported to these platforms yet.</p>

<p>Despite that, an additional platform as been added: the <a href="https://sites.google.com/site/x32abi/">x32 psAPI</a>, called linuxx32gcc.
It is a regular x86-64 ABI but with shorter pointers (4 bytes instead of 8).
This reduces the addressable memory per process to 4GB - but that is usally sufficient.
The advantages are reduced memory consumption (due to the smaller pointers) and increased performance compared to 32bit applications due to the availability of the 64bit instructions.
The clang developers mailing list archive <a href="http://clang-developers.42468.n3.nabble.com/Re-PATCH-add-x32-psABI-support-td4024297.html">contains a good comparison.</a></p>

<p>To build and run binaries compiled in x32, toolchain support is needed. That is available in the in binutils (2.22), GCC (4.7), glibc (2.16), Linux kernel (3.4) and even GDB (7.5).
These versions are not available in regular distributions yet (except for <a href="http://dev.gentoo.org/~vapier/x32/stage3-amd64-x32-20120605.tar.xz"> this beta Gentoo distro</a> built in x32); once they are, building and running x86-64 and x32 side-by-side will be possible.</p>

<h3>Core Libraries</h3>

<h4>TInterpreter</h4>

The following are no longer supported and are now only issueing error
messages:
<ul><li>Getgvp</li>
    <li>Setgvp</li>
    <li>SetRTLD_NOW</li>
    <li>SetRTLD_LAZY</li>
</ul>

Use of Setgvp and Getgvp should be looked at carefully as they were
use to control the behavior of the multiplexing CINT wrappers that
were both wrapper the calls to operator new with and without placement
and the constructor (and similarly for operator delete and the
destructor).  Cling does not support such a multiplexing wrapper and<commit_msg>Add a few more backward incompatibility warnings.<commit_after><br/> 
<hr/> 
<a name="core"></a> 
<h3>Platform Support</h3>

<p>Temorarily for version 6.00/00, ROOT has a reduced set of supported platforms.
Most notably Windows is not supported until at least 6.02.
6.00/00 supports only</p>
<ul>
<li>Linux 32bit and 64 bit, i32 and x86-64 and x32 (see below). Likely also PPC but that is untested, please report.</li>
<li>MacOS on Intel CPUs.</li>
</ul>
<p>More platforms are expected to be available later; the lack of support stems from cling not being ported to these platforms yet.</p>

<p>Despite that, an additional platform as been added: the <a href="https://sites.google.com/site/x32abi/">x32 psAPI</a>, called linuxx32gcc.
It is a regular x86-64 ABI but with shorter pointers (4 bytes instead of 8).
This reduces the addressable memory per process to 4GB - but that is usally sufficient.
The advantages are reduced memory consumption (due to the smaller pointers) and increased performance compared to 32bit applications due to the availability of the 64bit instructions.
The clang developers mailing list archive <a href="http://clang-developers.42468.n3.nabble.com/Re-PATCH-add-x32-psABI-support-td4024297.html">contains a good comparison.</a></p>

<p>To build and run binaries compiled in x32, toolchain support is needed. That is available in the in binutils (2.22), GCC (4.7), glibc (2.16), Linux kernel (3.4) and even GDB (7.5).
These versions are not available in regular distributions yet (except for <a href="http://dev.gentoo.org/~vapier/x32/stage3-amd64-x32-20120605.tar.xz"> this beta Gentoo distro</a> built in x32); once they are, building and running x86-64 and x32 side-by-side will be possible.</p>

<h3>Core Libraries</h3>

<h4>Cling vs CINT</h4>

Cling follows the C++ standard much more strictly than CINT.   In
particular some code that used to run with CINT will either issue
new warnings or new compilations error.

For example when CINT was parsing Namespace::Symbol it would not
only apply the C++ search rules but also search in the outer
scopes and for this example could actually return ::Symbol instead
of (as Cling now does) issuing a compilation error.

<h4>Cling not yet implemented features</h4>

In this release Cling does not support the following (but we intended
to re-introduce them soon) features:

<ul><li>Unloading of script and shared libraries</li>
    <li>Discovery of symbols that are declared but not implemented
    being delayed until run-time. I.e.
<pre>void foo();
void run() { dlopen("foo.so"); foo(); }</pre>does not work in this release.</li>
</ul>

<h4>TInterpreter</h4>

The following are no longer supported and are now only issuing error
messages:
<ul><li>Getgvp</li>
    <li>Setgvp</li>
    <li>SetRTLD_NOW</li>
    <li>SetRTLD_LAZY</li>
</ul>

Use of Setgvp and Getgvp should be looked at carefully as they were
use to control the behavior of the multiplexing CINT wrappers that
were both wrapper the calls to operator new with and without placement
and the constructor (and similarly for operator delete and the
destructor).  Cling does not support such a multiplexing wrapper and
{'fraction_non_alphanumeric': 0.09378468368479467, 'fraction_numerical': 0.03773584905660377, 'mean_word_length': 4.467138523761375, 'pattern_counts': {'":': 0, '<': 95, '<?xml version=': 0, '>': 95, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1273627', 'n_tokens_mistral': 1775, 'n_tokens_neox': 1633, 'n_words': 735}