Skip to content

Yarhl 3.0

Compare
Choose a tag to compare
@pleonex pleonex released this 26 Jul 22:50
· 301 commits to develop since this release
5c66e18

This release focuses in API user-experience enhancements. The transform and format API methods and base classes are now easier to understand and use. New convenience methods introduced and factories. Extensibilities in the IO namespace to support advance use cases as we have more applications using Yarhl.

Special thanks to all the contributors: @Kaplas80, @pleonex and @priverop and to all our users providing great feedback. Especially the guys from TraduSquare.

Features

  • New API to pass parameters to converters: IInitializer<T> (#93 by @pleonex)
  • New API DataStreamFactory to create DataStream (#111 by @pleonex)
  • New API to keep ownership of underlying streams (#118 by @pleonex)
  • New API to create nodes from a part of a stream: NodeFactory.FromSubstream (673ad2d by @pleonex)
  • New API to create DataStream from a byte array (9158dea by @pleonex)
  • Thread-safe DataStream for sharing an IStream (#129 by @Kaplas80)
  • Add extensibility to streams with new interface IStream (#109 by @pleonex)
  • Lazy open files to avoid hitting maximum file handlers opening a folder (#111 by @pleonex)
  • Improve memory and performance by using RecyclableMemoryStream for memory DataStream (#111 by @pleonex)
  • New interface IBinary to mark binary types (other than BinaryFormat) (0450b98 by @pleonex)
  • Improve performance of DataStream.Compare (#110 by @pleonex)
  • New API DataReader.ReadStringToToken() (#137 by @pleonex)
  • New constructor in TextReader and TextWriter with the encoding name (#114 by @pleonex)
  • Auto-register additional encodings of .NET Core (#114 by @pleonex)
  • New API to sort children (#131 by @Kaplas80)
  • New node tags FileInfo and DirectoryInfo in nodes from the NodeFactory (#128 by @Kaplas80)
  • Optional dispose of nodes when removing children (#130 by @Kaplas80)
  • Enhancements to NodeFileContainer.MoveChildrenTo for merging nodes instead of replacing (#130 by @Kaplas80)
  • Support relative path searches (#99 by @pleonex)
  • New API to remove nodes (#100 by @pleonex)
  • Prevent adding as a child a parent node (#115 #133 by @pleonex and @Kaplas80)
  • New cookbook with small code snippets (#108 by @priverop)
  • New CII Best Practices badge (6e06654 by @pleonex)

Breaking changes

  • Change license from GPL v3 to MIT which is more permissive (#121 by @pleonex)
  • Split PO converters. Binary format into PO is a new converter: Binary2Po (#120 by @pleonex)
  • Change Node.Transform methods into Node.TransformTo and Node.TransformWith (#93 by @pleonex)
  • Move static converter methods from Format to new static class ConvertFormat (#92 by @pleonex)
  • Convert Format into an empty interface IFormat (#92 by @pleonex)
  • Node.Format property is now getter-only. New method added Node.ChangeFormat (#92 by @pleonex)
  • Move DataStream and BinaryFormat constructors to DataStreamFactory (#111 by @pleonex)
  • BinaryFormat does not create its own DataStream, it will dispose the stream passed in the constructor (#111 by @pleonex)
  • Move BinaryFormat class to the Yarhl.IO namespace (0450b98 by @pleonex)
  • Rename DataReader.ReadPadding to SkipPadding (#109 by @pleonex)
  • Prevent changing length of a substream (#97 by @pleonex)
  • Rename Replacer.Transform into TransformForward and TransformBackward (#101 by @pleonex)

Bugs

  • Fix decoding issues in DataReader.ReadString (#137 by @pleonex)
  • Fix writing large files (> 2GB) (#113 by @pleonex)
  • Missing extensions defined by an executable (eed98a7 by @pleonex)
  • Skip assemblies throwing BadImageFormatException (#125 by @Kaplas80)
  • Changing substream length may be overwriting other stream sections (#97 by @pleonex)
  • Fix converting from base types (#102 by @pleonex)
  • Check if the return type after transforming implements IFormat (#103 by @pleonex)
  • Do not dispose when changing to the same format instance (#119 by @pleonex)
  • Documentation link and version improvements (#106 and #107 by @priverop)

Other changes

  • Build and ship for .NET Framework 4.6.1 (TFM net461) for applications running in .NET Framework below 4.7.2 (d1588b9 by @pleonex)
  • Run tests in latest frameworks: .NET Core 3.1, .NET Framework 4.8 and Mono 6 (#116 #137 by @pleonex)
  • Consolidate CI in Azure DevOps and create test feed (#94 by @pleonex)
  • Improvements in build system and project handling (#117 by @pleonex)
  • Move SonarQube to SonarLint to get feedback while coding (#117 by @pleonex)
  • Warnings cleanup (team work accross PR like #98 and #122)
  • Change default branch to develop (b0ca82e by @pleonex)