Skip to content

v0.7.2

Compare
Choose a tag to compare
@danfuzz danfuzz released this 08 May 18:06
· 1315 commits to main since this release

This release contains most (if not all) of the breaking changes when using the
system as a framework (i.e., building an app and not just running a static web
server) that are currently anticipated for the v0.7.* release series. The hope
is that v0.7.* will reach stability relatively soon.

Breaking changes:

  • configuration / webapp-builtins:
    • Changed MemoryMonitor to use ByteCounts for the limit configuration.
    • Changed the file rotation / preservation configurations that had been plain
      numbers to instead be ByteCounts.
  • compy:
    • Reworked how component classes define their configuration properties, to
      be way more ergonomic, avoiding a lot of formerly-required boilerplate and
      adding a modicum of error checking that all components get "for free."
      Note: While this is a breaking change for how components are built, it
      doesn't affect how components are instantiated. For example, this doesn't
      make you change your standalone config files.
    • Similarly, reworked the component lifecycle methods to all be "must call
      super" instead of the former "must not call super" style. The latter
      stopped making sense with the introduction of the template mixin classes.
    • New base class BaseRootComponent to be the superclass for root components.
    • Switched a few classes from base classes to template classes:
      • BaseThreadComponent -> TemplThreadComponent.
      • BaseAggregateComponent -> TemplAggregateComponent.
      • BaseWrappedHierarchy -> TemplWrappedHierarchy.
    • New exported classes to help with testing: MockComponent and
      MockRootComponent.
  • data-values:
    • Renamed Struct -> Sexp, because it's really this project's version of
      the "sexp" concept. And for similar reasons, renamed the type field of it
      to functor. This rename also makes room for the new Struct-y thing.
    • Moved BaseConfig here from compy.
    • New class BaseStruct, extracted from BaseConfig, because most of what
      BaseConfig did was not particularly specific to configuration, per se.

Other notable changes:

  • configuration:
    • New top-level (WebappRoot) configuration logging, to do fine-grained
      control over which components produce system logs.
    • New per-application and per-service configuration dispatchLogging to
      specifically enable/disable dispatch-related logging. These logs can be
      very chatty, and only rarely useful (though not totally useless).
  • compy:
    • Fixed bug in BaseComponent.CONFIG_CLASS which caused it to sometimes
      call base classes' _impl_configClass() multiple times (which isn't
      supposed to happen, ever).
  • webapp-builtins:
    • Took advantage of TemplThreadComponent in a few classes that could use it,
      now that it's a template (and not a direct subclass of BaseComponent).