Releases: justincpresley/ndn-python-svs
V0.3.17 Stability and Minor Maintenance
ndn-svs - Stability and Minor Maintenance V0.3.17
Simple Maintenance and Changes from minor. This includes modifying interests to be less strict (in case there's a time component) and includes the interest name in the case of a failure. (useful for debugging connection issues)
Like always, if you have any questions (even small ones), issues, or even concerns relating to this library or it's future; please reach out via an issue here.
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Future Additions:
- SVSync types are in the works see the docs!
- SecurityOptions will receive a healthy revisit
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.16 Stability and Minor Maintenance
ndn-svs - Stability and Minor Maintenance V0.3.16
Simple Maintenance and Changes from minor. This includes a proper clean error for publication limits, updated packages, and a doc page about types!
Like always, if you have any questions (even small ones), issues, or even concerns relating to this library or it's future; please reach out via an issue here.
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Additions:
Usability
- added
SVSyncPublicationTooLargeerror when publishing something too large, noted by issue #9
Libraries
- ndn-storage was much needed to be updated
- pycryptodomex was updated
- pytest was updated
- Sphinx and its typehints was updated
Documentation
- added SVSync types page for users to see future uses
Future Additions:
- SVSync types are in the works see the docs!
- SecurityOptions will receive a healthy revisit
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.15 Stability and Minor Maintenance
ndn-svs - Stability and Minor Maintenance V0.3.15
Simple Maintenance and Changes from prototyping.
Like always, if you have any questions (even small ones), issues, or even concerns relating to this library's future; please reach out via an issue here.
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Additions:
Tests
- Updated Tests (mainly typing)
- Added
state_tabletesting
Performance
- Added an extra variable which eliminates a extra re-occurring operation
Deletions:
API
- no fetchDataPacket in Normal Sync: provides no use here.
Future Additions:
- Another SVSync type is in the works
- SecurityOptions will receive a healthy revisit
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.14 Performance via In-House
ndn-svs - Performance via In-House V0.3.14
In the past of this library, I have released updates that were neither fully tested nor were completely refactored for stability reasons. This puts applications using SVS in a uncomfortable position. Therefore, I have decided that all updates will be stable going forward unless otherwise specified. This means that the Future additions being added will first be presented in the form of a new branch and undergo a several week process. This is my way of protecting bugs/vulnerabilities from being in the supply chain of your application.
Nevertheless , this release (while it does not add any additions) greatly impacts this library.
In this release, performance ended up taking over by a land slide with solid numbers to back it up.
NDN Encoding in Python is... much slower than C. I have been finding ways to mitigate this like storing the last wire to limit encoding. This time, I have been effective at doing this again. Instead of using the default Tlv Strutures, I simply do the encoding myself inside a slots structure (to my knowledge the fastest way of accessing elements). I tested this in-house way with the previous structure more than 10 times and found that this in-house way was roughly 11-14 milliseconds faster having 200+ entries. This might not seem like much, but since this is a networking library; the difference is huge. I also changed various other things like forming a Statevector out of a Component which is not included in that measurement making this update be the biggest update dealing with performance.
In the long future, python-ndn might incorporate C for it's encoding or make other major encoding enhancements. If this happens, I will of course will go with the fastest option.
Like always, if you have any questions (even small ones), issues, or even concerns relating to this library's future; please reach out via an issue here.
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Additions:
Requirements
- Updated
sphinx-autodoc-typehintsto the latest version.
Performance
- More multi-var assignments
- Use
Componentinstead ofNamewhen creating and appendingComponentsto aName. - Forming a Statevector from a
Componenthas dramatically been improved - A Statevector now stores nids as strings instead of bytes due to majority of operations dealing with the nid as a string.
- In-house encoding / structure of a Statevector
Bug Fixes:
Variables
- The
Sharedtype now properly uses class variables instead of hardcoding values.
Future Additions:
- Another SVSync type is in the works
- SecurityOptions will receive a healthy revisit
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.13 Cleaner Code
ndn-svs - Cleaner Code V0.3.13
I know what you might be thinking, "Where's the future addition?"
Along the way of fulfilling that plan, I ran into many aspects of the code that simply left a sour taste in my mouth and likely your mouth as well. Hardcoding values and inconsistent naming in similar variables and functions to say a few. Not only that, different types (normal vs shared) did not use the same components when specifying the sync vs data interests.
To accompany these coding changes, I've also incorporated some important performance enhancements and found a security vulnerability which could be used to update the state vector while not being authorized.
Not to promise anything, but I have definitely progressed along the path of delivering a future addition in the next update. As always, be on the lookout!
This is a stable release but does slightly change the API (see chat.py).
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Additions:
No Hardcoding
- added
tlv.pyfor Tlv Types - added class variables for any other variables
Proper Naming
- similar component naming across Shared and Normal types of SVSync
seqno>seqnum- similar functions have similar names (sendPropInterest, sendSyncInterest) and better describe their usage
Performance related
- speed up same-vector encoding via storing the last encoded wire: this HEAVILY decreases the CPU cost of SVSync when nodes join and when no data has been published in awhile.
Useability
- added
getNumTasks()andgetWindowSize()to the AsyncWindow tool - raise an expection
SVSyncUnwaitedThreadinstead of not doing anything when performing actions on a SVSync thread that was not waited on.
Bug Fixes:
Security
- balancer data packets were not signed / verified which is a security vulnerability that could have been exposited if left unpatched.
Future Additions:
- Another SVSync type is in the works
- SecurityOptions will receive a healthy revisit
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.12 Accessibility Update
ndn-svs - Accessibility Update V0.3.12
This accessibility update not only makes SVS compatible with the latest version of Python3, but also brings welcomed API additions, an increase in performance for the chat.py example, and a decrease in startup time for non-threaded versions of SVS. I performed strenuous testing on this release, so I would consider this update to be a stable release.
The next update should incorporate one of the future additions seen below, so be on the lookout!
NOTE: It is heavily advised to try to keep ndn-svs up to date with the latest release.
Additions:
Python 3.10 support
More API
fetchDataPacket()for all types/versions in case users want the packet instead of the data (useful for the command below).serveDataPacket()for all versions of the Shared type. - This allows you to serve some data packets but not all, allowing the user of this library to choose what is import.
Examples Updated
- Added
-i(--interval) for count.py which allows you to choose how fast data is published.
Bug Fixes:
Internal
- Reduced Balancer window size as this process should not need or use that many tasks.
- Fully removes any
ensure_future()commands withcreate_taskwhich is more support in asyncio. - Fixed a error related to immediately publishing data in non-thread versions of SVS resulting in that data not having a route (meaning others would not get that node's data).
Examples
- Removed an extra task in chat.py caused by calling
AsyncWindow.gather()in the on_missing_data function (which in this case was not needed).
Future Additions:
- Another SVSync type is in the works
- SecurityOptions will receive a healthy revisit
- More options will be added to customize SVSync per environment
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.11 Sliding Window
ndn-svs - Sliding Window V0.3.11
Comparatively, this is an important and much needed update. In the past releases, it was up to the user to deal with fetching data, and internal mechanisms like the balancer sent interests sequentially. To combat this, I added a new easy-to-use tool AsyncWindow which does sequential logic asynchronously (which heavily speeds up data retrieval). Users of the SVS library are welcomed to look at the chat.py example for guidance on how to exact do this in their application. I also touched up some minor bugs as well.
Additions:
- AsyncWindow API class
- all sequential fetching internally use AsyncWindow and users can use this for fetching data as well
- updated documentation
Bug Fixes:
- fetchData retries account for invalid packets
- SVS internals properly releases control for appropriate amounts of time
Future Plans:
- More options will be added to customize SVSync per environment and to increase testing
- SecurityOptions will receive a healthy revisit
- Another SVSync type is in the works
- Documentation will receive a heavy amount of additions for ease-of-use and overall coverage
V0.3.10 Storage Options
ndn-svs - Storage Options V0.3.10
This is another minor update in terms of overall usability. ndn-python-repo was not sufficient to be the method of creating different storage types.
Additions:
- relies on ndn-storage rather than ndn-python-repo (which limited storage options)
- updated docs to reflect changes
- changed requirements to be the latest version
Deletions:
- MemoryStorage replaces SVSyncStorage which has resulted in its removal.
Bug Fixes:
- both examples and thread versions of SVSync did not catch an NFD exception, changes made
Future Plans:
- Sliding Window for sending interests
- More options will be added to customize SVSync per environment and to increase testing
- SecurityOptions will receive a healthy revisit
- Another SVSync type is in the works
V0.3.9 Improved Usability
ndn-svs - Useability V0.3.9
This is a very minor update despite the versioning.
Additions:
- updated docs with correct information and make it more general (like not specifying a multicast version)
- count.py example is make more user friendly via --verbose (-v) flag
- changed requirements to be the latest version
Bug Fixes:
- docs now compile correctly, this was a current issue that would affect future releases if not fixed
I did some testing v0.3.6 -> v0.3.9 to try and make ndn-svs examples more accessible. Ended up reverting back.
V0.3.6 Readability and Minor Bugs
ndn-svs - Readability and Minor Bugs V0.3.6
Additions:
- Libraries are alphabetically order (along with level ordered)
- All Functions are typed
- Most Single variables are typed (Multiple variable assignment > Typed Single Assignment for performance > readability)
- Found a few inconsistent code (extra spaces)
Bug Fixes:
- SVSyncBalancer: configured a StateVector wrong, fixed (TESTED)