⚠️ indicates a breaking change.
[Unreleased]
Added
- Derive
Debug
,PartialEq
andEq
forargp::Cmd
.
Changed
Removed
[0.7.0] - 2024-10-17
Changed
- Fix bug in winsvc rt implementation that caused error to get lost.
- ⚠️ Add
std::fmt::Debug
bounds to application errors at certain locations to assist in debugging.
[0.6.2] - 2024-10-17
Added
- After the qsu runtime as been launched
rt::runas()
can be used to probe whether the runtime was run as a foreground application or as a service subsystem application.
Changed
- Make
display_name
anddescription
options forregister-service
generally available on all platforms, but document which platforms they are used on."
[0.6.1] - 2024-10-05
Changed
- Rephrase
register-service
command line parser docs.
[0.6.0] - 2024-09-13
Added
- The reload service event has been implmented.
- It is not supported on Windows. (The Windows service subsystem offers no "reload" event).
- On unixy systems it is triggered through the SIGHUP signal.
- When using this feature on systemd, the server type should be set to
notify-reload
, and qsu will automatically reportRELOADING
,MONOTONIC_USEC
orREADY
to systemd as needed.
- Translate SIGUSR1/SIGUSR2 signals to
SvcEvt
's on unixy platforms.
Changed
- ⚠️ Rename instances of "trace level" to "trace filter".
- ⚠️
SvcEvt::Shutdown
andSvcEvt::Terminate
have been merged into the variantSvcEvt::Shutdown(Demise)
, whereDemise
can be used to determine if the service application is terminating via interruption/Ctrl+C, service shutdown request or if the service application reached reached its end without any external termination requests. - ⚠️ Introduce
CbErr<ApEr>
to carry application-specific error type, and useError
to only store library errors. - Installer:
- Allow display name and description to be set on unsupported platforms, to allow application code to avoid platform gates.
- On Windows, implicitly add
Tcpip
as a service dependency for services marked as a netservice.
Removed
- ⚠️ The
SvcEvtReader
channel end-point has been removed. Previously this was passed to the service handlers'run()
method. Now, instead, the application passes a service event handler closure when creating the runtime. To simulate the old behavior, an application can pass a closure that forwards all incomingSvcEvt
events to a channel, which has its receiving end-point stored in the service handler.
[0.5.0] - 2024-05-20
Added
TRACE_FILTER
environment variable used to configure tracing to output.TraceFilter
registry key on Windows used to configure tracing output.
Changed
- ⚠️ Instead of specifying a "trace level" (similar to "log level"), specify a "trace filter", allowing fine-grained control of modules to include in traces.
Removed
TRACE_LEVEL
environment variable no longer used.TraceLevel
registry key on Windows no longer used.
[0.4.1] - 2024-05-19
Added
- Re-export
log
andtracing
.
Changed
- windows-service 0.6.0 → 0.7.0
[0.4.0] - 2024-03-22
Added
- Add a
rt::RunEnv
type that is passed to application handler callbacks, allowing the application to be information about whether they are being run as foreground processes or as services.
Changed
- Replace
StartState
andStopState
withInitCtx
andTermCtx
, each of which also contain aRunEnv
.
[0.3.0] - 2024-01-30
Changed
- Updated dependencies.
env_logger
updated to 0.11.
[0.2.1]
Added
- Re-export
apperr
[0.2.0]
Changed
- Use apperr 0.2.0, which introduces trait bounds to the
AppErr::new(E)
to make it more difficult to pass the wrong type to it.
[0.1.0] - 2024-01-10
Changed
- Use apperr crate for
AppErr
instead of using a custom in-tree implementation.
[0.0.7] - 2023-12-09
Changed
- Use rocket 0.5.0 for Rocket server application runtime types
- Updated dependencies.
[0.0.6] - 2023-11-10
Changed
- Bugfix: Attempted to use rocket without rocket feature.
[0.0.5] - 2023-11-03
Changed
- Use rocket 0.5.0-rc.4 for Rocket server application runtime types
[0.0.4] - 2023-10-29
Added
- Add the remaining
ArgsProc
callbacks inArgParser
.
Changed
- Rather than pass a creation closure to the
ArgParser::proc()
for the run case, add aArgsProc::build_apprt()
that'll be invoked to create the runtime instead. - More consistently use
AppErr
for callbacks.
Removed
- Removed
err::CbOrigin
.
[0.0.3] - 2023-10-23
Added
- Introduce an
AppErr
type that can wrap application-specific errors that the service runtime callbacks return for theErr()
case. - Make the
Error::App()
take two values: AnCbOrigin
that is used to identify which callback returned an error, and anAppErr
containing the application-specific error.
Changed
- Make it possible to intsruct LumberJack not to initialize logging/tracing (because otherwise tests that initialize the qsu runtime will panic).
- Major refactoring. Moved runtime to its own
rt
submodule, and put it behind a (default)rt
feature. - Put the tokio server application runtime behind a
tokio
feature. Note: qsu still depends on tokio without tokio runtime support (albeit only with thesync
feature for channels).
Removed
leak_default_service_name()
was removed because it no longer serves a purpose.- The
signals
module is no longer public. (It still exists, but is considered an implementation detail).
[0.0.2] - 2023-10-19
Added
- Added some optional clap integration convenience functionality, that can be enabled using the 'clap' feature.
- Added
SvcEvt::Terminate
. - Argument parser allows setting default service logging/tracing settings when registering service.
- High-level argument parser that wraps service registration, deregistration, and running has been integrated into the qsu core library.
Changed
- SIGTERM/Ctrl+Break/Close sends
SvcEvt::Terminate
rather thanSvcEvt::Shutdown
. eventlog
errors are mapped toError::LumberJack
(instead ofError::SubSystem
).
[0.0.1] - 2023-10-15
Initial release.