Skip to content

Commit c089620

Browse files
committed
ready for 1.6.1
1 parent ea6d90f commit c089620

File tree

19 files changed

+107
-58
lines changed

19 files changed

+107
-58
lines changed

README.md

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Built-in support types
105105
---
106106
These types can serialize by default.
107107

108-
Primitives(`int`, `string`, etc...), `Enum`, `Nullable<>`, `TimeSpan`, `DateTime`, `DateTimeOffset`, `Nil`, `Guid`, `Uri`, `Version`, `StringBuilder`, `BitArray`, `ArraySegment<>`, `BigInteger`, `Complext`, `Task`, `Array[]`, `Array[,]`, `Array[,,]`, `Array[,,,]`, `KeyValuePair<,>`, `Tuple<,...>`, `ValueTuple<,...>`, `List<>`, `LinkedList<>`, `Queue<>`, `Stack<>`, `HashSet<>`, `ReadOnlyCollection<>`, `IList<>`, `ICollection<>`, `IEnumerable<>`, `Dictionary<,>`, `IDictionary<,>`, `SortedDictionary<,>`, `SortedList<,>`, `ILookup<,>`, `IGrouping<,>`, `ObservableCollection<>`, `ReadOnlyOnservableCollection<>`, `IReadOnlyList<>`, `IReadOnlyCollection<>`, `ISet<>`, `ConcurrentBag<>`, `ConcurrentQueue<>`, `ConcurrentStack<>`, `ReadOnlyDictionary<,>`, `IReadOnlyDictionary<,>`, `ConcurrentDictionary<,>`, `Lazy<>`, `Task<>` and custom inherited `ICollection<>` or `IDictionary<,>` with paramterless constructor.
108+
Primitives(`int`, `string`, etc...), `Enum`, `Nullable<>`, `TimeSpan`, `DateTime`, `DateTimeOffset`, `Nil`, `Guid`, `Uri`, `Version`, `StringBuilder`, `BitArray`, `ArraySegment<>`, `BigInteger`, `Complext`, `Task`, `Array[]`, `Array[,]`, `Array[,,]`, `Array[,,,]`, `KeyValuePair<,>`, `Tuple<,...>`, `ValueTuple<,...>`, `List<>`, `LinkedList<>`, `Queue<>`, `Stack<>`, `HashSet<>`, `ReadOnlyCollection<>`, `IList<>`, `ICollection<>`, `IEnumerable<>`, `Dictionary<,>`, `IDictionary<,>`, `SortedDictionary<,>`, `SortedList<,>`, `ILookup<,>`, `IGrouping<,>`, `ObservableCollection<>`, `ReadOnlyOnservableCollection<>`, `IReadOnlyList<>`, `IReadOnlyCollection<>`, `ISet<>`, `ConcurrentBag<>`, `ConcurrentQueue<>`, `ConcurrentStack<>`, `ReadOnlyDictionary<,>`, `IReadOnlyDictionary<,>`, `ConcurrentDictionary<,>`, `Lazy<>`, `Task<>`, custom inherited `ICollection<>` or `IDictionary<,>` with paramterless constructor, `IList`, `IDictionary` and custom inherited `ICollection` or `IDictionary` with paramterless constructor(includes `ArrayList` and `Hashtable`).
109109

110110
You can add custom type support and has some official/third-party extension package. for ImmutableCollections(`ImmutableList<>`, etc), for ReactiveProperty and for Unity(`Vector3`, `Quaternion`, etc...), for F#(Record, FsList, Discriminated Unions, etc...). Please see [extensions section](https://github.com/neuecc/MessagePack-CSharp#extensions).
111111

@@ -115,7 +115,6 @@ Object Serialization
115115
---
116116
MessagePack for C# can serialze your own public `Class` or `Struct`. Serialization target must marks `[MessagePackObject]` and `[Key]`. Key type can choose int or string. If key type is int, serialized format is used array. If key type is string, serialized format is used map. If you define `[MessagePackObject(keyAsPropertyName: true)]`, does not require `KeyAttribute`.
117117

