Pop Release 9

Pop 9 introduces a number of enhancements to contracts, fixes for Windows, new data structures for more hub-like behavior and more! We are very proud to release pop 9!

Async Contracts

Up until now async contracts were not allowed in pop, using async functions for pre and post contracts would create issues in when the contracts would be called. This has been resolved with more powerful function introspection and pass-through. Now an async function can have async contracts.

Support for Async generators and contracts has also been deepened allowing contracts to work as expected for async generators.

Async functions have always worked well in pop, but these additions make async contractors much easier to build and maintain.

New Data Structures

The pop sub has been extended to include a plugin called data. As we have been building more and more projects in pop we found that a number of data patterns seemed to keep coming up. Instead of always just adding a dict to the hub we wanted to introduce data structures that integrated more seamlessly with the hub.

We are pleased to introduce hub.pop.data.map to create a nested namespace. hub.pop.data.imap allows for an immutable nested namespace and will be used for the hub.OPT structure in the future. Finally we have hub.pop.data.dmap, the dynamic namespace. This structure tracks what function placed data on the structure so that the function can be re-run to refresh data sets, it is particularly useful for collection patterns.

Dyne Name Extensions

Dynamic names used for vertical app merging gathers data that can be used to create extensions to app merging. Instead of hiding this data deep inside of the hub it has now been extended and exposed so that it is easy for third party apps to dig into the internals or app merging. The new hub.pop.dyne module exposes functions that are useful in refreshing and pulling the dyne data.

Windows Fixes

Pop has run on Windows since version 7, but there were a few lingering issues. This release gets the tests running on Windows and repairs a few lingering issues in the corners of pop that were coming up on Windows.