From: Ned K. <ne...@bi...> - 2003-07-22 20:27:40
|
I was looking at the Syck from CVS. It wasn't clear to me what the extent of Syck actually was, first; it seemed like the contents of the syck/lib directory would be it, but then there's a lot in ext/ruby/ext/syck that look like they might overlap. Anyway... I was thinking about adding YAML support to Squeak by using Syck. We can get to external code via plugins. However, it's not really possible to call back to the Squeak interpreter from plugin code, so parse() would have to be more or less atomic (not all the platforms that support Squeak support OS-level threads, so I can't just spin off a thread to do the parsing). I can do some object allocation, though, in plugin code if that would help (and set instance variables, etc. if necessary). But I can't guarantee that the allocated objects wouldn't get moved during garbage collection. It would probably work better to have the parse_handler collect all the nodes from Syck in a big table (or even array) somewhere and then let the Squeak code iterate through them after parse() finishes. Some questions: * is the node that is returned from the parser via the parse_handler then deallocated after the handler returns? It looks like it is if it isn't used as an anchor, right? So I'd have to copy it to somewhere else. * What about the memory that's pointed to by the node? Is that deallocated too? * is the parse_handler responsible for setting the SYMID in the node? Seems like if the handler generates the SYMID then the node can't have a proper one set when it is passed to the handler. Thanks, -- Ned Konz http://bike-nomad.com GPG key ID: BEEA7EFE |