The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for Perl extension SOOT.

0.13  Wed Mar 23 20:50 2011
* New features:
  - SOOT can export a convenience Run() function.
  - SOOT::Struct now generates TObject subclasses. This is
    subject to change.

0.12  Thu Dec  2 22:35 2010
* Bug fixes:
  - They gave me a Mac and now I have to support the OS...

0.11  Tue Sep 21 21:00 2010
* Bug fixes:
  - Compile fix in PtrTable for some gccs.

0.10  Tue Sep 21 20:00 2010
* Bug fixes:
  - Better error reporting (no more false error location
    in TObject.pm)
* New features:
  - Optimized TF1::GetRandom calls
  - Wrapped TFitResultPtr
  - Updated examples.
  - Updated all the bundled modules.

0.09  Wed Apr 21 18:00 2010
* New features:
  - Using Alien::ROOT, on which we now depend at configure time,
    it's possible to get an entirely working, private copy of ROOT
    for SOOT. That means on a virgin (Linux!) machine, you can do the
    following to install SOOT and all of its dependencies:
    $ cpan SOOT
  - Now using Alien::ROOT to detect ROOT.

0.08  Sun Apr 11 12:12 2010
* Bug Fixes:
  - Perl 5.12 compatibility.
  - Now buildable on unthreaded perls.
* New features:
  - SOOT::Struct: Dynamic struct generation
    You can use SOOT::Struct to create new C-level struct types
    at run-time. These structs are then also available as Perl
    classes with the corresponding accessor methods for the
    struct attributes.
  - RunTimeXS: Cached accessor methods for structs.
    RunTimeXS is a mechanism to create XSUBs at run time. It's
    currently used to install the accessor methods for structs.
    This brings a 60-fold speed-up for struct access:
    O(millions) calls per second!
* Internals:
  - unsigned int array conversions
  - AVToIntegerVecInPlace and friends for conversion of an
    AV to existing, pre-allocated data members
* Updates, etc:
  - Brought bundled Module::Build and ExtUtils::CBuilder up to date.

0.07  Wed Mar 30 20:00 2010
* Bug Fixes:
  - Fix memory leak on each method call.
    => currently all leak checks pass!
  - Call *correct* object destructors before free-ing ROOT objects.
* Internals:
  - Some refactoring
    => Replace macro IS_TOBJECT with an inlined function.
    => Better debugging mode/output
    => Better leak tests
    => Replace some use of char* with std::strings

0.06  Fri Mar 26 20:00 2010
* New features:
  - Conversion to Module::Build!
  - All non-core build-time dependencies should be bundled now.
  - Expose $gHistImagePalette $gWebImagePalette
  - Quite a few more examples.
  - Copy constructors.
  - Installation documentation
  - SOOT->LoadNUpdate('libGeomBuilder.so');
    => Will load the shared library and regenerate the class templates.
* Bug fixes:
  - Fix for method calling bug wrt. invalidated MethodInfo.
* Internals:
  - AUTOLOAD bootstrapping now done in XS (read: C) for performance.
  - Various simplifications and refactoring of the internals.

0.05  Mon Mar  8 20:00 2010
  - Completely revamped the way that the ROOT classes are bootstrapped.
  - Fix for the "enum*" return value bug (cf. TH1D::GetXaxis())
  - Implemented function calling (I.e. TMath::Abs())
    => Hacky implementation, needs revisiting.
  - TF1::GetParErrors() returns a Perl array now and so does
    TFormula::GetParameters()
  - Optimizations in TObjectEncapsulation.
  - Fix for the return value of SOOT::API::type()
  - SOOT::API::is_same_tobject() (and tests for object equality)
  - SOOT::API::is_soot_class()
  - Started documenting SOOT <-> ROOT differences for users
  - Many more examples

0.04  Fri Feb 26 21:00 2010
  - Memory leak fixes.
  - Inlined copy of toolchain => Doesn't fully work for building
    the src/ subdirectory yet.
  - Examples now also shipped as documentation.
  - Manual casting with $axis->as('TAxis')
    This is sometimes necessary to work around mistakes in
    the type inference.
  - $obj->keep() to manually mark an object as "do not free this
    on behalf of Perl".
  - Expose $gEnv.
  - Expose SOOT::Init(bool) which intializes the underlying TCint
    and (if bool is true) load the .rootrc logon macros (C!).
  - Inheritance-respecting, recursive class generation.
  - SOOT::Load(className, ...) for exposing extra ROOT classes to
    Perl.
  - Pointer-table state can be dumped for debugging (see GC
    item below).
  - Added complete reference counting "garbage collector"
    or rather ROOT<->Perl memory interface a la PyROOT's
    TMemoryRegulator.

0.03  Sun Feb 21 21:00 2010
  - Many more examples.
  - Lazy initialization of ROOT globals (gPad!)
  - Constants actually work now.
  - gBenchmark
  - TH1* doesn't inherit from TArray in the wrapper - for now.
  - TArray* construction from Perl arrays:
     my $tarrayd = TArrayD->new([1., 2., ...]);
  - More tests!

0.02  Sat Feb 20 17:30 2010
  - List of candidate methods shown on bad method invocation.
  - Fixed problems with globals (gROOT, etc) and global
    interpreter destruction.
  - Implemented wrapping of more globals: gStyle, gDirectory,
    gROOT, gSystem, etc.
  - A bunch of examples (some working, some not yet) in examples/
  - Recognize "short" as integer type.
  - Fixed memory leak of array-of-basic-type arguments and return
    types.
  - Fixed MethodInfo leak.
  - Reference/Pointer equality. "const" references still to-do.
  - More Perl-SOOT API: Class name iterator.
  - Allow export of various constants/enums such as kRed, kTRUE, etc.

0.01  Tue Feb  9 19:31 2010
  - original version