It's working good for me so far. The xml merging problem has disappeared in my application and performance is on par with the previous version. I have not done any performance benchmarks, but it does not feel any slower than before.
Thanks for all your hard work on this project.
Doug
On 10/28/06, Ross Bamford <[EMAIL PROTECTED]
> wrote:
Hi,
I've made a start on 0.4 development, in a new DEV_0_4 branch in CVS. I've
started out by trying to address the memory handling problems centered
around XML::Node, which is used pretty much throughout the library, and so
far the tests, and my own experiments, suggest a promising start.
The main effect of the changes so far is:
* Totally reworked node allocation and wrapping, we still don't copy nodes
unless required, but we now track how many ruby_xml_nodes wrap a given
xmlNode. This is currently done using _private data - I know someone
asked
about exposing that member for app use but I can't see where else to
store
the data needed by the binding. Also, this will break compatibility with
libxsl-ruby 0.3.x, but that's to be expected anyway - once this branch
is
moving a bit more I'll introduce a parallel branch into libxsl-ruby.
* Changed the way nodes are handled WRT. their documents and parent nodes,
to better fit with libxml2's memory model for the tree. We leave memory
management with the library as much as possible, only stepping in where
we
need to. This should fix up myriad problems that occur when copying
nodes
between documents and adding new nodes. It's slightly less efficient
now,
but once it's more stable we can probably streamline things a bit.
* Thread safety: After going through the code and making the changes I've
made,
I'm now a lot happier that the binding is thread safe - as long as
libxml2
is compiled using the --with-threads option. Note though that this
doesn't
apply to custom parser error handlers - it's up to you to be thread-safe
there. Later on I'd like to devise some specific tests for threadsafe
use.
* Error handler procs - won't get GC'd while you're not looking any
more (oops :->). This was causing a seemingly-random segfault.
I need people to look over the changes, try the new stuff out, play with
it, and generally try to break it - let me know if it works/doesn't work,
could be done better, or whatever. I'm hoping to really attack the bugs we
know about, and root out those we don't, but I won't be able to do it
without feedback as the work progresses...
Cheers,
--
Ross Bamford - [EMAIL PROTECTED]
_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel
_______________________________________________ libxml-devel mailing list libxml-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/libxml-devel