nspluginwrapper 1.1.2, a snapshot from the development branch, is now available. As usual, since this is work-in-progress, you will only find source code here and no binary packages. Besides, the download link is at the bottom so that you have a chance to read what I have to say about this snapshot.
Here is a short list of changes since 1.1.0, details to follow:
Native plugins. nspluginwrapper is basically an out-of-process plugins viewer communicating with the browser through some RPC. Its primary goal was to allow Linux/i386 plugins (Adobe Flash, in particular) to run in Linux/x86_64 browsers. However, it became recently apparent that it can actually be useful to all kind of plugins, for reliability and security purposes. Red Hat pioneered this on Linux for a couple of distributions now. Then, this approach got popularised in Google Chrome. What's all this (confinement, or sandbox in Google terms) about? Well, the goals are two-fold:
/etc/shadow), etc.
Dan Walsh blogged about an SELinux policy that was added to the Fedora Linux distribution. SELinux is one security model but you could also use RSBAC to achieve similar confinement through e.g. its jail functionality.
Note that wrapping native plugins is currently not enabled by default. You have to call the nspluginwrapper configuration utility with the -n or –native option for that.
Improved Flash 10 support. This version fixes a serious crasher that was occurring because the browser somehow passes a NULL XVisual to the plugin and I didn't check for it. I (wrongly) assumed that the NPSetWindowCallbackStruct::visual member was always set. NPAPI specifications don't tell so explicitly but they don't say it could be NULL either… It would seem more logical to me that it's always valid because a plugin may actually need a graphics context (display, visual, colormap, etc.) to display native windows for example (pop-up menu, file selector, etc.).
A serious bug in RPC was fixed. This bug was exhausted because of (i) windowless mode triggering a lot of NPN_InvalidateRect() calls and (ii) Flash Player 10 calling this function, among others like NPN_UserAgent() or NPN_GetURLNotify(), outside of an NPP_*() call initiated by the browser. i.e. Flash Player was calling those functions from a timer callback. You can easily imagine what happens when each other sends a function request to the other side: each other is waiting for an ACK as defined in my protocol but they receive the begining of a new message request instead. The RPC protocol specs were updated to cope with this case, though a smarter optimisation may be brought back into nspluginwrapper2.
BTW, there is a problem left with Flash 10 (only?) and windowless: the pop-up menu currently won't appear when you right-click on the plugin drawing area. Besides, scrolling with the wheel mouse button will also won't work with either mode (windowless or not). It turns out this didn't work before anyway, but a fix is planned.
New hosts and targets. nspluginwrapper can now be run on Solaris/x86 (2008.05). I have only tested native Flash Player plugins there.
It's also worth mentioning that Transitive is using nspluginwrapper to allow cross-execution of plugins with their flagship dynamic binary translation technology: QuickTransit. The first (free) product publicly available is QuickTransit® for Solaris™/x86 with Adobe® Reader® that, as its name stands for, allows you to run Adobe Reader for Solaris/SPARC on a Solaris/x86 platform. They also plan to use the technology for other hosts/targets.
Downloads. nspluginwrapper 1.1.2 is available as source code only. You can get packages from your distributor or build your own. RPMs are really simple to get: rpm -tb nspluginwrapper-1.1.2.tar.bz2 will generate binary RPMs in your usual tree.
Mailing-list. A mailing-list is now available to discuss nspluginrapper development. You can join or read the archives.