Re: ROOT version 5.19/02: Update to Release notes with new module RGLITE

From: Axel Naumann <Axel.Naumann_at_cern.ch>
Date: Wed, 19 Mar 2008 14:28:18 +0100


Hi Sebastien,

I plan to upload a new version of Reflex with a backward incompatible API after the next ROOT production release (June). This will be maintained in parallel to the old one for a while; PyROOT and Cintex will be switched during the second half of this year to the new version of reflex which will then be deprecated, probably after the December release of ROOT.

This extended transition period allows you to study the new API in detail. You can already peak at it at the svn repository http://root.cern.ch/svn/cint/branches/dev/axel/reflex_speed or via viewvc at <http://root.cern.ch/viewvc/branches/dev/axel/reflex_speed/?root=cint>. But this version is work in progress - the only part that's mostly stable is the new API in inc/Reflex/.

I of course welcome any comments you have, especially now that the new API is not yet published and I can thus still change it.

Cheers, Axel.

On 2008-03-13 18:02, Rene Brun wrote:
> Sebastien,
>
> I am posting below a mail from Axel to the Architects Forum describing
> the motivations for the new Reflex API. Axel will probably post more
> information once he will back online.
>
> Rene Brun
>
> here are the reasons for changing the Reflex API in a backward
> incompatible way:
>
> The current version of Reflex makes the new CINT about 15 times slower
> than the
> old one. Fixing this requires a few backward incompatible modifications
> of the
> Reflex API. The following issues will be addressed, too:
>
> * redesign with thread safety in mind (was not taken into account before)
>
> * platform independent, very efficient containers instead of searches
> through
> vectors
>
> * cleaner API; previous design philosophy was "duplicate as much as
> possible
> for ease of access", new one: "reduce duplication for ease of
> understanding and
> maintenance". Example: before, we had Size(), At(), Begin(), End(),
> RBegin(), REnd() for every container, and we had member access through
> Type and Scope. Now Reflex exposes the container itself (i.e. 6 -> 1
> function) and members are only accessible through their declaring scope
> (i.e. reduce API by factor 2). Brings Reflex::Type from 173 to 77
> methods, i.e. down to 40%.
>
> * reduce the number of layers in call chains to speed up calls. Example:
> before, Type::Name() for e.g. "void* f(int& i, float a[4])" involved
> approx 14 string copies (which means malloc, strlen, memcpy, free). Now
> it's down to 0.
>
> The backward incompatible API changes will show up in ROOT's trunk soon.
> Even afterwards, during the coming few months, a few API changes are
> expected, but I will try to make those later changes backward compatible.
>
> I will produce an overview of the API changes (old vs. new) once they
> have been defined; most of them are trivial changes of type
> search-and-replace.
>
> Cheers, Axel.
>
>
> Sebastien Binet wrote:

>> Bonjour Rene,
>>
>> On Thursday 13 March 2008 09:15:29 Rene Brun wrote:
>>  
>>> In the 5.19/02 announcement, we forgot the description of the new RGLite
>>> plug-in by Anar Manafov.
>>> We have now added the description of RGLITE to the release notes:
>>> http://root.cern.ch/root/Version519.news.html
>>>     
>>
>> going through the release notes, my attention was caught by:
>> """
>> Reflex.Several fundamental enhancements are available for Reflex.
>> This is a precursor to the API changes already announced for the near 
>> future
>> """
>>
>> Where were these api changes announced ? and where can I get a rough 
>> idea of their inpact, rationale, doc,... ?
>>
>> Thanks.
>>
>> A bientot,
>> Sebastien.
>>   

>
>
Received on Wed Mar 19 2008 - 14:27:49 CET

This archive was generated by hypermail 2.2.0 : Wed Mar 19 2008 - 17:50:01 CET