Skip to content
This repository has been archived by the owner on Feb 8, 2022. It is now read-only.

0.2.1 release details

Compare
Choose a tag to compare
@ctaggart ctaggart released this 08 Apr 15:09
· 36 commits to master since this release

Updating from Froto 0.1.0

Core

  • Froto.Core was reworked to provide serialization and deserialization of
    all supported wire types and to minimize buffer copying.
    • Code depending on Froto.Core.IO will need to be rewritten to use the
      following modules and types:
      • Froto.Core.WireFormat
      • Froto.Core.Encoding.RawField
      • Froto.Core.ZeroCopyBuffer and subclasses
    • Alternatively, the functions in the Froto.Core.Encoding.Serializer
      module can provide a slightly higher level of abstraction.
    • Or, see next.
  • Added a framework for easily constructing serializable class types.
    • See Froto.Core.Encoding.MessageBase for an abstract base class which
      provides the serialization framework, and see
      Froto.Core.Test/ExampleProtoClass.fs for example usage.

Parser

  • The parser now generates an AST based on Discriminated Unions, rather than
    objects. Froto.Parser.Ast (and the underlying parser) now support the full proto2
    and proto3 languages.

  • The old primary class, Froto.Parser.ProtoAst.ProtoFile has been renamed to
    Froto.Parser.Model.ProtoFile and given static factory methods to simplify
    access from C#, VB.net, etc.

    Note that this model curently only supports a subset of the proto2 language.
    This will be expanded in later releases to fully support proto2 & proto3.

    • ProtoFile.ParseString(s:string)
    • ProtoFile.ParseStream(streamName:string, stream:System.IO.Stream)
    • ProtoFile.ParseFile(fileName:string)