forked from msgpack/msgpack-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
769 lines (569 loc) · 41.7 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
Release 0.1 - 2011/1/4
Porting from Message Pack Java 0.3.
FEATURES
* MessagePackObject is implemented.
* Packer APIs (Packer class) are implemented.
* Buffered Unpacker APIs (Unpacker class) are implemented.
* Unbuffered Unpacker APIs (Unpacking class) are implemented.
Release 0.2 - 2012/6/19
FEATURES
* Geneneric Serializer is implemented. (See MessagePackSerializer.Create<T>().)
* Redesign basic APIs.
* Support Mono, Silverlight, WP 7.1 (experimental).
* RPC (See https://github.com/yfakariya/msgpack-rpc-cli/)
Release 0.3 - 2013/1/27
BREAKING CHANGES
* Unpacker.Feed is removed. Use Unpacker.Create(Stream) and feed data to the passing Stream instead of Unpacker.
* IUnpackable.UnpackFromMessage now takes Unpacker instead of MessagePackObject to be symmetric as IPackable and improve custom unpacking performance.
* Unpacker.Create() is removed because it is completely useless.
* Unpacker does not remember interruptted stream state now. So, unpacker throws exception when it reaches end of stream.
Data feeding should be handled on the underlying stream layer like NetworkStream does -- it is not unpacker layer's responsibility.
FEATURES
* Improve protobuf-net compatibility.
* Add non-generic overload for MessagePackSerializer.Create().
* Add direct read method for primitive types on Unpacker. It enable dramatic performance improvement on deserializer.
* Support WinRT (experimental, .NET Fx core only, that is, WinMD is not supported yet).
* Add SerialializerGenerator which provides capability to generate pre-built serializer assembly.
* Unpacker.ReadItem/UnpackSubtree makes easy to unpack collection as MessagePackObject.
IMPROVEMENTS
* Improve unpacking performance.
BUG FIXES
* Fix 'sparse' declaration (i.e. field ids are not continuous on the objects' MessagePackDataMember attribute) causes deserialization error.
* Fix synchronization related error.
* Serializers respects IPackable/IUnpackable.
Release 0.3.1 - 2013/5/4
FEATURES
* [issue1] Add byte-array based serialization APIs.
BUG FIXES
* [issue6] Fix deserializing from a map which contains unknown member causes MessageTypeException.
Release 0.3.2 - 2013/6/30
FEATURES
* Support safe deserialization for the stream which contains new types of MsgPack spec.
see https://github.com/msgpack/msgpack/blob/master/spec.md for details.
BUG FIXES
* Fix infinite loop for invalid stream which header is Raw and it does not have enough length contents.
Release 0.3.2.1 - 2013/8/17
BUG FIXES
* Fix Unpacker.ReadString/ReadBinary of subtree unpacker leads to subsequent unpacking failure when unpacked value is nil or empty.
Release 0.4 - 2013/10/6
BREAKING CHANGES
* Packer.PackRaw(IEnumerable<byte>) can emit compact binary when the IEnumerable<byte> object also implements ICollection<byte> or ICollection.
* There are little issues in corner cases.
* Unpacker.Data never returns null even if it is in before head of underlying stream.
* MessagePackSerializer<T>.UnpackFrom does not throw exception when unpacker is still in before head of the underlying stream. Note that generated serializer still require that the unpacker is in head of the underlying array or map.
FEATURES
* Support binary types, string8 types, and extension types of MsgPack spec.
see https://github.com/msgpack/msgpack/blob/master/spec.md for details.
* SerializerGenerator now enable to specify output directory.
* Specify default collection types for well-known abstract collection types (IList<T>, IDictionary<TKey,TValue>, etc.).
BUG FIXES
* Fix SerializerGenerator only support one serealizer per assembly.
* Fix UTC DateTime serialization is corrupt in Mono.
* Fix Boolean? unpacking is not implemented.
* Fix bugs of NilImplication.
NOTE
* Nullable<MessagePack> based unpacker API is deprecated because of their poor performance. You should use fast non-nullable APIs instead (properties/methods with 'Data' suffixes).
* This version is tested on .NET 4.5 and Mono 2.10.8.1.
Release 0.4.1 - 2013/12/07
BUG FIXES
* Fix Readme code error (issue #20.)
* Fix MessagePack.Create<T>() might fail due to type lock synchronization does not coordinate multiple threads (issue #19.)
* Fix deserializing as MessagePackObject fails when unpacking data is list or map (issue #13.)
Release 0.4.2 - 2014/3/17
BUG FIXES
* Add API to re-register serializer (issue #24). It allows you to override default(built-in) serializer as you like.
Release 0.4.3 - 2014/3/22
BUG FIXES
* Fix creating serializer for IEnumerable<T> (and not IList<T> nor IDictionary<TKey, TValue>) causes NullReferenceException.
* Fix built-in object serializer cannot deserialize array/map correctly.
* Fix PackerUnpackerExtensions.Pack<T>() ignore Default serialization context and uses brand-new instance every time.
Release 0.4.4 - 2014/4/13
BUG FIXES
* Fix creating serializer for IDictionary<TKey, TValue> causes NullReferenceException.
* Fix serializers' default constructor IL (it is not used in the library, but can be called via reflection).
Release 0.5 - 2014/7/21
FEATURES
* CodeDOM serializer generator, which generates source code for custom serializer. It enables debugger break points, insert your own codes, etc.
* Start Xamarin supporting with CodeDOM serializer generator and runtime code generation free Nullable/Enum serializers.
* Start Unity supporting with same mechanism as Xamarin support and mpu.exe helper tool.
* Support .NET 4.5 including immutable collections support.
* Support on-the-fly IEnumerable<T> (such as the result of Enumerable.Range()) packing. Note that unpacking is still unsupported.
* Support underlying integral based enum serialization.
* Add new PackerUnpackerExtensinos' extension methods for collections and dictionaries to improve overloading stability (predictability).
* System.Runtime.Serialization assembly is not required now (pull-request #29).
* Non public members annotated with MessagePackMember attribute or DataMemberAttribute are supported now (issue #33).
BUG FIXES
* PackerUnpackerExtensions.Pack(Object) takes long time. (#14)
* Fix Readme code error (issue #20. Ported from 0.4 branch.)
* Fix MessagePack.Create<T>() might fail due to type lock synchronization does not coordinate multiple threads (issue #19. Ported from 0.4 branch.)
* Fix deserializing as MessagePackObject fails when unpacking data is list or map (issue #13. Ported from 0.4 branch.)
* Readonly members now silently ignored except they are annotated with MessagePackMember attribute or DataMemberAttribute (pull-request #30, issue#28).
NOTE
* This release unifies .NET build and Mono build for main source codes (testing codes have not been unified yet.)
* This release contains reimplementation of serializer generation stack. It might change implementation detail dependant behavior (it usually potential issue).
Release 0.5.1 - 2014/8/9
FEATURES
* Reflection serializer. It enables on-the-fly serializer generation in Xamarin and Unity3D.
BUG FIXES
* Fix concurrency bug in WinRT.
* Fix built-in NamedValueCollection serializer generates invalid stream when the values of a key are empty.
NOTE
* This release changes drop for Unity3D from source assets to dll assets (source assets are still available).
Release 0.5.2 - 2014/9/6
BREAKING CHANGES
* MessagePackObjectEqualityComparer does not inherit EqualityComparer<T> now to avoid ExecutionEngineException on iOS.
FEATURES
* Support Windows Phone 8.1 (Both of WinRT & Silverlight) issue #36
* Add MessagePackSerializer.Get() for usability.
BUG FIXES
* Fix FILETIME is not available in WinRT
* Fix does not work in Unity3D. issue #37
Relase 0.5.3 - 2014/09/15
BREAKING CHANGES
* MessagePackObject from byte[] now always act as binary, not string. It affects only low level API and unpacked from bin8, bin16, bin32 types. Issue #39
FEATURES
* Using new MessagePackMemberAttribute.Name property, you can customize map keys of serialized objects when you use SerializationMethod.Map. Related to issue #38
Release 0.5.4 - 2014/09/22
FEATURES
* Add mpu --internal option for source code form assets in Unity3D.
BUG FIXES
* An -o option of mpu.exe -s does not work.
* Same (.NET4.5 + WinRT8 + WP8.1) configured portable project cannot refer MsgPack NuGet package.
MISCS
* Unity drop is now only included in zip file at github release page.
Release 0.5.5 - 2014/10/12
BUG FIXES
* The serializer returned with `MessagePackSerializer.Create<MessagePackObjectDictionary>()` does not deserialize nested element correctly. Issue #42
* MessagePackConvert.FromDateTime[Offset] might emit wrong value due to rounding error. Issue #44
IMPROVEMENTS
* Portable library drop for Universal App does not refer `libc` now. Issue #41
Release 0.5.6 - 2014/11/30
BUG FIXES
* The type which has indexer(s) and does not implement IDictionary nor IDictionary<TKey,TValue> is failed to create serializer. Issue #49
* Fix Unpacking a map with extra fields. Issue #50
Release 0.5.7 - 2014/12/23
BUG FIXES
* Fix serializer uses unnecessary reflection to get collection typed property.
* Fix generated serializers in source code style may have extra fields when multiple serializers are generated at a time.
* Mpu.exe's --refernce option distinction now respects platform rules and uses absolute paths instead of relative paths.
* Fix lambda expressions in source code causes failure of mpu.exe in Mono.
IMPROVEMENTS
* Add mpu.exe -r option which is shorthand of --reference.
* Add default and implicit --reference=./MsgPack.dll option in mpu.exe
Release 0.5.8 - 2015/1/18
BUG FIXES
* Fix Unpacker fails to unpack data when the stream returns data one by one. Issue #59
* Fix Unpacker cannot read empty bytes from System.Net API. Issue #60
Relase 0.5.9 - 2015/2/01
BUG FIXES
* Fix NullReferenceException is thrown for annotated non-public members serialization/deserialization in WinRT.
* Fix collection typed property which has non-public setter are not handled correctly. Issue #62.
* Fix ArgumentOutOfRangeException occurs when serializing members count is greater than 127. Issue #63.
Release 0.5.10 - 2015/2/10
CHANGES
* WinRT and Windows Phone (not Silverlight) builds now do not have AllowPartiallyTrustedCallersAttribute because it causes MethodAccessException on Windows Phone. This should not be breaking change effectively because apps in app container themselves should be SecurityCritical. Issue #64.
BUG FIXES
* Avoid memcmp usage for Windows Phone App Certification. Issue #65.
Release 0.5.11 - 2015/3/1
NEW FEATURE
* `MessagePackIgnoreAttribute` to exclude properties. Issue #55
Release 0.6.0 Alpha1 - 2015/3/2
BREAKING CHANGES
* Non-public types such as internal/Assembly types are not supported even if WinRT or Reflection serializer had worked for them because it had been just bug and non-public types should not be serialized.
Note that .NET default serializers and pre-generated serializers for Xamarin are not affected because they had failed to generate serializers for non-public types.
BUG FIXES
* Non-public types causes `TypeLoadException` in .NET and pre-generated assembly, causes compilation error in pre-generated sources, results undefined behavior on other platforms.
Non-public types are now rejected with `SerializationException`. This fix leads (probably small) breaking changes.
NEW FEATURE
* Deserializer now uses 'best match' constructor when all members are read-only. Issue #52.
* `MessagePackSerializer.UnpackMessagePackObject` API. This is convinient shortcut to deserialize stream as `MessagePackObject` tree.
Release 0.6.0 Beta1 - 2015/04/27
NEW FEATURE
* Add Type Embedding. Issue #47.
BUG FIXES
* MessagePackSerializer.Create now always returns new instance.
* Fix build problem related to interface generic parameter variance.
Release 0.6.0 Beta2 - 2015/05/24
NEW FEATURE
* New utility method of SerializationContext to switch back the behavior to previous version's one.
* Add corlib only build (MsgPack.Unity3D.Micro). This build only depends mscorlib. This feature is experimental. Related to Issue #70.
IMPROVEMENTS
* Add many workarounds for AOT issues of Mono on iOS (in particular, Unity).
* System.DateTime, System.DateTimeOffset, System.Runtime.InteropServices.ComTypes.FILETIME are now serialized native representation by default, it keeps 100-nanosecond resolution, DateTimeKind, and Offset.
You can revert the behavior to the previous Unix Epoc via SerializationContext.DefaultDateTimeConversion or [MessagePackDateTimeMember] custom attribute. Issue #74
* System.DBNull become serializable now. Issue #72.
BUG FIXES
* Fix System.Object instance causes StackOverflowException. Issue #73
Release 0.6.0 Beta3 - 2015/06/14
BUG FIXES
* Remove FILETIME dependency to avoid build error in Xamarin/Unity. Issue #87
Release 0.6.0 Beta4 - 2015/07/05
BREAKING CHANGES / IMPROVEMENTS
* Unity3D DLL now only depends on mscorlib.dll. This breaks compabitlity because the library cannot recognize Stack<T>, Queue<T>, NameValueCollection, and System.Uri. If you want to these types support, use Unity3D.Full drop instead.
IMPROVEMENTS
* Non-SZ arrays (multidimensional arrays and vector with non-zero based) are supproted. Issue #81.
BUG FIXES
* Fix Unity source code to avoid nullable equality operator. Issue #88
* Fix MessagePackObject deserializer cannot handle empty collection correctly. Issue #92.
* Fix disposing "subtree" Unpacker twice causes Exception.
Release 0.6.0 Beta5 - 2015/07/20
BREAKING CHANGES / IMPROVEMENTS
* Internal type-info encoding has changed, so encoded type-info is NOT compatible with 0.6.0 beta1-beta4.
IMPROVEMENTS
* Add built-in support for IReadOnlyCollection<T>, IReadOnlyList<T>, IReadOnlyDictionary<TKey, TValue>, based upon issue #91 and PR #93. Thank you @drewnoakes!
* Improve exception message for known type mapping error. Issue #95,
BUG FIXES
* Non-SZ arrays are not deserialized correctly in WP/Silverlight.
Release 0.6.0 - 2015/08/09
IMPROVEMENTS
* ImmutableArray now supported.
* SerializerGenerator now support automatic dependent serializer(s) generation.
* Add SerializerContext.ResolveSerializer event to make pre-built serializer registration more robust. Issue #103.
BUG FIXES
* Fix Unpacker does not handle bin types and str8 type in skipping. PR #98, Thank you @webcoyote!
* Fix Unpacker does not handle ext types in skipping.
* Fix SerializerGenerator and mpu.exe do not handle EnumSerializationMethod. Issue #102.
* Fix SerializerGenerator and mpu.exe do not exclude types which are handled with built-in serializers. Issue #104.
Release 0.6.1 - 2015/08/16
IMPROVEMENTS
* Recursive generation now supports generic arguments and array element types. Issue #106.
* New SerializerGenerator.GenerateSerializerCodeAssembly and GenerateSerializerSourceCodes, which return structured information including target types and serializer type names. It should improve pre-generation experience. Issue #107.
BUG FIXES
* Fix SerializerGenerator does not filter out built-in types when they are appeared in members instead of API arguments. Issue #105.
* Fix type embedding fails if the type name starts with its assembly simple name. Issue #108.
Release 0.6.1.1 - 2015/08/16
This release is only zip release for Unity because other dists are not affected at all.
BUG FIXES
* Fix IL2CPP crash. Issue #101.
Release 0.6.2 - 2015/08/30
BUG FIXES
* Fix built-in serializer for System.Object does not honor current context. Issue #111.
IMPROVEMENTS
* Add built-in System.Globalization.CultureInfo serializer. Issue #112.
Release 0.6.3 - 2015/10/12
BUG FIXES
* Add new custom serializer registration option which registers nullable serializer together (this API is NOT available in Unity3D yet because of AOT issue). Issue #116.
* Fix reflection based serialization for non-public member fails for members which use generic type parameter(s). Issue #119
* Fix DateTimeOffset? serializer act different from DateTime? serializer for DateTimeSerializationMethod setting change. A part of issue #117
* Fix array element type is not processed recursively even if the IsRecursive option of serializer generator is true. Issue #120
IMPROVEMENTS
* Improve Unpacker performance.
* Add WithNullable feature to serializer generator. It specifies generating nullable companions together. Issue #121
Release 0.6.4 - 2015/10/14
BUG FIXES
* Fix StackOverflowException on SerializerGenerator.GenerateSerializerCodes with WithNullable and IsRecursive. Issue #121(cont)
Release 0.6.5 - 2015/10/20
BUG FIXES
* Fix enum handling in code generation for enum values which do not have corresponding single symbols. Issue #121(cont)
IMPROVEMENTS
* Improve Nullable<T> serializer source code for SerializerGenerator.GenerateSerializerCodes with WithNullable. Issue #121(cont)
* Add Unity AOT work around method MessagePackSerializer.PrepareType<T>(). This solves a part of issue #99 and an issue #124.
* Fix build issues in source tree release for Unity.
* mpu.exe --library now creates merged source tree.
* Add work arounds for Unity C# compiler issue for DictionaryMessagePackSerializer`3.cs
* Add UNITY_5 for UNITY compiler constant determination.
* Remove unnecessary Pack<T>() usage to avoid unexpected performance loss and/or Unity(and its Mono) C# compiler overload resolution failure.
Release 0.6.5.1 - 2015/10/25
BUG FIXES
* mpu.exe -l option does not work in non-Windows environment. Issue #125.
Release 0.6.6 - 2015/12/20
BUG FIXES
* Fix [MessagePackRuntimeType] fails when the type is declared in global namespace. Issue #137.
Release 0.6.7 - 2015/12/23
BUG FIXES
* Fix Unpacker.ReadXxx returns 0 when try to read integral value from floating point stream or vice versa. Issue #139.
Release 0.6.8 - 2016/1/31
BUG FIXES
* Fix Unpacker.ReadXxx from uint64 encoded value returns invalid(nagative) value.
* Fix Unpacker.ReadObject does not handle collection. #143
* Fix intentionally "empty" member causes ArgumentNullException in serializer generation. Issue #145
Release 0.7.0-alpha1 - 2015/11/22
NEW FEATURES
* Add .NET Core support. Note that .NET Core does NOT support CodeDOM or persistance of AsemblyBuilder, so MsgPack for CLI .NET Core build cannot support code generation. To generate source code or assembly of serializers in non-Windows environment, you must use Mono with .NET 4.5 build. #Issue 128
* Add buffering option for Packer/Unpacker which can be enabled by PackerUnpackerStreamOptions.WithBuffering = true. It should improve performance for non-buffered stream like NetworkStream.
IMPROVEMENTS
* Exceptions now includes stream position for seekable stream or "offset from Unpacker construction" for non-seekable stream.
* Generated code now well structured which improves debuggability, it also remove some redundant expressions.
* Move throw statements from hot-path to improve performance a bit.
BREAKING CHANGES
* Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
BUG FIXES
* Fix Unpacker.Skip failes when the stream is fragmented such as raw NetworkStream.
Release 0.7.0-alpha2 2016/03/10
This release includes 0.6.8 fixes.
BREAKING CHANGES
* Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. Changing SerializationContext.SerializationMethod in use causes unexpected behavior even it is extremely rare to do it.
* Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
* .NET 4.0, 4.5.0, 4.5.1, 4.6.0 are no longer supported.
IMPROVEMENTS
* Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. No longer need to re-generate serializer codes/assemblies to switch serialization method between array and map.
* Generated code now more structured which improves debuggability, it also remove some redundant expressions.
NEW FEATURES
* Async support. Issue #49.
KNOWN ISSUES
* CoreCLR(.NET Core) is not supported because of corefx #5381.
Release 0.7.0-alpha3 2016/05/22
BREAKING CHANGES
* Internal structure for Silverlight builds are changed. They now use only reflection based serializers and pre-generated serializers instead of Expression Tree based serializers.
* IPackable/IUnpackable is respected for collections now. Issue #153.
IMPROVEMENTS
* Improve .NET Core support with work around for corefx GetInterfaceMap() limitation. .NET Core build requires RC2 or above.
* Improve Unity support. Unity DLLs now support IL2CPP with various AOT issue workarounds. Unity build requires 5.3.5f1 or above.
* DateMemberAttribute matching is now name based instead of type based.
NEW FEATURES
* SerializerGenerator.GenerateSerializerCodeAssembly now supports custom namespace. Issue #138.
* Add IgnoreDataMemberAttribute to ignoring member indicators. Issue #146.
BUG FIXES
* Fix explicit IPackable/IUnpackable interface implementation causes serializer generator error. Issue #150.
* Fix non-public collection typed members with attributes causes serialization generation error. Issue #152.
* Fix generated serializer codes are not available in WinRT/UWP because of reflection API incompatibility when the type has non-public and explicitly marked fields/properties.
* Fix collection only implements IEnumerable may cause NotSupportedException.
* Fix hidden by signature members ("new" in C#) causes invalid serializer code generation. Issue/PR #147, #161, #162.
* IPackable/IUnpackable is respected for collections now. Issue #153.
This behavior can be disabled by setting SerializationCompatibilityOptions.IgnorePackabilityForCollection to true.
KNOWN ISSUES
* Reflection based serializers in Unity build is not stable even if you specify [Preserve] and/or link.xml.
* .NET Core packaging is under testing.
Release 0.7-Beta1 - 2016/06/18
This release cleans up API surface and internal code for 0.7 stable release.
MAJOR BREAKING CHANGES
* PackerCompatibilityOptions.None is now default. This means that msgpack bin or str8 formats are used by default.
You can still turn off them by PackerCompatibilityOptions.Classic.
MINOR BREAKING CHANGES
* UnpackHelpers.UnpackValueTypeValue signature is changed (note that this API has not been published in stable release yet).
* UnpackHelpers.UnpackComplexObject[Async] with currentKey parameter are removed(note that this API has not been published in stable release yet).
* Rename SerializerCapabilities>Unknown to SerializerCapabilities.None (note that this API has not been published in stable release yet).
* Remove ISupportMessagePackSerializerCapability(note that this API has not been published in stable release yet).
* Reflection based serializers now do not use IPackable/IUnpacabke members when the type does not implement IAsyncPackable/IAsyncUnpackable(note that this API has not been published in stable release yet).
BUG FIXES
* Fix the Unpacker always returns 0 when the underlying stream has double typed value.
* Fix MessagePackObject.PackToMessage does not look PackerCompatibilityOptions. Issue #168.
Release 0.7-beta2 - 2016/06/26
NEW FEATURES
* Add Xamarin iOS linker support.
BUG FIXES
* Fix type initializer causes InvalidOperatiionException of serializer generation on WinRT projects. #170.
* Fix package dependency issue prevents *-aot runtime cannot install MsgPack.Cli packages (affects 0.7.0-beta1 only).
* Fix Xamarin iOS AOT releated bugs (affects 0.7.0-beta1 only).
BREAKING CHANGES
* netstandard1.1 and 1.3 now do NOT support code generation (Reflection.Emit) based serializer (affects 0.7.0-alpha/beta only).
Release 0.7-RC1 2016/06/29
This release supports .NET Core 1.0 final.
BREAKING CHANGES
* netstandard 1.1 now do NOT support System.DBNull because System.Data.Common final package supports only >=1.2 (affects 0.7.0-alpha/beta only).
* mpu.exe now works on .NET 4.6.1.
IMPROVEMENTS
* The type which implement IEnumerable but does not implement Add now supported. Issue #169.
This behavior can be disabled with setting SerializationContext.CompatibilityOptions.AllowNonCollectionEnumerableTypes to false.
* mpu.exe and SerializerGenerator now supports compatibility switches.
BUG FIX
* Fix batch serializer code generation may report invalid error message due to context reset leaking.
* Fix reflection based serializer possibly throws NotSupportedException instead of SerializationException.
Release 0.7 2016/07/03
This release includes 0.6.8 fixes. Here are cumulative changelogs from 0.6.8.
(There are no changes from 0.7.0-rc1)
MAJOR BREAKING CHANGES
* PackerCompatibilityOptions.None is now default. This means that msgpack bin or str8 formats are used by default.
You can still turn off them by PackerCompatibilityOptions.Classic.
MINOR BREAKING CHANGES
* .NET 4.0, 4.5.0, 4.5.1, 4.6.0 are no longer supported.
* Unity without IL2CPP (a.k.a. AOT) is no longer supported.
* IPackable/IUnpackable is respected for collections now. Issue #153.
This behavior can be disabled by setting SerializationCompatibilityOptions.IgnorePackabilityForCollection to true.
* mpu.exe now works on .NET 4.6.1.
TRIVIAL BREAKING CHANGES
* Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
* Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. Changing SerializationContext.SerializationMethod in use causes unexpected behavior even it is extremely rare to do it.
* Generated serializers code has different structure, it might break your custom toolset which depends generated code structure.
* Internal structure for Silverlight builds are changed. They now use only reflection based serializers and pre-generated serializers instead of Expression Tree based serializers.
NEW FEATURES
* Add .NET Core support. Note that .NET Core does NOT support CodeDOM or persistance of AsemblyBuilder, so MsgPack for CLI .NET Core build cannot support code generation. To generate source code or assembly of serializers in non-Windows environment, you must use Mono with .NET 4.5 build. #Issue 128
* Add buffering option for Packer/Unpacker which can be enabled by PackerUnpackerStreamOptions.WithBuffering = true. It should improve performance for non-buffered stream like NetworkStream.
* Async support. Issue #49. Note that it is highly recommended to use buffering feature of Packer or Unpacker factory methods to avoid too chutty asynchronous I/O call. In addition, async API may avoid unnecessary blocking but it is not so efficienty in most cases.
* SerializerGenerator.GenerateSerializerCodeAssembly now supports custom namespace. Issue #138.
* Add IgnoreDataMemberAttribute to ignoring member indicators. Issue #146.
* Unity IL2CPP support. Unity DLLs now support IL2CPP with various AOT issue workarounds. Unity build requires 5.3.5f1 or above.
* Xamarin iOS linker support.
IMPROVEMENTS
* Exceptions now includes stream position for seekable stream or "offset from Unpacker construction" for non-seekable stream.
* Generated code now well structured which improves debuggability, it also remove some redundant expressions.
* Move throw statements from hot-path to improve performance a bit.
* Generated serializer now always check SerializationContext.SerializationMethod when they serialize objects. No longer need to re-generate serializer codes/assemblies to switch serialization method between array and map.
* Generated code now more structured which improves debuggability, it also remove some redundant expressions.
* DateMemberAttribute matching is now name based instead of type based.
* The type which implement IEnumerable but does not implement Add now supported. Issue #169.
This behavior can be disabled with setting SerializationContext.CompatibilityOptions.AllowNonCollectionEnumerableTypes to false.
* mpu.exe and SerializerGenerator now supports compatibility switches.
BUG FIXES
* Fix Unpacker.Skip failes when the stream is fragmented such as raw NetworkStream.
* Fix generated serializer codes are not available in WinRT/UWP because of reflection API incompatibility when the type has non-public and explicitly marked fields/properties.
* Fix explicit IPackable/IUnpackable interface implementation causes serializer generator error. Issue #150.
* Fix non-public collection typed members with attributes causes serialization generation error. Issue #152.
* Fix collection only implements IEnumerable may cause NotSupportedException.
* Fix hidden by signature members ("new" in C#) causes invalid serializer code generation. Issue/PR #147, #161, #162.
* IPackable/IUnpackable is respected for collections now. Issue #153.
* Fix the Unpacker always returns 0 when the underlying stream has double typed value.
* Fix MessagePackObject.PackToMessage does not look PackerCompatibilityOptions. Issue #168.
* Fix type initializer causes InvalidOperatiionException of serializer generation on WinRT projects. #170.
* Fix batch serializer code generation may report invalid error message due to context reset leaking.
* Fix reflection based serializer possibly throws NotSupportedException instead of SerializationException.
KNOWN ISSUES
* Reflection based serializers in Unity build is not stable even if you specify [Preserve] and/or link.xml.
Release 0.7.1 2016/7/10
BUG FIXES
* Relaxes .NET Framework version. .NET 4.5.0, 4.5.1, 4.6.0 are resupported. Issue #176.
* Reduce memory allocation. Issue #179.
Release 0.8.0 beta 2016/07/24
BREAKING CHANGES
* `MessagePackDeserializationConstructorAttribute` now always used when the type has default constructor.
The previous behavior was bug as XML documentatino said.
NEW FEATURES
* Null member skipping in map based serialization.
This behabvior must be enabled via `SerializationContext.DictionarySerializationOptions.OmitNullEntry`.
Issue #136.
* Dictionary key transformation via `SerializationContext.DictionarySerializationOptions.KeyTransformer`.
Built in transformer is placed in `DictionaryKeyTransoformers`.
Issue #175.
* Add F# collections support. Related to issue #178.
BUG FIXES
* Fix `MessagePackDeserializationConstructorAttribute` is ignored when the type has default constructor.
* Make Xamarin.iOS unified API compliant. Issue #181.
* Fix `mpu.exe -l`.
IMPROVEMENTS
* Relax constructor based deserialization condition. It will be used even if there are any settable members(including private property setters). Part of issue #178 and fixes issue #135.
* PackHelpers and UnpackHelpers APIs are now backward compatible.
Release 0.8.0
Nothing from 0.8.0 beta.
Release 0.8.1 2017/02/02
BUG FIXES
* Fix null items of complex type in List<T> or Dictionary<TKey, TValue> will not be deserialized as null. Issue #211.
Release 0.9.0 beta1 2016/09/24
NEW FEATURES
* Enum name transformation via `SerializationContext.EnumSerializationOptions.NameTransformer`.
Built in transformer is placed in `EnumTransoformers`.
Issue #184.
* Polymorphic attributes now supports type qualification. Issue #171.
* Runtime type polymorphism now supports name based type verification. This feature allows to prevent loading malicious or unknown types ibefore assembly loading.
* Asymmetric serializers. You can generate "pack only" serializer when you set SerializationContext.CompabilityOptions.AllowAsymmetricSerializer to true. #68.
* Built in serializer for System.Text.StringBuilder now supports UnpackTo.
* Add serialization to/from MessagePackObject as extension methods of MessagePackSerializer and MessagePackSerializer<T>. Issue #90
BUG FIXES
* Fix nuspec to prevent old NuGet clients which do not support .NET Standard TFMs. Issue #177.
Release 0.9.0 beta2 2017/2/12
NEW FEATURES
* Users of serializer code generator API can specify TextWriter to output. This may improve tooling chain.
* Users of serializer code generator API can suppress [DebuggerNonUserCode] attribute to enable debugger step in.
* SerializerRepository API now expose ContainsFor and GetRegisteredSerializers methods to investigate registered serializers.
* SerializationContext.DisablePrivilegedAccess for restricted environment like Silverlight to select between granting permission or relinquish non-public access.
* UWP build is now included.
BUG FIXES
* The generated code for the type which has Tuple typed member uses old PackHelper API.
* Fix struct deserialization. Issue #189. Thank you @samcragg!
* Fix asynchronous packing is not be emitted correctly. Issue #201
* Fix SerializerCodeGenerator does not handle collections correctly for IsRecursive = true. Issue #203
* Fix extra field causes IndexOutOfBoundException when reflection based serializers are used. Issue #199
* Fix some built-in serializers throws InvalidOperationException instead of SerializationException for type errors. Issue #204
* Fix a combination of readonly members and collection members incorrect code generation when the type also have deserialization constructor. Issue #207.
* Fix built-in collection serializers such as List<T> serializer causes SecurityException when the program run in restricted environment like Silverlight. Issue #205.
* Fix null items of complex type in List<T> or Dictionary<TKey, TValue> will not be deserialized as null. Issue #211. (from 0.8.1)
* Fix types which implement IPackable and IUnpackable but do not have any members cannot be serialized. Issue #202
* Fix Windows Native build error. Issue #206.
Release 0.9.0 RC1 2017-08-13
NEW FEATURES
* ByteArrayPacker/ByteArrayUnpacker. They are suitable for fixed pattern serialization/deserialization.
* Fast mode of unpacker which omits nested collection management. This option can be disabled with setting UnpackerOptions.ValidationLevel to ValidationLevel.Collection.
IMPROVEMENTS
* Byte array based serialization API now uses ByteArrayPacker/ByteArrayUnpacker, improves about 40% faster than Stream based.
* Deserialization now uses ValidationLevel.None, improves about 30% faster than validating one.
* Packer/Unpacker performance improvements about 10-20%. As a result, new byte array "fast" unpacker is about 3x faster than previous unpacker.
BUG FIXES
* Fix constructor deserialization fails if the constructor parameters order is not lexical. Issue #233
* Fix asynchronous multi dimensional array deserialization corruption.
* Fix enum serialization throws NullReferenceException in Unity. Issue #215.
* Fix MessagePackSerializer.Capability does not work correctly in Unity.
* Fix polymorphic serializer error in Unity.
Release 0.9.0 2017-8-26
NEW FEATURES
* Enum name transformation via `SerializationContext.EnumSerializationOptions.NameTransformer`.
Built in transformer is placed in `EnumTransoformers`.
Issue #184.
* Polymorphic attributes now supports type qualification. Issue #171.
* Runtime type polymorphism now supports name based type verification. This feature allows to prevent loading malicious or unknown types ibefore assembly loading.
* Asymmetric serializers. You can generate "pack only" serializer when you set SerializationContext.CompabilityOptions.AllowAsymmetricSerializer to true. #68.
* Built in serializer for System.Text.StringBuilder now supports UnpackTo.
* Add serialization to/from MessagePackObject as extension methods of MessagePackSerializer and MessagePackSerializer<T>. Issue #90
* Users of serializer code generator API can specify TextWriter to output. This may improve tooling chain.
* Users of serializer code generator API can suppress [DebuggerNonUserCode] attribute to enable debugger step in.
* SerializerRepository API now expose ContainsFor and GetRegisteredSerializers methods to investigate registered serializers.
* SerializationContext.DisablePrivilegedAccess for restricted environment like Silverlight to select between granting permission or relinquish non-public access.
* UWP build is now included.
* ByteArrayPacker/ByteArrayUnpacker. They are suitable for fixed pattern serialization/deserialization.
* Fast mode of unpacker which omits nested collection management. This option can be disabled with setting UnpackerOptions.ValidationLevel to ValidationLevel.Collection.
IMPROVEMENTS
* Byte array based serialization API now uses ByteArrayPacker/ByteArrayUnpacker, improves about 40% faster than Stream based.
* Deserialization now uses ValidationLevel.None, improves about 30% faster than validating one.
* Packer/Unpacker performance improvements about 10-20%. As a result, new byte array "fast" unpacker is about 3x faster than previous unpacker.
BUG FIXES
* Fix nuspec to prevent old NuGet clients which do not support .NET Standard TFMs. Issue #177.
* The generated code for the type which has Tuple typed member uses old PackHelper API.
* Fix struct deserialization. Issue #189. Thank you @samcragg!
* Fix asynchronous packing is not be emitted correctly. Issue #201
* Fix SerializerCodeGenerator does not handle collections correctly for IsRecursive = true. Issue #203
* Fix extra field causes IndexOutOfBoundException when reflection based serializers are used. Issue #199
* Fix some built-in serializers throws InvalidOperationException instead of SerializationException for type errors. Issue #204
* Fix a combination of readonly members and collection members incorrect code generation when the type also have deserialization constructor. Issue #207.
* Fix built-in collection serializers such as List<T> serializer causes SecurityException when the program run in restricted environment like Silverlight. Issue #205.
* Fix null items of complex type in List<T> or Dictionary<TKey, TValue> will not be deserialized as null. Issue #211. (from 0.8.1)
* Fix types which implement IPackable and IUnpackable but do not have any members cannot be serialized. Issue #202
* Fix Windows Native build error. Issue #206.
* Fix constructor deserialization fails if the constructor parameters order is not lexical. Issue #233
* Fix asynchronous multi dimensional array deserialization corruption.
* Fix enum serialization throws NullReferenceException in Unity. Issue #215.
* Fix MessagePackSerializer.Capability does not work correctly in Unity.
* Fix polymorphic serializer error in Unity.
Release 0.9.1 2017-8-30
BUG FIXES
* Fix ByteArrayPacker throws IndexOutOfBoundException when the buffer remaining bytes is equal to packed scalar size. #252
Release 0.9.2 2017-09-26
BUG FIXES
* Fix UAP build drop does not exists in nupkg. #186
Release 1.0.0-beta1 2017-10-01
NEW FEATURES
* .NET Standard 2.0 which supports serializer source code generation on .NET Core. Note that serializer assembly generation is not supported.
* MessagePackSerializer.UnpackMessagePackObject(byte[]) utility method.
* MessagePack timestamp type support. This includes interoperability with DateTime/DateTimeOffset as well as MsgPack.Timespan type with basic arithmatics, properties, and conversions.
BUG FIXES
* Fix ByteArrayPacker throws IndexOutOfBoundException when the buffer remaining bytes is equal to packed scalar size. #252
* Fix UAP build drop does not exists in nupkg. #186
* Fix new unpacker cannot unpack reserved ext types.
Relase 1.0.0-beta2 2017-10-29
CHANGES
* Xamarin builds are now integrated to .NET Standard 2.0.
NEW FEATURES
* ValueTuple support. #277
IMPROVEMENTS
* System.Tuple<T> detection now ignores their declaring assemblies.
* Improve exception message in AOT error of Unity.
* .NET Standard 1.1/1.3 projects now do not depend on System.Linq.Expressions package.
Release 1.0.0-rc1 2017-12-17
BUG FIXES
* Fix NRE in .NET Standard 1.1/1.3 build (this issue got mixed in beta2).
* Fix built-in Guid/BigInteger always output raw type even if PackerCompatibilityOptions.PackBinaryAsRaw is not specified. #270
* Fix MessagePackObject.UnderlyingType reports wrong type for ext types. Part of #269.
This bug also caused misleading error message for incompatible type conversion.
* Fix exceptions thrown by MessagePackObject.AsBinary()/AsString() reports internal type name. Part of #269.
Release 1.0.0 2018-6-14
BUG FIXES
* [NonSerialized] attribute does not effect in Mono based platform including Unity.
* Fix map keys order emitted by asymmetric (serialization only) serializer are inconsistent across platform.
* Fix Unity build does not honor serialization related attributes correctly.
* Fix internal inconsitency between serialization related attributes detection and their parameter retrieval.
Release 1.0.1 2018-09-09
BUG FIXES
* Fix conversion from DateTime[Offset] to Timestamp failure for before Unix epoc. #296
Release 1.1
BUG FIXES
* Fix conversion from DateTime[Offset] to Timestamp failure for before Unix epoc. #296 (port from 1.0.x branch)
NEW FEATURE
* Allow programatically ignoring arbitary members via BindingOptions. Thank you @ShrenikOne #282
* To prevent accidental Timestamp serialization in existing code, SerializationContext.ConfigureClassic(SerializationCompatibilityLevel) and SerializationContext.CreateClassicContext(SerializationCompatibilityLevel) are added. #296