All Versions
Latest Version
Avg Release Cycle
240 days
Latest Release
1245 days ago

Changelog History

  • v3.0.0 Changes

    July 06, 2020

    ๐Ÿš€ This release contains a few (minor) breaking changes. Generated 2.x ID's are still compatible with 3.x ID's.

    • Most of the constructor overloads for the IdGenerator have been replaced with a single constructor which accepts IdGeneratorOptions that contains the ITimeSource, IdStructure and SequenceOverflowStrategy.
    • The MaskConfig class is now more appropriately named IdStructure since it describes the structure of the generated ID's.
    • ๐Ÿšš The UseSpinWait property has moved to the IdGeneratorOptions and is now an enum of type SequenceOverflowStrategy instead of a boolean value. Note that this property has also been renamed in the config file (from useSpinWait to sequenceOverflowStrategy) and is no longer a boolean but requires one of the values from SequenceOverflowStrategy.
    • ID is now Id (only used as return value by the FromId(...) method)
  • v2.4.1 Changes

    July 02, 2020

    ๐Ÿ”ง The IdGenerator now offers a spinwaiting strategy when a sequenceoverflow occurs instead of throwing a SequenceOverflowException. This will spinwait until the next tick and then return a new Id. New constructoroverloads have been added to be able to set this property at construction time. Also the configuration package supports this new option with a useSpinWait attribute on the idGenerator element.

  • v2.4 Changes

    July 02, 2020

    ๐Ÿ›  Fix concurrency issue (see PR #23). Upped version.

  • v2.3 Changes

    April 20, 2020

    ๐Ÿ”„ Changes:

    • ๐Ÿ‘€ Added TryCreate() method (see #21)
    • ๐Ÿ‘€ Fix bug where different instances didn't share the same offset (see #20)
  • v2.1 Changes

    February 19, 2020

    ๐Ÿ”„ Changes:

    • ๐Ÿ‘ Support for NetStandard 1.1+
    • ๐Ÿ”ง Moved AppConfig stuff to separate IDGen.Configuration package
    • ID now implements IEquatable
    • ๐Ÿ›  Fixed some ArgumentOutOfRangeExceptions from the IdGenerator's ctor messages
    • ๐Ÿ‘€ Fixed bug (see #18) where internal timer was started only on first use instead of on instantiation. Thanks @stuart-beattie!
    • ๐Ÿ”จ Minor internal cleanup / refactoring

    ๐Ÿ’ฅ Breaking changes:

    If you're using the IdGenerator.GetFromConfig(...) method make sure you check the README. The changes aren't big, but breaking nonetheless. How to fix:

    • ๐Ÿ”ง Install IdGen.Configuration package
    • ๐Ÿ”„ Change the configsection type from:
      ๐Ÿ”ง IdGen.Configuration.IdGeneratorsSection, IdGen
      ๐Ÿ”ง IdGen.Configuration.IdGeneratorsSection, IdGen.Configuration
    • โž• Add a using IdGen.Configuration
    • ๐Ÿ”„ Change IdGenerator.GetFromConfig(...) to AppConfigFactory.GetFromConfig(...)
  • v2.0.3 Changes

    August 02, 2018
    • โž• Added FromId() method to 'decode' an Id
    • ๐Ÿ”จ Minor internal refactoring
  • v2.0.1 Changes

    November 23, 2016

    ๐Ÿ›  Timesource(s) is (are) no longer fixed to 'millisecond resolution'; we now have the concept of a 'tick'. Each timesource can define it's own definition of what a 'tick' is, be it a millisecond or a minute or any other timespan.

    This means breaking changes in the ITimeSource interface and the way timesources are implemented and breaking changes in some of the MaskConfig's method signatures.

    The IIdGenerator<T> interface now explicitly exposes an IdGenerator's ITimeSource, MaskConfig and Epoch as (read-only) properties.

    ๐Ÿšš CreateMachineSpecificGenerator() & CreateThreadSpecificGenerator() methods have been removed; these are way to 'dangerous' to use anyway since they are very prone to 'collisions' in 'auto-generated' values for the IdGenerators.

  • v1.1 Changes

    June 29, 2015

    ๐ŸŽ Moved away from DateTime.UtcNow and implemented a better, millisecond resolution, DefaultTimeSource using QueryPerformanceCounter.

  • v1.0

    April 08, 2015