Extensibility.

The system is obviously extensible. First, since all standard widgets are written in Perl, nothing prevents a programmer from adding new widgets with arbitrarily complex behavior. Second, PRIMA quite naturally supports extension modules written in C/XS, because Perl5 itself supports them. However, it is not easy to write a C extension module which plugs itself into PRIMA class hierarchy, with all the fluency of PRIMA object manipulating and the convenience of the method overriding.

To facilitate these tasks, gencls script can generate different class registration routines for add-on modules. It is a responsibility of the module's author to call the registration routine during normal dynamic XS module initialization. gencls also supports generation of thunks for normal functions outside PRIMA class framework, much like SWIG does, though in more limited way. We exploited these possibilities to create a set of image processing modules, which are used now at the Protein Laboratory.