Trac #2436 adds the following algorithms from glib to libcsage:
Multiplatform threads
Thread pools
Asynchronous Queues
Memory Slices
Doubly and Singly linked lists
Queues
Sequences
Hash Tables
Arrays
Balanced Binary Trees
N-ary Trees
Quarks

In particular it features a slab memory allocator based on:
http://citeseer.ist.psu.edu/bonwick94slab.html
http://citeseer.ist.psu.edu/bonwick01magazines.html
The documentation for glib is found at 
http://library.gnome.org/devel/glib/2.14/glib-Memory-Slices.html
The files are all GPL 2.0 or greater.  Although glib normally has
extensive dependencies, all of them have been removed, as have parts
of glib that are not strictly algorithms (such as string parsing).  To
avoid autoconf/make troubles, the new parallel build system currently
in experimental testing features a simple, elegant python autoconf
replacement.  The extra build time for libcsage is minimal, and wall
time often decreases due to the new parallel build system.  Finally,
until testing is complete, parallel build and glib are orthogonal and
can exist in parallel to all existing Sage code, making review
significantly easier.
Right now there are no easy to use C libraries included with sage.
Using c++ stl requires extremely painful Cython wrapping.  Therefore
everywhere pure performance is needed, ad hoc solutions are often used
(see integer.pyx, etc), which often introduce subtle and painful
bugs.  Furthermore there are many places in Sage that could benefit
from a unified slab allocator (as opposed to a pool which can only
grow).  Finally the extensive symbolics modifications I am working on
make use of glib (especially trees and lists) to enable very fast
symbolic manipulations.  By using glib algorithms I avoid having to
roll my own code that would require extensive manual review and
debugging.  This code drop is big enough that Mabshoff would like a
formal +1 vote, and I'd be happy to address any concerns.

Mar 25 00:00:13 <mabshoff>      yes. It isn't an spkg, but the code drop is
large enought to warrent a vote.
Mar 25 00:00:21 <mabshoff>      You can quote me on that.
Mar 25 00:00:35 <mabshoff>      You should say *why* it is a good idea and
*what* goodies it does provide.
Mar 25 00:00:59 <mabshoff>      Since it will only become useful after the
switch to pbuild and doesn't
Mar 25 00:01:21 <mabshoff>      harm anything with the old build it also
doesn't have an impact on the current
Mar 25 00:01:24 <mabshoff>      codebase.
Mar 25 00:01:31 <mabshoff>      You can quote me on that, too.

--Gary

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to