History
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 3.14.7.9 and version 3.18.3.17, 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 3.18.4.15 to 3.18.4.17, 2018-04-20
- Version 3.18.3.14, 2018-03-30
- Version 3.15.3.13, 2015-03-25
- Version 3.15.1.12, 2015-03-11
- Version 3.14.10.11, 2014-10-14
- Version 3.14.9.10, 2014-09-10
- Version 3.14.7.9, 2014-07-25
- Version 3.14.6.2, 2014-06-10
- Version 3.14.6, 2014-06-04
- Version 3.14.5.2 revision 2, 2014-05-16
- Version 3.14.5.2, 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.)
Versions 3.18.4.15 to 3.18.4.17, 2018-04-20
- New NuGet packages:
- UniversalSerializer
The main package, containing the 8 main libraries. - UniversalSerializer.WPF
The specific library for the WPF types.
This package depends on the main package. - UniversalSerializer.Windows.Forms
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.
- UniversalSerializer
Version 3.18.3.14, 2018-03-30
- UniversalSerializer_3.18.3.14_E839F19AF67436EA0C4C5EF0FDB2647C2BCDF74D47DCB39592D58463DC86EA82.rar
- UniversalSerializer_3.18.3.14_6B1E085392256A5A38FD0229FFA13F032E67A4BDECF68223BE9880D385F0110D.zip
- 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
UniversalSerializerResourceTests.ResourceCounter
.
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. - Fixed:
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.
Version 3.15.3.13, 2015-03-25
- UniversalSerializer3.15.3.13_930A6878A05D7943E9575FAD48E2B6065EBE074FFD933D00BC33EEE2B01B15A7.rar
- UniversalSerializer3.15.3.13_232B6024002D37DDC30EC8EC41CD24C5470BD64C04D4E0240F46370AA64D7756.zip
- Improved: parametric constructors can use inherited fields.
That makes more types serializable. - Corrected:
Nullable<T>.hasValue
added.
Please note that may prevent this version of UniversalSerializer from reading files that has been serialized using a previous version.
Version 3.15.1.12, 2015-03-11
- Corrected: Arrays in
ParsedAssemblyQualifiedName
. - 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.
Version 3.14.10.11, 2014-10-14
- 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.
Version 3.14.9.10, 2014-09-10
- Improved: speed of type analysis.
- Corrected: "ForceSerializeAttribute" did not work correctly on fields.
- Corrected: in Tester solution,
ForceSerializeOnPrivateFieldAndProperty.ForcedPrivateField
was not a field. (oups!)
Version 3.14.7.9, 2014-07-25
- 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: exception in loop serialization test with JavascriptSerializer in Benchmark.
- Corrected: PCL for Windows 8 now has the new attributes.
- Changed: version numbering is: Main.Year-2000.Month.Release#.
Version 3.14.6.2, 2014-06-10
- New directory
Documentation
with some html texts. - New attributes
ForceSerializeAttribute
andForceNotSerializeAttribute
. - New: takes
EditorBrowsableAttribute
into 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.
Version 3.14.6, 2014-06-04
- 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
AggressiveInlining
. - 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
AggressiveInlining
anymore. No more incompatibility with computers where .NET 4.5 is not installed. - Corrected: In the benchmark, DataContractSerializer now can serialize instances and circular references.
Version 3.14.5.2 revision 2, 2014-05-16
- Some corrections.
Version 3.14.5.2, 2014-05-13
- Corrected: error with circular types.
- Added: new types in Test solution.
- Added: new types in Benchmark.
Version 3.14.5, 2014-05-05
- 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.
Version 2.14.3, 2014-03-17
- 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 readonly
fields as constructor parameters. - Fixed: some translations in the source code.
- Note: File formats are compatible with version 2.0 .
Version 2.0, 2013-10-09
- 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.
Version 1.0, 2013-07-13
This version was based on FastBinaryJSON, with many extensions and modifications.