Skip to content

Releases: justincpresley/ndn-sync

v0.0.0-alpha.16 - 2024-02-27

28 Feb 03:53
Compare
Choose a tag to compare

Added

  • RWMutex is embedded into StateVector.
  • Update() for StateVector that updates the time for an entry. LastUpdated() pulls the time for a certain entry.

Changed

  • Scheduler operates entirely with time.Duration instead of int64 internally. This removes many type conversions and makes it more readable. (made possible with math/rand/v2)
  • Scheduler now has RWMutex instead of Mutex. This will not affect it's usage in our case now but could in other use cases.
  • Changed logic of OnTimer function within Core to read better.
  • De-interfaced StateVector.
  • Core now uses StateVectors additional functionality (mutexes and times). This unclutters the Core.
  • OrderedMap is now named NameMap, modernized different aspects of it. The internal list used is now fully hidden from external API.
  • Updated all dependencies.

Fixed

  • Copying a NameMap (previously OrderedMap) now correctly copies everything.

Removed

  • init.go, math/rand/v2 provides a simple seed for us to use from the get-go.

v0.0.0-alpha.15 - 2024-02-23

23 Feb 09:49
Compare
Choose a tag to compare

Added

  • Scheduler now has ApplyBounds() which must be called before Start(). This allows you to change the bounds after Start() and simplifies Scheduler to operate on bounds instead of jitter.
  • JitterToBounds() to help operate Scheduler.

Changed

  • After a Core exits Suppression state, more efficiently detect if a Sync Interest needs to be sent.
  • De-interface small simple structures: MissingData and StatusChange.
  • When a Core enters Suppression, set the record to the remote StateVector that caused Suppression. This greatly reduces storage operations while in Suppression.
  • Reorganized functions to match interface method order.
  • Changed naming of a constant variable and StateVector function to be more logical.
  • Moved to go 1.22, updated all dependencies.

Fixed

  • Core will enter Suppression based on its own datasets given that the dataset was not recently updated.

v0.0.0-alpha.14 - 2024-02-12

12 Feb 14:34
Compare
Choose a tag to compare

Added

  • EfficientSuppression option for SVS TwoStateCore. Found by @seijiotsu, this option ignores out-of-date Sync Interests within the network RTT which dramatically reduces the number of suppressions. With extremely sparse SVS networks, this option might incorporate delay. More on this is documented here and will later be added to the Spec.

Changed

  • Slight refactor of SVS Core. Removed many small inefficiencies in its logic. Operations were found unnecessary in both Suppression and Steady states.
  • Internal naming of variables and functions have been changed for clarity.
  • Reuse of a variable during StateVector encoding.

Fixed

  • Slight refactor of SVS Scheduler, found that it was incorporating jitter wrong.
  • SVS CoreConfig giving the appropriate Core type.

v0.0.0-alpha.13 - 2024-02-09

09 Feb 11:15
Compare
Choose a tag to compare

Added

  • OneStateCore option for testing purposes.

Changed

  • An SVS StateVector now resides within the application parameters' portion of a Sync Interest. While this is not follow the Spec currently, it will in due time as most libraries are incorporating this.
  • SVS Core now is entirely subscription-based and can support multiple channel listeners.
  • SVS Core is not tied to a particular dataset. You can now publish multiple datasets per node.
  • Changed SVS examples to follow NFD's new default Unix socket path.
  • Internal naming of variables and functions have been changed for clarity.
  • Updated dependencies.

v0.0.0-alpha.12 - 2023-08-31

01 Sep 05:40
Compare
Choose a tag to compare

Added

  • SVS Constants now contain enc.Components that are added in SVS's naming. This was not exposed previously.
  • BareSourceOrientedNaming which is a new NamingScheme that uses no additional enc.Components during SVS's naming.
  • OrderedMaps now take an Ordering: Canonical or LatestEntriesFirst.
  • OrderedMap is now less generic and more tied to our use-case of NDN. An Element now stores the key in both enc.Name and string forms. This results in slightly more memory usage but increases performance by minimizing the amount of 'name to string' and 'string to name' conversions throughout SVS.

Changed

  • SVS API is now enc.Name-based instead of being string-based.
  • OrderedMap API to reflect listed changes.
  • Updated dependencies.

v0.0.0-alpha.11 - 2023-02-03

03 Feb 20:48
Compare
Choose a tag to compare

Added

  • A new Optimized StateVector Encoding! Reduces 2+ bytes per entry. Set FormalEncoding to false to activate it.

Changed

  • Misspelling within SVS Constants.
  • Updated dependencies.

Fixed

  • Data race within Scheduler with the pairing of startTime and cycleTime.
  • Data race when resetting hearts within the Tracker of HealthSync.

Removed

  • Scheduler's Add() due to no-use. However, it can still be achieved via Set( someTime + TimeLeft() ).

v0.0.0-alpha.10 - 2023-01-06

06 Jan 17:41
Compare
Choose a tag to compare

Added

  • A new SVS Sync type HealthSync, an ephemeral sync for source health. It is still just a prototype however and STC.
  • A new SVS example to show off HealthSync.

Changed

  • Constants now holds time.Duration variables. Massively simplifies many areas of the SVS code including but not limited to Core and Scheduler.

v0.0.0-alpha.9 - 2023-01-01

01 Jan 23:25
Compare
Choose a tag to compare

Added

  • A new SVS HandlingOption! EqualTrafficHandling which spreads requests equally among the nodes. Please note that each handling option does have unique pros and cons.

Changed

  • SVS NewCore() is now a generic function taking a general CoreConfig. Opens the door for future options.
  • Be able to alter the SVS MissingData structure to help track the data you still need when looping.
  • SVS Core now provides a chan []MissingData rather than chan *[]MissingData.
  • Go-ify all getters.

v0.0.0-alpha.8 - 2022-12-29

29 Dec 08:42
Compare
Choose a tag to compare

Changed

  • SVS Core now provides a missing channel instead of taking a missing data callback. More low-level control and efficiency were primary factors for this change as well as the listed fix.
  • SVS Syncs now provide a HandlingOption for how the missing channel will be handled. Opens the door for future options.
  • License switch to ISC. The restrictions were not very friendly.
  • Renaming of variables, functions, and types.
  • Other small changes.

Fixed

  • An out-of-sync Core vulnerability caused by having a very slow missing data callback. The results could range from just receiving updates late to missing data entirely.

v0.0.0-alpha.7 - 2022-12-27

27 Dec 17:23
Compare
Choose a tag to compare

Changed

  • Completely refactored SVS Scheduler.
  • SVS's built-in fetchers for both NativeSync + SharedSync now use a channel of structs rather than a channel of funcs for readability and possible performance.
  • Utilize strings.Builder for the (stateVector).String() method.
  • Updated all dependencies.
  • Other small changes.

Removed

  • Dependencies and code not related to the first sync, SVS.