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 -~----------~----~----~----~------~----~------~--~---