Changes

All notable changes to this project will be documented in this file.

1.3.0 - 2022-6-20

Checkout blog post "DataConfig Core and JSON Asset 1.3 Release".

  • CHANGE Property reader/writer improvement and fixes
    • Allow reading Array/Set/Map and native array like int arr[5] as root.
      See: Non Class/Struct Root
    • Expand property with ArrayDim > 1 as array.
      See: Property
    • Performance improvement by caching FScript/Array/SetHelper
  • NEW Extra samples:
  • FIX Core changes and fixes:
    • Fix stale enum property fields serialization crash.
    • Fix TSet/TMap serialization crashes.
    • Fix soft object/class reference serialize to nil when it's not loaded.
    • Fix pipe property class/object handlers.
    • Fix TObjectPtr<> serialialzation and deserialization.
    • Fix PeekReadDataPtr on class property.
    • Removed FScopedStackedReader/FScopedStackedWriter usage.
    • Fix HeuristicVerifyPointer diagnostic.
    • Fix DC_TRY shadowing variable Ret.
    • JSON now support non string keyed TMap<> as [{ "$key": <foo>, "$value": <bar> }].
      See: JSON- Map
    • Fix DcPropertyUtils::DcIsSubObjectProperty()
      Now it only checks for CPF_InstancedReference.
    • Update screenshots to UE5.
      Note that DataConfig still supports from 4.25 and onwards.
    • Update Property docs.

1.2.2 - 2022-4-5

  • Support for UE 5.0.0
  • Add DebugGetRealPropertyValue for double BP fields.

1.2.1 - 2022-2-23

  • Support for UE5 Preview 1.
  • FIX Compile fixes for examples on UE 4.25.
  • FIX UE 4.25/4.26 editor extra BP serde automation test fixes.
  • FIX FDcAnsiJsonWriter writes non ascii char to ? when string contains escaping characters.
    • FDcJsonWriter was unaffected. This only happens to the ansi char writer and only when input has escapes like \t.

1.2.0 - 2022-1-26

Checkout blog post "Introducing DataConfig 1.2".

  • NEW Serializer. Previously we only have deserializers.
    • Serializer API mirrors deserializers.
    • Builtin serialization and deserialization handlers are all roundtrip-able.
    • DcDiagnosticDeserialize -> DcDiagnosticSerDe for sharing diagnostics.
    • DcDeserializeUtils -> DcSerDeUtils for sharing code.
  • NEW MsgPack reader and writer.
  • NEW JSON writer.
    • With WIDECHAR/ANSICHAR specialization as JSON Reader.
    • Accept config to output pretty or condensed output.
  • NEW Builtin metas.
    • DcSkip - skip marked fields
    • DcMsgPackBlob - marked TArray<>/Struct would be read as blob by MsgPack SerDe
  • CHANGE Core type changes.
    • FDcReader/FDcWriter changes.
      • FDcStruct/ClassStat renamed to FDcStruct/ClassAccess.
      • ReadStruct/ClassRoot() renamed to ReadStruct/ClassRootAccess.
      • AddReadStruct/ClassRoot() that takes no argument for common use cases.
      • FDcReader::Coercion() now returns a FDcResult
      • [Read/Write]Soft[Object/Class]Reference takes FSoftObjectPtr.
      • RTTI with GetId() and CastById()
    • FDcSerializer/FDcDeserializer changes.
      • DcDiagnosticDeserialize -> DcDiagnosticSerDe for sharing diagnostics.
      • DcDeserializeUtils -> DcSerDeUtils for sharing code.
      • Add handlers to read/write Soft/Lazy references as is, without loading the object.
      • Implicit call Properties.Push() before context Prepare().
      • Removed FDcScopedProperty in favor of DcDeserializeUtils::RecursiveDeserialize() it's more concise.
    • FDcPropertyReader/FDcPropertyWriter changes.
      • When reading class object keys any one with $ will be ignored.
        • previously only allow $type, $path.
        • note that struct by default don't check for these. It's trivia to add the logic if you want to.
      • Add FDcPropertyReader::PeekReadDataPtr matches with PeekProperty
    • FDcJsonReader changes.
      • Remove object key length limit, which was 2048 and it's incorrect.
        • Though FName is capped at 1024, which is a Unreal Engine limit.
      • Fix ReadName() which previously would fail.
      • Fix quoted string parsing/escaping in ParseQuotedString
    • Add EDcDataEntry::Extension.
    • Add FDcPropertyDatum template constructor to directly construct one from a FSturct*.
    • FPrettyPrintWriter now print blobs with hash, previously it's pointer value.
    • DcAutomationUtils::SerializeIntoJson/DeserializeIntoJson -> SerializeInto/DeserializeFrom as we're supporting other formats.
    • Add HeuristicVerifyPointer to check common magic invalid pointers.
  • Misc fixes and QOL improvements.
    • Fixed linux build. Now the headless program target cross compiles and runs under wsl.
    • Serializer/Deserializer now also report diagnostics.
    • Better Json reader diagnostic formatting. Now it clamps long lines properly.
    • Add DataConfigEditorExtra.DcCoreTestsCommandlet as tests runner.
    • Add performance benchmark.
    • Restructured DataConfig book for topics on serializer and MsgPack.

1.1.1 - 2021-10-6

  • Support for UE 4.27.
  • Support for UE 5.

1.1.0 - 2021-4-24

  • Integrate nst/JSONTestSuite. Now DcJSONParser pass most of them. Skipped tests are also documented.
  • FDcAnsiJsonReader now detect and convert non ASCII UTF8 characters. Previously these characters are dropped.
  • Headless test runner pass along parameters to tests, for example DataConfigHeadless-Win64-Debug.exe Parsing -- n_array_just_minus