--------------------
New Features
- 446, 450 - Adds the ability for GuidType nodes to normalize a list of items, in order to generate stable guids for potentially re-encounterable data. This only works when generating a property norm value (getPropNorm) and does not work for purely type normalization (getTypeNorm). Storm keyword list argument parsing can be used to generate stable GUID using the CLI, Ingest or Storm mechanisms.
- 452 - Synapse now stores the current version of the Synapse library in the Cortex blob store at the end of Cortex initialization. This was done in order to prepare for eventually enforcing required upgrade paths for data migrations or other features.
- 447 - Added the new form ``inet:web:postref`` XREF to track an ``inet:web:post`` which refers to another node.
- 447 - Added the new form ``inet:web:action`` GUID to to track an arbitrary action by an ``inet:web:acct`. The actions tracked by this are by defined by [Synapse] user convention.
- 447 - Added the new form ``inet:web:actref`` XREF to track how an ``inet:web:action`` may have interacted with another node.
- 454 - Added the ``inet:web:chprofile`` GUID to track previous values of a ``inet:web:acct`` node, representing changes to user accounts or profiles.
- 454 - Added the ``inet:web:post:repost`` property to track the concept of a ``inet:web:post`` being a copy of another post.
- 455 - Added a pair of Storm (and Cortex) Configable options to enable and set logging levels for Storm queries. These are ``storm:query:log:en`` and ``storm:query:log:level``. This logs what the query is and what the user execution context was.
- 426 - Axon and AxonHost objects are now Configable objects with configuration definitions that are used to define their behavior.
Enhancements
- 442 - Python 2.7 support dropped from Synapse.
- 447 - Migrated all inet:net* forms to the inet:web:* space. The following is a map of the migrated forms and their corresponding new forms:
('inet:netuser', 'inet:web:acct')
('inet:netgroup', 'inet:web:group')
('inet:netmemb', 'inet:web:memb')
('inet:follows', 'inet:web:follows')
('inet:netpost', 'inet:web:post')
('inet:netfile', 'inet:web:file')
('ps:hasnetuser', 'ps:haswebacct')
('ou:hasnetuser', 'ou:haswebacct')
These forms will automatically be migrated in existing Cortexes. If XREF types were used to point to any of these forms and the cortex was not first migrated to v0.0.26, the XREF type migration will fail. It is recommended that users first upgrade to v0.0.26 prior to upgrading to v0.0.27.
- 447 - Added Storage.updateProperty() and Storage.updatePropertyValu() APIs to the Cortex storage layer for doing bulk property and property-by-value updates. These are explicitly NOT exposed in the Cortex class.
- 449 - Thinned out some components of the EventBus class for performance reasons. This did result in the removal of the synapse.eventbus.on() decorator for decorating functions to be used as event callbacks.
- 456 - Removed unused Synapse modules: synapse.hivemind, synapse.mindmeld, synapse.lib.moddef.
- 426 - Logging in tests is now controlled by the environmental variable ``SYN_TEST_LOG_LEVEL`` which, as an integer, will set the logging level used by the root logger.
- 426 - The environmental variable ``SYN_TEST_SKIP_LONG`` can be set to a non-zero integer to skip potentially long running tests. This can shave up to a minute of test execution time.
- 426 - Axons now have the in-memory cache enabled on their Cortex by default.
- 458 - The ``inet:web:acct:occupation`` property has been changed from a ``str:txt`` type to ``str:lwr`` to allow for better foldability between user-declared occupations.
Bugs
- 443 - Make the daemon return more useful error messages when an exception has occurred during execution of a remote request.
- 444, 445 - Allow an inet:srv4 type to accept an integer string as input. Also adds additional boundary checking when norming an ip:port string to ensure that irreversible inputs are not accepted.
- 453 - Cleaned up skifIfNoInternet() test helpers. They will now be allowed to fail unless the ``SYN_TEST_SKIP_INTERNET`` environmental variable is set to a non-zero integer.
- 426 - The synapse.lib.heap.Heap class was not properly responding to ``heap:resize`` events. This was remedied.
- 426 - Wrapped a .items() iterator in synapse.daemon.OnHelp with a list to prevent a RuntimeError.
- 426 - Fix the synapse.lib.service.SvcProxy.getSynSvcs() method to return a Telepath safe list instead of a dict.values() view object.
- 426 - Fix the synapse.lib.service.SvcProxy.__init__ to strap in event handlers AFTER initializing instance variables to avoid a race condition on startup.
- 426 - AxonHost now waits before advertising itself on the bus, and properly calculates the number of axons it needs to make. This addressed an issue where the AxonHost was generating a non-deterministic number of Axons.
- 426 - The Axon’s thread to make clones for itself on a ServiceBus now waits until a remote clone is made. This addressed an issue where the Axon would make extra clones for itself.
Documentation
- 448 - Added in-model documentation for the file: model defined in files.py.
- 451 - Added user guide information for Storm lift operations, lift(), guid() and alltags().
- 426 - Docstrings in the synapse.axon module were rewritten or added when needed.