Version history

Gathered from commit messages. Trivial changes omitted.   

LoycCore and LES

v2.7.2: April 4, 2020

v2.7.1.4: March 29, 2020

This is probably the last release before support for .NET 3.5 and .NET 4 is dropped.

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

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>.


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.


Changes that are most likely to be breaking:

Other changes:



v2.6.9: January 21, 2020




v2.6.8: May 12, 2019

v2.6.7: March 17, 2019

v2.6.6: March 16, 2019

v2.6.5: February 17, 2019


v2.6.4: September 18, 2018

v2.6.3: July 23, 2018


v2.6.2: October 1, 2017

v2.6.1: September 28, 2017


v2.6.0: August 30, 2017



v2.5.1: January 19, 2017


v2.5.0: January 13, 2017



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.