Skip to content

Releases: danfuzz/lactoserv

v0.7.7

24 Jun 18:41
Compare
Choose a tag to compare

Breaking changes:

  • None.

Other notable changes:

  • configuration:
    • For all rate-limiter components, exposed the pre-existing underlying token
      bucket option initialBurst.

v0.7.6

04 Jun 20:24
Compare
Choose a tag to compare

Summer stability! This is the first stable release of the v0.7.* series. The
current plan is to let v0.7.* be the main release series for the next several
months, letting downstream projects use it more or less as-is for a while... and
offer feedback, if they are so inspired, to help drive the next major round of
development.

Breaking changes:

  • None.

Other notable changes:

  • net-util:
    • Minor fixes to hostname / IP address parsing.
  • webapp-core:
    • Exported NetworkHost, which was supposed to have been public since day
      one.
  • testing:
    • Added more unit tests.
    • Fixed a handful of bugs that cropped up from the effort (all minor).

v0.7.5

30 May 22:22
Compare
Choose a tag to compare

Is it stable? Assuming no major problems in the next week or so, the next
release will be a nearly-no-changes one and will be declared the first stable
release of the v0.7.* series.

Breaking changes:

  • framework development:
    • Moved testing-related module exports into submodules named <name>/testing.

Other notable changes:

  • testing:
    • Added more unit tests.
    • Fixed a handful of bugs that cropped up from the effort (all minor).

v0.7.4

22 May 17:16
Compare
Choose a tag to compare

Breaking changes:

  • None.

Other notable changes:

  • net-util:
    • Found a major problem with the pem module (one of our few direct
      dependencies). Replaced it with selfsigned, which -- bonus! -- unlike
      pem does not rely on an OS-installed OpenSSL, thereby simplifying our
      installation requirements.
  • testing: Added more unit tests.

v0.7.3

16 May 19:40
Compare
Choose a tag to compare

Breaking changes:

  • data-values:
    • Made it so that all instances of BaseStruct are frozen. This had been
      intended all along, but was overlooked in the implementation until now.
  • metacomp:
    • Distilled all the static make*Proxy() methods on BaseProxyHandler down
      to just a single options-taking makeProxy().

Other notable changes:

  • Stopped complaining if run with Node v22.
  • configuration / webapp-builtins:
    • Added dispatchLogging configuration to endpoint entries (class
      NetworkEndpoint).
    • DataRateLimiter: Added verboseLogging option, off by default, to make it
      possible to log the major stuff without getting a lot of writing(1234)
      type messages.
    • PathRouter: Made it possible to cut off fallback search by explicitly
      binding a path to null.
  • compy:
    • New method BaseComponent._prot_addAll(), for multiple children.
    • Made it possible for a component to add children before it is initialized.
  • data-values:
    • Add to Converter the ability to configure how to encode proxies.
  • testing:
    • With apologies to Goodhart's Law... Wrote a bunch of unit tests to cover
      notable gaps, based on the coverage report.

v0.7.2

08 May 18:06
Compare
Choose a tag to compare

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).

v0.7.1

01 May 16:02
Compare
Choose a tag to compare

This release contains most (if not all) of the breaking changes to standalone
configuration that are currently anticipated for the v0.7.* release series.

Note: v0.7.0 wasn't announced widely, because it was mostly just a clone
of v0.6.16.

Breaking changes:

  • configuration / webapp-builtins:
    • Totally reworked rate limiting. There is now a separate class per thing that
      can be rate-limited -- ConnectionRateLimiter, DataRateLimiter, and
      RequestRateLimiter -- and configuration uses unit quantity classes for all
      the token bucket stuff.
  • async / webapp-util:
    • Moved TokenBucket from async to webapp-util. It was the only
      not-particularly-simple class in async, and its placement in that module
      had become the source of a module dependency cycle.
    • Renamed IntfThreadlike to IntfThread.
    • Made EventSink implement IntfThread.
  • clocky / clocks:
    • Renamed module to clocky, to harmonize with the other *y modules.
  • collections:
    • Renamed classes to be more sensible: TreePathMap -> TreeMap, and
      TreePathKey -> PathKey.
  • data-values:
    • Filled out the comparison methods in Moment, and made them match the ones
      added to UnitQuantity (see below).
    • Reworked UnitQuantity.parse(), with much more straightforward
      functionality, including the addition of optional unit conversions.
  • loggy-intf:
    • Removed FormatUtils.byteStringFrom() in favor of
      ByteCount.stringFromByteCount() (see below).

Other notable changes:

  • clocky:
    • Added waitFor() to the interface IntfTimeSource.
    • Extracted MockTimeSource from TokenBucket.test.js, for use throughout
      the system.
  • compy:
    • New classes BaseWrappedHierarchy and BaseThreadComponent.
  • data-values:
    • Added comparison methods to UnitQuantity.
    • New classes ByteCount and ByteRate, both unit quantities.
  • webapp-builtins:
    • New applications RequestDelay and SuffixRouter.

v0.7.0

22 Apr 19:58
Compare
Choose a tag to compare

This is the same source tree as v0.6.16, other than the version strings and the
CHANGELOG file.

Breaking changes:

  • None.

Other notable changes:

  • None.

v0.6.16

22 Apr 17:48
Compare
Choose a tag to compare

First stable release of the v0.6.* series.

Breaking changes:

  • None.

Other notable changes:

  • compy: Tiny bit of cleanup in BaseComponent.

v0.6.15

17 Apr 19:01
Compare
Choose a tag to compare

Are we there yet?: This release will probably be declared stable, unless
something surprising (and unfortunate) happens within a couple days of its
release.

Breaking changes:

  • compy / compote:
    • Renamed module compote to compy, to harmonize with loggy and typey.
    • Combined all the config base classes into the base-base class BaseConfig.
      The other classes weren't really serving much of a purpose, and to the
      extent that they were, it didn't help that they were separate from the main
      base class.
    • The component hierarchy is now tracked as a unified TreePathMap, and
      getComponent() now takes absolute paths instead of simple names.
    • Got rid of the isReload argument to all the init() and start() (and
      related) methods.
    • Got rid of IntfComponent (merged its docs back into BaseComponent), as
      it only ever existed to break a circular dependency, but that was better
      achieved by using a forward-declaration @typedef.
  • host / webapp-util:
    • Moved BaseSystem from webapp-util to host.
    • Reworked the BaseSystem subclass-implementation API to be a lot simpler.
      This was made possible by the recent work on the compy module.
    • Reworked BaseSystem to be a root component (not just some-random-object).

Other notable changes:

  • compy:
    • New method BaseComponent._prot_addChild(), to simplify adding children.
    • New method BaseComponent.whenStopped().
    • New abstract class BaseAggregateComponent, for components that publicly
      allow children to be added.
  • webapp-core:
    • Used BaseAggregateComponent to simplify the classes that are in fact
      aggregate components.