Pork: The Brave New World

It doesn’t look like my oink patches are going to reach upstream anytime soon. In fact, in the past year no patches have landed in the oink tree. I think this is unfortunate, but I have my own repository at http://hg.mozilla.org and will continue working on my fork. So allow me to introduce Pork, the Oink fork. So if anyone has any exciting source location, pretty printing or other elsa improvements, I hope to eventually see those land in pork.

Note, pork is just an informal name for the fork, I am not currently planning to do any source renaming or repository renaming.

Pork: Now in a VMware flavour

bsmedberg pointed out that oink seems a bit intimidating to setup and it would be nice if it came in virtual machine. So I have oink/mcpp/etc packaged up in a virtual machine that can build Mozilla with gcc3.4, run dehydra analyses and produce automated patches. If you want to play with that, post a comment and I’ll reply with a download link.

A couple of people asked me about some simple code-scans to see for problems and optimization opportunities. Next week I am going to post few simple dehydra recipes on how to look for patterns in the code. It’s dead simple with JavaScript and some minimal shell knowledge to aggregate the results. The VM should provide a good way to get started.

Outparams: QueryInterface Rewrite Milestone Reached

I finally got Mozilla to compile with the outparam-less qi call. The outparamdel part of that was surprisingly easy and straightforward. I   also learned all kinds of fun details about multiple inheritance and fun ways to construct functions out of macro segments. The next step is to get the code to run. I’ll also have to look into a few minor MCPP issues that the rewrite uncovered. See QI bug for the gory details.


  1. You doing exceptionally well. Templated QI is a bold non-obvious move 🙂

    I am curious whether it will run as expected. I was only able to make templated components register, if all template code was in the header files.

    I have a couple of technical questions, if you don’t mind.

    1. What is your version of cpp-3.4? I cannot build outparamdel test, because cpp-3.4 from debian/unstable doesn’t understand ‘-Wp,-K’.

    2. ‘platform-model’ seems to be completely broken for all the time since Aug 2006 (start of the repo). Is there anything in your tools that depend on it?

    3. Oink tests don’t pass. I am getting this error:
    # qual-check-resrz/../elsa/in/t0111.cc
    ./qual -fq-no-explain-errors -fq-no-names ../elsa/in/t0111.cc -o-srz /dev/shm/oink.buildtmp/test/t0111.cc.1.qdir -tr nohashlines -q-config ../libqual/config/taint.lattice -fq-no-compactify-graph
    qual: unimplemented: ../elsa/xml_type_writer.cc:197: XmlTypeWriter::toXml for T_DEPENDENTSIZEDARRAY
    make[1]: *** [qual-check-resrz/../elsa/in/t0111.cc] Error 64
    make[1]: Leaving directory `/home/sergei/src/oink/oink-stack/oink’
    make: *** [check-rec] Error 1

    Is that normal?

  2. FYI, usage of ‘pork’ in the name of the tool may have intended consequences with Jewish and Muslim audiences. You may consult MoCo marketing team dealing with trademarks on this issues.

    Feel free to remove this.