While pstack is essentially a tool to run POETS applications, it is also
an environment to develop applications. The stack plays nicely with
application generation tools developed at Newcastle
(pml and
gml) and introduces new
features aimed at improving programming productivity.
pstack is back-end agnostic and can run POETS applications on top of
anything that can compute the state of POETS devices, usually a
high-performance simulator such as psim or actual POETS
hardware. Through pcli, however, users can also load and
use lightweight application-specific engines that they developed as part of
their applications. These, like other engines, would be tasked with simulating
a subset of devices in the user's application. However, they differ from
conventional engines in two important aspects:
- They run locally on the user's machine (specifically within
pcli), and - They are developed in Python! 🎉
Application engines may be slower than dedicated general-purpose engines but they permit powerful manipulations of POETS processes with several end goals in mind:
-
Flexible IO: they can implement various high-level interfaces to feed data in and out of a POETS process from files, databases, web services and all sorts of other channels.
-
Debugging Breakpoints: they can suspend the execution of a POETS process when certain conditions are met, allowing users to inspect local message buffers and debug problematic execution scenarios.
-
Productivity: they make it possible to leverage high-level programming productivity to develop POETS applications.
For a real-life example of an application engine in action see
example-engine.py.