============= 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.