===============================================================================
Welcome to the C# port of Google Protocol Buffers, written by Jon Skeet
(skeet@pobox.com) based on the work of many talented people.

For more information about this port, visit its homepage:
http://protobuf-csharp-port.googlecode.com

For more information about Protocol Buffers in general, visit the project page 
for the C++, Java and Python project:
http://protobuf.googlecode.com
===============================================================================
RELEASE NOTES - Version 2.4.1.555
===============================================================================

Changes:
- Upgrade solution format to Visual Studio 2012.
- Add the ability to print a builder (not just a message)
- TextGenerator introduces a new overload of PrintTo
- Munge protoc's error format into a VS-C#-compatible output format.
- Work to make ProtoGen clone that acts as a protoc.exe plugin.
- Added the AllowPartiallyTrustedCallers attribute
- Optimized enum parsing.

Fixes:
- Fix for bug in limited input stream's Position, Introduced Position on 
  output stream
- Fix for writing a character to a JSON output overflows allocated buffer
- Optimize FromBase64String to return Empty when presented with empty string.
- Use string.Concat instead of operator to avoid potential import problems
- Issue 81: quoting for NUnit parameters.
- Issue 56: NuGet package is noisy
- Issue 70: Portable library project has some invalid Nunit-based code.
- Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily
- Issue 84: warning CS0219: The variable `size' is assigned but never used

===============================================================================
RELEASE NOTES - Version 2.4.1.521
===============================================================================

Changes:
- Add generated_code_attributes option, defaulted to false
- Added support for Portable library
- Added 'Unsafe' static type in ByteString to allow direct buffer access

Fixes:
- Issue 50: The XML serializer will fail to deserialize a message with empty 
  child message
- Issue 45: Use of 'item' as a field name causes AmbiguousMatchException
- Issue 49: Generated nested static Types class should be partial
- Issue 38: Disable CLSCompliant warnings (3021)
- Issue 40: proto_path does not work for command-line file names
- Issue 54: should retire all bytes in buffer (bufferSize)
- Issue 43: Fix to correct identical 'umbrella_classname' options from trying 
  to write to the same filename.

===============================================================================
RELEASE NOTES - Version 2.4.1.473
===============================================================================

Features:
- Added option service_generator_type to control service generation with
  NONE, GENERIC, INTERFACE, or IRPCDISPATCH
- Added interfaces IRpcDispatch and IRpcServerStub to provide for blocking
  services and implementations.
- Added ProtoGen.exe command-line argument "--protoc_dir=" to specify the 
  location of protoc.exe.
- Extracted interfaces for ICodedInputStream and ICodedOutputStream to allow
  custom implementation of writers with both speed and size optimizations.
- Addition of the "Google.ProtoBuffers.Serialization" assembly to support
  reading and writing messages to/from XML, JSON, IDictionary<,> and others.
- Several performance related fixes and tweeks
- Issue 3:	Add option to mark generated code with attribute
- Issue 20:	Support for decorating classes [Serializable]
- Issue 21:	Decorate fields with [deprecated=true] as [System.Obsolete]
- Issue 22:	Reusable Builder classes
- Issue 24:	Support for using Json/Xml formats with ICodedInputStream
- Issue 25: Added support for NuGet packages
- Issue 31: Upgraded protoc.exe and descriptor to 2.4.1

Fixes:
- Issue 13:	Message with Field same name as message causes uncompilable .cs
- Issue 16:	Does not integrate well with other tooling
- Issue 19:	Support for negative enum values
- Issue 26:	AddRange in GeneratedBuilder iterates twice.
- Issue 27:	Remove XML documentation output from test projects to clear 
  warnings/errors.
- Issue 28: Circular message dependencies result in null default values for 
  Message fields.
- Issue 29: Message classes generated have a public default constructor.  You
  can disable private ctor generation with the option generate_private_ctor.
- Issue 35: Fixed a bug in ProtoGen handling of arguments with trailing \
- Big-endian support for float, and double on Silverlight
- Packed and Unpacked parsing allow for all repeated, as per version 2.3
- Fix for leaving Builder a public ctor on internal classes for use with
  generic "where T: new()" constraints.

Other:
- Changed the code signing key to a privately held key
- Reformatted all code and line-endings to C# defaults
- Reworking of performance benchmarks to produce reliable results, option /v2
- Issue 34: Silverlight assemblies are now unit tested

===============================================================================
RELEASE NOTES - Version 2.3.0.277
===============================================================================

Features:
- Added cls_compliance option to generate attributes indicating 
  non-CLS-compliance.
- Added file_extension option to control the generated output file's extension.
- Added umbrella_namespace option to place the umbrella class into a nested
  namespace to address issues with proto files having the same name as a 
  message it contains.
- Added output_directory option to set the output path for the source file(s).
- Added ignore_google_protobuf option to avoid generating code for includes 
  from the google.protobuf package.
- Added the LITE framework (Google.ProtoBuffersLite.dll) and the ability to
  generate code with "option optimize_for = LITE_RUNTIME;".
- Added ability to invoke protoc.exe from within ProtoGen.exe.
- Upgraded to protoc.exe (2.3) compiler.

Fixes:
- Issue 9:	Class cannot be static and sealed error
- Issue 12:	default value for enumerate fields must be filled out

Other:
- Rewrite of build using MSBbuild instead of NAnt
- Moved to NUnit Version 2.2.8.0
- Changed to using secure .snk for releases

===============================================================================
RELEASE NOTES - Version 0.9.1
===============================================================================

Fixes:
- issue 10:	Incorrect encoding of packed fields when serialized

===============================================================================
RELEASE NOTES - Version 0.9.0
===============================================================================

- Initial release

===============================================================================