v0.7.2
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 useByteCount
s for the limit configuration. - Changed the file rotation / preservation configurations that had been plain
numbers to instead beByteCount
s.
- Changed
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 callsuper
" 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
.
- Reworked how component classes define their configuration properties, to
data-values
:- Renamed
Struct
->Sexp
, because it's really this project's version of
the "sexp" concept. And for similar reasons, renamed thetype
field of it
tofunctor
. This rename also makes room for the newStruct
-y thing. - Moved
BaseConfig
here fromcompy
. - New class
BaseStruct
, extracted fromBaseConfig
, because most of what
BaseConfig
did was not particularly specific to configuration, per se.
- Renamed
Other notable changes:
- configuration:
- New top-level (
WebappRoot
) configurationlogging
, 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).
- New top-level (
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).
- Fixed bug in
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 ofBaseComponent
).
- Took advantage of