Skip to content

Dec v0.8.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 25 Nov 11:49

Added

  • SetupDependsOnAttribute, which allows you to define ConfigErrors/PostLoad dependencies between Dec classes. This is a prototype and will probably change in the future.
  • A general-purpose stable dag evaluator, which is exposed mostly because it's often convenient.
  • Recorder.InputContext, which gives contextual diagnostic information useful for reporting Recorder issues.
  • Debug-log functions to Context and Recorder, making it easier to report issues.
  • The ability to reference class objects contained within Decs. Right now the path generation works only for members, lists, arrays, and values of dictionaries that are input with non-li keys; this will probably be improved later.
  • Added Database.RegisterLookup() to manually add global lookup references. No guarantee this interface keeps existing in this form. But it's there, and one way or another I'll continue to support similar functionality.

Breaking

  • Dec doesn't guarantee what order Decs are initialized in, and it still doesn't . . . but it was pretty consistent, and boy, did the above change seriously scramble the order they tend to get initialized in! If you have load dependencies, even if you don't realize that you do, don't be surprised if stuff breaks. Future versions of Dec might include a Dev Mode that intentionally randomizes load order (within the bounds of dependencies) to help catch these issues.
  • PostLoad() no longer runs after all ConfigErrors(), but only after its own ConfigError(). This was never guaranteed either but you might have been relying on it. This entire system really needs a revamp. Sorry. Come pester me on Discord if you have a strong opinion on how it should work.
  • Rename Dec.InputContext to Dec.Context, since it will now also apply to things that aren't input. Sorry about this one too - it'll take some renaming.
  • Split CloneWithAssignmentAttribute into CloneStructPiecewiseAttribute and CloneClassAsSharedRef, because the description of CloneWithAssignmentAttribute was just plain confusing. I don't think anyone's using Clone besides me. If you are, come talk to me on Discord so I can make sure it's doing what you need.

Improved

  • Error messages regarding Shared/Unshared conflicts now report the actual location of those conflicts. This is a first revision; please give feedback.
  • Clone performance on Dictionaries with asymmetrical clone-as-valuelike parameters.
  • General Clone performance regarding asymmetrical clone-as-valuelike parameters.

Made Worse

  • The new Path system is probably a performance and memory hit. For now, I'm just living with it; if it's a problem for you, please report it so I can work on it with actual numbers.

Fixed

  • Several Clone pathways that would incorrectly Record objects with a TreatAsValuelike converter.