# Release notes IPKISS 3.1.2¶

IPKISS 3.1.2 is a release combining bugfixes and small improvements. Please check the changelog for the full list of changes.

The highlights are shown below:

## Improvements to internal caching¶

In previous versions of IPKISS, in some cases the value of a property was calculated multiple times. In most cases this lead to a slowdown. We took a thorough look at the internal caching mechanisms and fixed several bugs. This also results in an average performance improvement of 25% in IPKISS.

## Virtual fabrication¶

We did a several bugfixes / improvements in the virtual fabrication (used to export your layout for physical simulations such as FDTD, mode solvers). In summary:

• small slivers at the edge of the simulation window should now be discarded,
• boundaries with coinciding edges can be fabricated,
• 2D cross-sections can now be joined if they have the same cross-section,
• improved error message when a material stack can not be found,
• and the NOT operation on layers is now supported.

## Using matplotlib notebook¶

You can now use the %matplotlib notebook magic in a notebook to use interactive plotting of IPKISS PCells. This used to fail when trying to visualize multiple times. For example, you can now do:

%matplotlib notebook
RingRect180DropFilter().Layout().visualize(annotate=True)


Note that in a live notebook session, you can now scroll/pan/save the figure.