[xmlsec] xmlsec library, memory allocation and initialization

Aleksey Sanin aleksey@aleksey.com
Thu, 14 Nov 2002 07:50:09 -0800


Hi, Marius!

I have good and bad news for you. The good news is that I am doing
some code refactoring right now and you might get all you want when
I am done. My current plan is to create an object system similar to one
found in GLib/GTK with universal constructors and destructors.
The bad news is that you still need to have something similar in LibXML
as far as I can understand. And I am not sure that this will be easy.

Aleksey



Marius Kjeldahl wrote:

> Hi all (and Aleksey)...
>
> I'm embedding libxml2 and xmlsec into lua (http://www.lua.org/) and 
> plan on using this for various applications dealing with secure credit 
> card transactions.
>
> Lua (and most other scripting languages) uses different memory 
> management than the explicit alloc/free found in lower level 
> languages, and ideally I would like to avoid introducing "c-style" 
> memory management in the scripting part of the application.
>
> In lua, it is possible to add something called "metatables" to objects 
> (in general) and "userdata" (which is memory allocated by the lua 
> memory allocater which can be garbage collected automatically).
>
> If xmlsec would separate memory allocation from initialization, 
> supporting garbage collection (and other methods, like reference 
> counting that perl use) would be quite easy.
>
> In xmlsec the method xmlSecSimpleKeysMngrCreate currently does BOTH 
> memory allocation and initialization. This means it is difficult to 
> allocate the memory from within lua (to enable garbage collection). 
> Ideally, one could split that function into two other functions:
>
> xmlSecSimpleKeysMngrAlloc which allocates the memory
>
> and
>
> xmlSecSimpleKeysMngrInit which initialize it
>
> Then xmlSecSimpleKeysMngrCreate would simply call both of them in 
> order and behave just like before.
>
> These changes throughout the xmlsec library would probably help 
> getting xmlsec into more scriptable cores like Lua, Perl and more, and 
> would ease memory and object management considerably under those 
> higher level languages.
>
> Any other ideas on how to accomplish something similar? I'm writing 
> more and more applications using script languages these days, and I am 
> getting spoiled with avoiding explicit memory management.
>