Version history

Gathered from commit messages. Trivial changes omitted.   

Changes to Loyc Core libraries and LES

v30.1: June 15, 2022

Loyc.Syntax:

Loyc.Collections:

Loyc.Essentials:

v30.0: January 26, 2021

Changes to the IEnumerable<T> extension methods in EnumerableExt:

Other changes:

v2.9.0.3 (a.k.a. v29): January 13, 2021

Potentially breaking changes & deprecations:

Note: it’s not as bad as it looks - most users will be unaffected.

Loyc.Interfaces:

Loyc.Essentials:

Loyc.Collections:

Loyc.Syntax:

LES2:

Non-breaking changes

Loyc.Interfaces

Loyc.Essentials:

Loyc.Collections:

Loyc.Syntax:

LES2:

LES3:

v2.8.3: November 16, 2020

Loyc.Interfaces:

Loyc.Essentials:

Loyc.Math:

Loyc.Syntax:

v2.8.2: July 24, 2020

Loyc.Syntax:

v2.8.1: July 6, 2020

Loyc.Essentials:

Loyc.Collections:

Loyc.Syntax:

v2.8.0: July 3, 2020

Potentially breaking changes:

General:

Loyc.Interfaces:

Loyc.Essentials:

Loyc.Syntax:

Changes to LES3 (beta):

Changes to LES2 precedence table, matching changes in LES3:

Other changes:

Loyc.Interfaces:

Loyc.Essentials:

Loyc.Collections:

Loyc.Syntax:

v2.7.2: April 4, 2020

v2.7.1.4: March 29, 2020

v2.7.0.4: March 10, 2020 (re-release of 2.7.0.3)

There are a bunch of breaking changes here, most notably the fact that you need to add a reference to Loyc.Interfaces.dll. This is also a transitionary release: more breaking changes will occur in v2.8.0.0 (semantic version 28.0.0), and it’s probably wise to upgrade just one semantic version at a time.

Apologies: the new Loyc.Interfaces package was broken in NuGet in v2.7.0.3

Regularization of collection interfaces

Several changes were made to the collection interfaces to make the set more complete, consistent and useful.

Each of the three common types of collection (collection, list, dictionary) now has 3-4 interfaces:

  1. “AndReadOnly” interfaces (IListAndReadOnly<T>, ICollectionAndReadOnly<T>, IDictionaryAndReadOnly<K,V>) are to be implemented by read-only sequences that want to implement the writable interface (IList<T>, IDictionary<K,V>) for compatibility reasons.
  2. “AndSource” interfaces (ICollectionAndSource<T>, IListAndListSource<T>) implement “AndReadOnly” (e.g. IListAndListSource<T> implements IListAndReadOnly<T>) but include an enhanced Loyc interface (IListSource<T> is the enhanced version of IReadOnlyList<T> and ICollectionSource<T> is the enhanced version of IReadOnlyCollection<T>).
  3. An “Impl” interface (IListImpl<T>, ICollectionImpl<T>, IDictionaryImpl<K, V>) is the main interface that editable Loyc collection types should implement.
  4. Extended interfaces (ICollectionEx<T>, IListEx<T>, IDictionaryEx<T>) are variations that add extra functionality to allow sophisticated collection types to offer higher performance for some operations.

Categories 1-3 exist mainly for the purpose of disambiguation and you should generally NOT create variables of these types, as explained in the documentation of IListImpl<T>.

Loyc.Interfaces.dll

Added Loyc.Interfaces.dll (available on NuGet) to hold (almost) all interfaces defined in Loyc.Essentials.dll, Loyc.Syntax.dll, etc. Aside from interfaces, enums, and delegates, it also contains a small number of essential structs and classes, most notably Symbol, UString, Maybe<T>, and Localize. These are types that the interfaces refer to, or that the concrete types themselves depend on. This new library allows you to use Loyc interfaces without taking a dependency on the heavier Loyc.Essentials library. However, this initial release is heavier than I would like at 84KB, as it includes some concrete types that I would rather not include (they are included because Symbol, UString, Maybe<T>, and/or Localize depend on them, directly or indirectly). Some of these types will be moved back to Loyc.Essentials in a future version.

Loyc.Essentials

Changes that are most likely to be breaking:

Other changes:

Loyc.Collections:

Loyc.Syntax:

v2.6.9: January 21, 2020

Loyc.Essentials:

Loyc.Collections:

Loyc.Utilities:

v2.6.8: May 12, 2019

v2.6.7: March 17, 2019

v2.6.6: March 16, 2019

v2.6.5: February 17, 2019

Loyc.Syntax:

v2.6.4: September 18, 2018

v2.6.3: July 23, 2018

Loyc.Syntax:

v2.6.2: October 1, 2017

v2.6.1: September 28, 2017

LES

v2.6.0: August 30, 2017

Loyc.Essentials

Loyc.Syntax

v2.5.1: January 19, 2017

Loyc.Syntax

v2.5.0: January 13, 2017

Loyc.Essentials

Localization

Message sinks (logging)

v2.4.2: January 8, 2017

LESv3 (prerelease) changed:

v2.4.0.1: December 26, 2016

v2.3.3: December 21, 2016

v2.3.2: December 12, 2016

v2.3.1: December 11, 2016

Loyc.Essentials was split into Loyc.Essentials and Loyc.Math. Loyc.Math contains

However, Loyc.Essentials retains most of the math interface definitions.

Loyc.Syntax and Loyc.Collections reference Loyc.Essentials but not Loyc.Math.

Some static classes were split between Loyc.Essentials & Loyc.Math:

Other changes:

v2.2.0: December 7, 2016

v2.1.0: December 3, 2016

v2.0.0: November 23, 2016

v1.9.6: November 23, 2016

v1.9.5: November 14, 2016

v1.9.4: October 25, 2016

v1.9.3: October 12, 2016

v1.9.2: September 3, 2016

v1.9.0: July 26, 2016

v1.8.1: June 13, 2016

Minor changes:

v1.7.6: 2016

v1.7.5: April 29, 2016

v1.7.4: April 18, 2016

v1.7.3: April 18, 2016

v1.7.2: April 1, 2016

v1.6.0: Mar 9, 2016

v1.5.1: Mar 5, 2016

v1.5.0: Mar 2, 2016

v1.4.1: Feb 28, 2016

v1.4.0: Aug 25, 2015

July updates: forgot to raise version number

v1.3.2: Jun 21, 2015

v1.3.1: Jun 14, 2015

v1.3.0: May 27, 2015

I’m not attempting to make release notes this far back, although the vast majority of code and features were written well before v1.0.