Hang on! My understanding of things was that version 0.42 was the first
version of Sablotron which was supposed to be thread safe. This is what was
said in the release notes, after all. In version 0.41, it was said that the
API was changed to support thread safety, but the underlying changes (moving
global variables into a thread context) needed to be made.

-----Original Message-----
From: Sterling Hughes [mailto:[EMAIL PROTECTED]]
Sent: Monday, September 04, 2000 12:18 PM
To: Sablotron Mailing List
Subject: Re: [Sab] FYI: PHP Sablot extension


Hey,
    Sorry to here that (for two reasons)...

>From what I knew/understood from some messages on the mailing list you
didn't
want to commit your module to our CVS server.  And myself, being one who
hates
politics and loves coding, decided to take their word for it and go
implement it
myself (I also disagreed on some points of implementation, but I could have
discussed that with you and made the changes to your code).

It actually took me quite a while (27 hours of programming + debugging, and
another 9 for stuff like installing Sablotron and learning the API) to make
this
module, its sucks that I had to re-write it.

Actually a quick look at the cvsusers file shows that you've had commit
access
for quite some time now (about a month, maybe more), so (unbeknownst to you
I
guess) you've had the ability to commit this extension for a while now.

The new module was written from scratch, comparing implementations it has a
couple improvements both API wise and internal design wise:

    Internal improvements
        - One function to store both log and error messages.  Instead of two
        identical functions.
        - Log + Error messages are not copied into an identical array and
then
        parsed on the fly when a request for the messages is made, instead
they
are
        parsed when the error is caught, with less memory required, and
placed
into
        a linked list of errors, which is cleared after every error.
        - The module implements PHP's threadsafe features, not really
important
yet,
        since Sablotron is not threadsafe.  However, when Sablotron becomes
        threadsafe, the PHP module will be ready.
        - The module uses the latest Zend API macros and functions,
        adding increased speed, error checking and making it less
susceptible to
        changes in the Zend API.
        - The module uses the 0.43 API functions such as
SablotProcessStrings
and
        SablotProcessStringsWithBase
        - The code looks nicer (is more readable), of course this is a
completely
        biased opinion, however, it is better documented and conforms to K&R
        style guidelines.
        - The code is consistent with the other code in PHP.  ie, it looks
like
all the
        other committed code.

        API Improvements....
        - Output buffering support, meaning you can go:
        <?php
        xslt_output_begintransform("some.xsl");
        // All output is put through some.xsl
        xslt_output_endtransform();
        ?>
        - Full support for the SAX Handlers
        - Optional support for the error handlers, see wish list support for
the
        reasons for this.
        - Support for a simple API which does simple transformation
analagous to
        the SablotProcessFiles, SablotProcessStrings and SablotProcess
functions,
        different but same functionality.
        - Not an improvement, but also contains a more advanced API that
uses a
        Sablotron Processor.


Things I wish Sablotron had (I know you're all very busy and you probably
already have these things on your todo list):

    - Support for multiple instances of the Sablotron processor.  Bad things
happen
    when two concurrent processes access Sablotron at the same time.
    - Error handling so that the error messages are actually sent to the
error
    mechanism before the rest of the document is parsed.  Currently they are
only
    sent when the processor is destroyed (from what I understand).  The
reason I
    made the extra error handling optional is that I found unless you exited
out
of
    the program with PHP on error, later functions would cause a
Segmentation
    fault (by Sablotron).  Even when I exited out of Sablotron inside of the
error
    handling functions!

Code For the Sablotron extension to PHP4 is available through CVS to PHP or
you
can access it online from LXR:

http://lxr.php.net/source/php4/ext/sablot/sablot.c
http://lxr.php.net/source/php4/ext/sablot/php_sablot.h


-Sterling

--
Sterling Hughes
[EMAIL PROTECTED]

> Hi Stefan,
>
> It is fortunately that he submited before I do.
>
> For for information, I did however apply for a cvs access long time ago
> (requested by andi) but have not heard anything since. I did my best but
maybe
> someone else has their/his own plan. I obviously am not very happy about
it. I
> cannot do anything about it, can I?
>
> Regards,
>
> Steven
>
>
> Quoting Stefan Livieratos <[EMAIL PROTECTED]>:
>
> > Hi,
> >
> > in case you didn't notice:
> >
> > Sterling Hughes <[EMAIL PROTECTED]> wrote a (new) PHP Sablot
> > extension which he commited to the PHP CVS tree yesterday.
> >
> > Apart from wrappers for Sablotron's processing functions
> > the extension includes a SAX interface for expat and
> > "output buffering tie-ins" so that one can use Sablotron to process
> > the output of the PHP script directly.
> >
> > Regards,
> > Stefan Livieratos
> >
>
>
> -------------------------------------------------
> This mail sent through IMP: pc245.das.com.hk
>

Reply via email to