Here is the history of all versions.
From version 3.18.2018.04, the version numbering is: "Main.Release#.Year.2-digits month".
Between version 220.127.116.11 and version 18.104.22.168, the version numbering was: "Main.Year less 2000.Month.Release#".
From 2017-07-29, the source code archive file names contain their own SHA-256 hashing code.
- Versions 22.214.171.124 to 126.96.36.199, 2018-04-20
- Version 188.8.131.52, 2018-03-30
- Version 184.108.40.206, 2015-03-25
- Version 220.127.116.11, 2015-03-11
- Version 18.104.22.168, 2014-10-14
- Version 22.214.171.124, 2014-09-10
- Version 126.96.36.199, 2014-07-25
- Version 188.8.131.52, 2014-06-10
- Version 3.14.6, 2014-06-04
- Version 184.108.40.206 revision 2, 2014-05-16
- Version 220.127.116.11, 2014-05-13
- Version 3.14.5, 2014-05-05
- Version 2.14.3, 2014-03-17
- Version 2.0, 2013-10-09
- Version 1.0, 2013-07-13
More to come
- To take into account the new types of C# 7.0 and later.
- json format on some missing platforms (notably UWP).
(If enough demand. It is not a trivial job.)
Next version (not published yet) probably 3.18.2018.04
- Improved: All DLLs have a XML documentation file.
- Improved: the HTML documentation is adapted to the narrow screens (for mobiles).
- Modified: the version numbering is now: "Main.Release#.Year.2-digits month".
(What a mess ! I'm sorry. I promise not to change that anymore.)
- New NuGet packages:
The main package, containing the 8 main libraries.
The specific library for the WPF types.
This package depends on the main package.
The specific library for the Windows Forms types.
For versionning reasons, it includes the right main UniversalSerializer library. Therefore this package does not depend on the main package.
- New: a library for .NET Core 2.
- New: a library for UWP (Universal Windows).
- New: two libraries for Android (Mono.Android and Xamarin Forms).
- New: a library for .NET Standard 2 (tested with Xamarin Forms).
- New class constructors for UniversalSerializer.
- New: the class UniversalSerializer is thread-safe now.
- New: every library has a Tester application with a user interface.
- New: the Guid can be serialized, thanks to the new GuidContainer.
- Improved: compatibility with Linux (on Mono and on .NET Core 2).
- Improved: the file format is more portable. A portable container for
Nullable<T>has been added.
Note: files that are serialized with previous versions may be incompatible.
- Improved: compatibility of
It does not use Win32 methods (p/invoke) anymore.
- Improved: containers (
ITypeContainer) can be structures now.
- Modified: the source code directory organization, and many executable file names.
- Modified: the supported versions of Visual Studio are 2013 and 2017.
Other versions are not tested or supported.
Nullable<T>on framework .NET 3.5 .
- Fixed: read-only streams can be deserialized.
- Fixed: generic collections where the item type is an interface.
- Removed: The Windows Store framework (Windows Runtime 8 and 8.1) experiments, in favor to the UWP.
Note: the source code can still contain mentions to this framework.
- Removed: The PCL (Portable Class Library) experiments, in favor to the UWP, .NET Core and .NET Standard libraries.
Note: the source code can still contain mentions to this framework.
- Removed: The Windows Phone 7.1 and 8 on Silverlight.
Note 1: the source code can still contain mentions to this framework.
Note 2: there is still a library for Silverlight on Windows.
- Improved: parametric constructors can use inherited fields.
That makes more types serializable.
Please note that may prevent this version of UniversalSerializer from reading files that has been serialized using a previous version.
- Corrected: Arrays in
- Corrected: Circular types in a parametric-constructed class now work (except in some rare situations).
- Corrected: Circular types of a generic dictionary now work.
- Corrected: useless code removed.
- Added: Error descriptions to the documentation.
- Added: "Good practices" to the documentation.
- Improved: Error numbering connected to the documentation.
- Improved: incorrect external converters in .NET do not block containers anymore.
- Added: more WPF types are managed now.
- Added: separated WinForm test solution for .NET 3.5 .
- Improved: More types in System.Windows.Media are now serialized.
- Corrected: Main DLL for .NET 3.5 had a problem in a pure .NET 3.5 solution.
- Improved: speed of type analysis.
- Corrected: "ForceSerializeAttribute" did not work correctly on fields.
- Corrected: in Tester solution,
ForceSerializeOnPrivateFieldAndProperty.ForcedPrivateFieldwas not a field. (oups!)
- New: TypeMismatchException, when type casting is wrong after deserialization.
- New: When deserializing in a loop, sends EndOfStreamException in the end.
- Added: Many new test structures in the Benchmark.
- Corrected: Private properties marked by ForceSerialize are now serialized.
- Corrected: PCL for Windows 8 now has the new attributes.
- Changed: version numbering is: Main.Year-2000.Month.Release#.
- New directory
Documentationwith some html texts.
- New attributes
- New: takes
EditorBrowsableAttributeinto account to not serialize the field or property. That helps with Windows Forms in design mode.
- Corrected problems in type analysis when using filters on some conditions.
- Added: new columns in the tables that benchmark produces:
"Bytes/ms", "Data/file lengths", "data length/GC memory", "data length/Working set".
- Modified: Minor changes in the benchmark's UI.
- Improved: exception message in CLRBinaryFormatterContainer.
- New: test series
DifficultiesTests()in Tester solution.
- New solution "UniversalSerializer Lib .NET 4.5", optimized for .NET 4.5 using
- New solution "UniversalSerializer Lib .NET 3.5", less optimized than solutions for .NET 4.x, but can be necessary.
- Corrected: the .NET 4.0 solution "UniversalSerializer Lib" has no attribute
AggressiveInlininganymore. No more incompatibility with computers where .NET 4.5 is not installed.
- Corrected: In the benchmark, DataContractSerializer now can serialize instances and circular references.
- Some corrections.
- Corrected: error with circular types.
- Added: new types in Test solution.
- Added: new types in Benchmark.
- Modified: API and stream formats are version 3.0.
- Modified: Namespaces are renamed. UniversalSerializerLib2 -> UniversalSerializerLib3.
- Modified: Modifiers (filters & containers) are declared as classes now, and automatically found by serializer.
- Added: option Parameters.ModifiersAssemblies to declare assemblies that define modifiers.
Useful when modifiers can not be automatically found by serializer.
- Modified: Stream format version is now 3.0. It can not be read by previous UniversalSerializer (version 2.x)'s DLL..
- Improved: Saves DateTime.Kind in DateTimes.
- Improved: Benchmark's interface has been clarified a bit.
- Improved: All projects pass VS's code analysis with no error.
- New: test structures (as PrimitiveValueTypesStructure).
- New: logs warnings in the IDE.
- New: solution "UniversalSerializer Windows Store 8 PCL".
- New: solution "UniversalSerializer Windows Phone 7.1 experimental". Not perfect, but can be useful.
- Removed: option CustomModifiers.DoNotDuplicateStrings. Strings are always saved as references, in stream format 3.0.
- Removed: FastJSON and FastBinaryJSON from the benchmark solution, because they do not pass the new deserialized type checks.
- Removed: old UniversalSerializer version 1 from the benchmark solution.
- Corrected: Some regressions in benchmark.
- Note: DLL version 3 can read and modify version 2 streams, but not version 1 streams.
- New filter: CanTestDefaultConstructor.
- New filter: DefaultConstructorTestCleaner. Useful for WPF's System.Windows.Window.
- New container: DependencyPropertyContainer. Uses the right static DependencyProperty.
- Improved: benchmark tells when file paths does not exist.
- Improved: CLRTypeConverterContainer.cs checks type conversion capability first.
- Modified: benchmark is now 64 bits, as the majority of installed Windows now.
- Fixed: test solution for Windows Phone 8 now works well.
- Fixed: error with
public readonlyfields as constructor parameters.
- Fixed: some translations in the source code.
- Note: File formats are compatible with version 2.0 .
- Brand new serializer. All code is new, no code from version 1.0.
- 70 X faster, files are 100 X smaller, and it needs 110 X less RAM that the old version 1.
- Note: file formats have nothing in common with version 1.0.
DLL version 2.0 can not read files written with version 1.0.
This version was based on FastBinaryJSON, with many extensions and modifications.