118-
119118
```csharp
120119
[MessagePackObject]
121120
public class Sample1
@@ -510,21 +509,21 @@ If the number of nodes is large, search with a embedded binary search.
510509

511510
Extra note, this is serialize benchmark result.
512511

513-
| Method | Mean | Error | Scaled | Gen 0 | Allocated |
514-
|-------------------- |------------:|------:|-------:|-------:|----------:|
515-
| IntKey | 95.31 ns | NA | 1.00 | 0.0094 | 40 B |
516-
| StringKey | 225.33 ns | NA | 2.36 | 0.0339 | 144 B |
517-
| Typeless_IntKey | 168.00 ns | NA | 1.76 | 0.0265 | 112 B |
518-
| Typeless_StringKey | 325.38 ns | NA | 3.41 | 0.0510 | 216 B |
519-
| MsgPackCliMap | 1,158.00 ns | NA | 12.15 | 0.1297 | 552 B |
520-
| MsgPackCliArray | 332.33 ns | NA | 3.49 | 0.1006 | 424 B |
521-
| ProtobufNet | 260.88 ns | NA | 2.74 | 0.0665 | 280 B |
522-
| Hyperion | 300.12 ns | NA | 3.15 | 0.1674 | 704 B |
523-
| ZeroFormatter | 165.17 ns | NA | 1.73 | 0.1009 | 424 B |
524-
| JsonNetString | 1,524.97 ns | NA | 16.00 | 0.4616 | 1944 B |
525-
| JsonNetStreamWriter | 1,847.29 ns | NA | 19.38 | 1.5526 | 6522 B |
526-
| JilString | 580.54 ns | NA | 6.09 | 0.3481 | 1464 B |
527-
| JilStreamWriter | 848.34 ns | NA | 8.90 | 1.4448 | 6066 B |
512+
| Method | Mean | Error | Scaled | Gen 0 | Allocated |
513+
|-------------------- |-----------:|------:|-------:|-------:|----------:|
514+
| IntKey | 109.3 ns | NA | 1.00 | 0.0093 | 40 B |
515+
| StringKey | 170.8 ns | NA | 1.56 | 0.0341 | 144 B |
516+
| Typeless_IntKey | 223.0 ns | NA | 2.04 | 0.0265 | 112 B |
517+
| Typeless_StringKey | 279.1 ns | NA | 2.55 | 0.0510 | 216 B |
518+
| MsgPackCliMap | 1,304.8 ns | NA | 11.94 | 0.1297 | 552 B |
519+
| MsgPackCliArray | 409.7 ns | NA | 3.75 | 0.1006 | 424 B |
520+
| ProtobufNet | 213.4 ns | NA | 1.95 | 0.0665 | 280 B |
521+
| Hyperion | 359.6 ns | NA | 3.29 | 0.1674 | 704 B |
522+
| ZeroFormatter | 186.7 ns | NA | 1.71 | 0.1009 | 424 B |
523+
| JsonNetString | 1,814.3 ns | NA | 16.60 | 0.4616 | 1944 B |
524+
| JsonNetStreamWriter | 2,211.0 ns | NA | 20.24 | 1.5526 | 6522 B |
525+
| JilString | 702.0 ns | NA | 6.42 | 0.3481 | 1464 B |
526+
| JilStreamWriter | 988.0 ns | NA | 9.04 | 1.4448 | 6066 B |
528527

529528
Of course, IntKey is fastest but StringKey also good.
530529

@@ -776,9 +775,11 @@ Primitive API(MessagePackBinary)
776775
| Write/ReadExtensionFormat | Write/Read ext format header(Length + TypeCode) and content byte[]. |
777776
| Write/ReadExtensionFormatHeader | Write/Read ext format, header(Length + TypeCode) only. |
778777
| WriteExtensionFormatHeaderForceExt32Block | Write ext format header, always use ext32 format(length is fixed, 6). |
778+
| WriteRaw | Write msgpack block directly. |
779779
| IsNil | Is TypeCode Nil? |
780780
| GetMessagePackType | Return MessagePackType of target MessagePack bianary position. |
781781
| GetExtensionFormatHeaderLength | Calculate extension formatter header length. |
782+
| GetEncodedStringBytes | Get msgpack packed raw binary. |
782783
| EnsureCapacity | Resize if byte can not fill. |
783784
| FastResize | Buffer.BlockCopy version of Array.Resize. |
784785
| FastCloneWithResize | Same as FastResize but return copied byte[]. |
@@ -1005,6 +1006,27 @@ public class CustomObject
10051006

10061007
Formatter is retrieved by `AttributeFormatterResolver`, it is included in `StandardResolver`.
10071008

1009+
IgnoreFormatter
1010+
---
1011+
`IgnoreFormatter<T>` is lightweight extension point of class and struct, if exists can't serializable type in external type, you can register `IgnoreFormatter<T>` that serialize to nil.
1012+
1013+
```csharp
1014+
// CompositeResolver can set custom formatter.
1015+
MessagePack.Resolvers.CompositeResolver.RegisterAndSetAsDefault(
1016+
new IMessagePackFormatter[]
1017+
{
1018+
// for example, register reflection infos(can not serialize in default)
1019+
new IgnoreFormatter<MethodBase>(),
1020+
new IgnoreFormatter<MethodInfo>(),
1021+
new IgnoreFormatter<PropertyInfo>(),
1022+
new IgnoreFormatter<FieldInfo>()
1023+
},
1024+
new IFormatterResolver[]
1025+
{
1026+
ContractlessStandardResolver.Instance
1027+
});
1028+
```
1029+
10081030
Reserved Extension Types
10091031
---
10101032
MessagePack for C# already used some messagepack ext type codes, be careful to use same ext code.

nuget/MessagePack.AspNetCoreMvcFormatter.nuspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePack.AspNetCoreMvcFormatter</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>ASP.NET Core MVC Input/Output MessagePack formatter</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>
@@ -13,7 +13,7 @@
1313
<tags>MsgPack, MessagePack, Serialization, Formatter, Serializer, aspnetcore, aspnetcoremvc</tags>
1414
<dependencies>
1515
<group targetFramework=".NETStandard1.4">
16-
<dependency id="MessagePack" version="1.6.0.3" />
16+
<dependency id="MessagePack" version="1.6.1" />
1717
<dependency id="Microsoft.AspNetCore.Mvc.Abstractions" version="1.2.0" />
1818
</group>
1919
</dependencies>

nuget/MessagePack.ImmutableCollection.nuspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePack.ImmutableCollection</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>MessagePack for C# Extension Support for ImmutableCollection</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>
@@ -17,15 +17,15 @@
1717
</frameworkAssemblies>
1818
<dependencies>
1919
<group targetFramework=".NETFramework4.7">
20-
<dependency id="MessagePack" version="1.6.0.3" />
20+
<dependency id="MessagePack" version="1.6.1" />
2121
<dependency id="System.Collections.Immutable" version="1.3.1" />
2222
</group>
2323
<group targetFramework=".NETFramework4.5">
24-
<dependency id="MessagePack" version="1.6.0.3" />
24+
<dependency id="MessagePack" version="1.6.1" />
2525
<dependency id="System.Collections.Immutable" version="1.3.1" />
2626
</group>
2727
<group targetFramework=".NETStandard1.4">
28-
<dependency id="MessagePack" version="1.6.0.3" />
28+
<dependency id="MessagePack" version="1.6.1" />
2929
<dependency id="System.Collections.Immutable" version="1.3.1" />
3030
</group>
3131
</dependencies>

nuget/MessagePack.ReactiveProperty.nuspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePack.ReactiveProperty</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>MessagePack for C# Extension Support for ReactiveProperty</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>
@@ -17,15 +17,15 @@
1717
</frameworkAssemblies>
1818
<dependencies>
1919
<group targetFramework=".NETFramework4.7">
20-
<dependency id="MessagePack" version="1.6.0.3" />
20+
<dependency id="MessagePack" version="1.6.1" />
2121
<dependency id="ReactiveProperty" version="3.5.1" />
2222
</group>
2323
<group targetFramework=".NETFramework4.5">
24-
<dependency id="MessagePack" version="1.6.0.3" />
24+
<dependency id="MessagePack" version="1.6.1" />
2525
<dependency id="ReactiveProperty" version="3.5.1" />
2626
</group>
2727
<group targetFramework=".NETStandard1.4">
28-
<dependency id="MessagePack" version="1.6.0.3" />
28+
<dependency id="MessagePack" version="1.6.1" />
2929
<dependency id="ReactiveProperty" version="3.5.1" />
3030
</group>
3131
</dependencies>

nuget/MessagePack.UnityShims.nuspec

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePack.UnityShims</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>MessagePack for C# Extension Support for Unity(add pseudo Vector type and fast Vectory[] extension formatter)</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>
@@ -17,13 +17,13 @@
1717
</frameworkAssemblies>
1818
<dependencies>
1919
<group targetFramework=".NETFramework4.7">
20-
<dependency id="MessagePack" version="1.6.0.3" />
20+
<dependency id="MessagePack" version="1.6.1" />
2121
</group>
2222
<group targetFramework=".NETFramework4.5">
23-
<dependency id="MessagePack" version="1.6.0.3" />
23+
<dependency id="MessagePack" version="1.6.1" />
2424
</group>
2525
<group targetFramework=".NETStandard1.4">
26-
<dependency id="MessagePack" version="1.6.0.3" />
26+
<dependency id="MessagePack" version="1.6.1" />
2727
</group>
2828
</dependencies>
2929
</metadata>

nuget/MessagePack.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePack</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>MessagePack for C#</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>

nuget/MessagePackAnalyzer.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
33
<metadata>
44
<id>MessagePackAnalyzer</id>
5-
<version>1.6.0.3</version>
5+
<version>1.6.1</version>
66
<title>MessagePackAnalyzer</title>
77
<authors>neuecc</authors>
88
<owners>neuecc</owners>

nuget/push.bat

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
nuget push MessagePack.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
2-
nuget push MessagePack.ImmutableCollection.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
3-
nuget push MessagePack.ReactiveProperty.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
4-
nuget push MessagePack.UnityShims.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
5-
nuget push MessagePack.AspNetCoreMvcFormatter.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
6-
REM nuget push MessagePackAnalyzer.1.6.0.3.nupkg -Source https://www.nuget.org/api/v2/package
1+
nuget push MessagePack.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package
2+
nuget push MessagePack.ImmutableCollection.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package
3+
nuget push MessagePack.ReactiveProperty.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package
4+
nuget push MessagePack.UnityShims.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package
5+
nuget push MessagePack.AspNetCoreMvcFormatter.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package
6+
REM nuget push MessagePackAnalyzer.1.6.1.nupkg -Source https://www.nuget.org/api/v2/package

sandbox/PerfBenchmarkDotNet/Program.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ public BenchmarkConfig()
2929
Add(MarkdownExporter.GitHub);
3030
Add(MemoryDiagnoser.Default);
3131

32-
//Add(Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X64).WithWarmupCount(1).WithTargetCount(1));
32+
Add(Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X64).WithWarmupCount(1).WithTargetCount(1));
3333

34-
Add(Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X64).WithWarmupCount(1).WithTargetCount(1),
35-
Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X86).WithWarmupCount(1).WithTargetCount(1));
34+
//Add(Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X64).WithWarmupCount(1).WithTargetCount(1),
35+
//Job.ShortRun.With(BenchmarkDotNet.Environments.Platform.X86).WithWarmupCount(1).WithTargetCount(1));
3636
}
3737
}
3838

sandbox/Sandbox/Program.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,20 @@ static void Main(string[] args)
299299
{
300300
// var ex = new Dummy___();
301301

302+
// CompositeResolver can set custom formatter.
302303
MessagePack.Resolvers.CompositeResolver.RegisterAndSetAsDefault(
303-
new[] { new IgnoreFormatter<MethodBase>() },
304-
new[] { ContractlessStandardResolver.Instance });
304+
new IMessagePackFormatter[]
305+
{
306+
// for example, register reflection infos(can not serialize in default)
307+
new IgnoreFormatter<MethodBase>(),
308+
new IgnoreFormatter<MethodInfo>(),
309+
new IgnoreFormatter<PropertyInfo>(),
310+
new IgnoreFormatter<FieldInfo>()
311+
},
312+
new IFormatterResolver[]
313+
{
314+
ContractlessStandardResolver.Instance
315+
});
305316

306317
var bin = MessagePack.MessagePackSerializer.Serialize(ex);
307318

0 commit comments

Comments
 (0)