- Version updates. Fixes dep security advisories under spirit-daemonize (#69, #70).
- Simplifying the testing example.
App::run_test
for easier management of spirit mock "applications" inside tests.- Added guide for the above testing.
- Fix panic in
on_terminate
called after terminating.
- The Opts are now Default.
- Ability to inject command line options instead of parsing real ones (primarily for testing).
- Implement support for
tcp_keepalive
.
- Implement
From
instead ofInto
aroundEither
.
- Dep updates.
- Fix links in docs.
- Require less Unpin bounds (if the bound is not satisfied, the outer type is neither, but it's better than being 100% unusable).
- The Accept trait now takes Pin.
- More flushing of logs, in more corner cases.
- Flush logs before terminating.
- Fix invalid panic when using the background thread, non-blocking overflow mode is used and overflow doesn't happen.
- Install the background flush guard automatically.
- Update and extend the guide about daemonization.
- Use extension.
- Daemonization is unsafe, because of fork.
- Dep version updates.
- Support/fix graceful shutdown.
- Fix deadlock in the installer unistall routine (the remote drop had reversed condition).
- Support/fix graceful shutdown of futures when terminating the runtime.
- Add support for user to hold the runtime alive.
- Add support for removing unix-domain sockets (before and after use, configurable; by default stays the same as not deleting them).
- Add support for abstract addresses for unix domain sockets.
- Use
utils::support_emergency_shutdown
instead ofcleanup_signals
(the latter is deprecated).
- Fix occasional deadlock on shutdown of single-threaded tokio based applications.
- Porting to reqwest 0.11.
- Porting to hyper 0.14.
- Porting to tokio 1.0.
- Guide.
- More info about received signals.
- Migrate to signal-hook-0.2 (internal change)
- Use arc-swap 1.0
Pipeline::and_then
to conveniently support fallible transformations.- Use arc-swap 1.0
- Some doc fixes
- Ability to disable proxy (including auto-detected one).
is_default
andis_true
utility functions forskip_serializing_if
.
spirit::utils::cleanup_signals
to support "Second CTRL?+C terminates immediately".
- Make the
h1_writev
optional, as there's an auto mode by default. We want to have that, most of the time.- Technically a breaking change, but very small one and at a place where people are not really expected to touch. + We are still a 0. crate, so it makes more sense this way.
- Hide some more default options from
--dump-config
.
- Pass the
poll_read_buf
,poll_write_buf
through, to keep performance.
- Workaround for bug in
reqwest
whereblocking::ClientBuilder::from
doesn't preserve original timeout set in the async builder.
- Remove doc comments in build from
StructOpt
things, to work around problem instructopt
.
- Move to pipelines.
- Postpone daemonization for after stuff got validated, so errors are shown.
- Remove doc comments in build from
StructOpt
things, to work around problem instructopt
.
- Upgrade to spirit-hyper to 0.13.
- Upgrade to tokio 0.2. Hopefully not much functionality lost on the way. API changed, unfortunately.
- Use
socket2
instead ofnet2
. Besidesnet2
being deprecated, this'll allow us some more options for the sockets in the future.
- Fix
--version
(taken from the application, not from spirit). - Don't use hidden/private API of structopt.
- Clearer error message if config loading fails and there was no config passed in at all.
- Remove links to the guide. There's nothing in it right now anyway :-(.
Extensible::around_hooks
to support wrapping hooks/callbacks/pipelines inside a context similar toExtensible::run_around
.
- Update to reqwest 0.10.
- Dep updates.
- Releasing the previous as a breaking version; exposed different version of fern as part of public API.
to-syslog
feature renamed to justsyslog
- Dependency updates
- Dependency updates.
- Get rid of serde-humantime (outdated, unmaintained).
- Structopt ‒ allow more versions.
- Dipstick on 0.9
- Many others
- Tokio/futures related deps are still outdated :-(
- Use proper
#[exhaustive]
where appropriate instead of hidden workarounds.
- Note in readme about looking for contributors.
- Fix build against newer versions of structopt.
Root:
- Start the work on the guide level documentation.
- Go back to depending on vanilla
config
instead of private fork.
Log:
- Make the syslog support non-default feature.
- Flatten inside, not outside ‒ the caller needs
#[serde(default, skip_serializing_if)]
instead of#[serde(flatten)]
. But the caller can choose the name.
Root:
- Get rid of the
Body
hack,Box<dyn FnOnce()>
now works. - Abandoning failure, using boxed standard errors (with chaining).
- Removing dependencies and making a lot of things optional, to cut down on the dependency graph size.
- Pruning of the prelude ‒ it now contains only traits, not types.
- Ability to ask for all supported extensions when visiting a directory.
- The config loader can now parse arbitrary iterator as command line too.
- StructOpt updated to 0.3 (you'll have to update too).
- Remove ini and hjson from default-feautures
- Nobody really uses hjson and it has ancient dependencies.
- Ini is not very expressive.
- Bugfix: Allow overriding non-string config values from command line.
- Warn on unused config options.
- Can be turned off.
- The background thread is auto-joined by default now.
- And the terminate is called at the end of the
run
method (after all around-bodies).
- And the terminate is called at the end of the
- Hide the arc-swap from spirit's public interface.
- Talk by Arcs directly
- The
cfg_store
goes tospirit_cfg_helpers
crate (bumping that one is much less fuzz).
- Make the OnceDriver public.
- Delegate the Observe trait through the Monitor.
- Deal with dipstick upstream API breakage.
- Little internal optimisations.
- Fix some links in docs.
- Docs improvement (mention spirit-dipstick, fix links).
- Compatibility with dipstick 0.7.2.
- Addition of several more configuration fields.
- Fix application name as the default for prefix.
- Metrics to file are appended, not overwritten.
- Ability to configure the threadpool runtime from config file.
- A routine to serialize/deserialize
Option<Duration>
in human readable form.
- First shot at the crate.
- Internal code cleanups.
- Fix thread name in case of background logging into multiple loggers.
- Add a routine to serialize duration in human-readable format (when there are configs with durations). Might as well eventually go to serde-humantime.
- Fix of the CacheEq driver's abort.
- Separate
Optional
trait fromStackable
, separating ability to useOption<F>
from other collections.
- Fix running termination hooks.
- Fix some links in config.
- Tweaking of AsyncLogger::enabled to do a cheap early check.
- Async logging has adaptive dropping ‒ can be configured to drop less severe messages sooner.
- Update to deprecations from spirit 0.3.2
on_terminate
takesFnOnce
instead ofFnMut
.log_error!
macro, to cut down on boilerplate of the same-named function.ErrorLogFormat::Multiline
replaced byMultiLine
(inconsistency, the old one still stays as a deprecated alias).- Fix corner cases around registering callbacks after termination.
- Don't register signals if the background thread is not started.
ConfigBuilder::config_defaults_typed
to specify the lowest level of configuration through a struct instead of just string.
- Support the http1-half-close option.
- Cap configured level by
log::STATIC_MAX_LEVEL
too.
- bugfix: SeqDriver removes unused resources.
- Asynchronous/background logging support.
- Fix of collision on stderr (errors were logged twice if configuration had a stderr log).
- Ability to hold guards (things keeping something alive) until the end of the lifetime of Spirit (and therefore application, in most cases).
- Ability to join the background thread (either manually or requesting autojoin).
- Fixes around logging of validation errors.
- Fixes around updating sequences in pipelines (only the first update succeeded).
- Configuration can be loaded without the full machinery of full Spirit object.
- Helpers got renamed to Extension.
- Extension, callbacks and other similar things can now be added to already built Spirit as well as Builder.
- A lot of methods moved onto traits to support the above. To import all of
them,
use spirit::prelude::*
is recommended. - Pieces of configuration are now described in generic way with the
Fragment
trait. This allows to manually create the resource the configuration describes. CfgHelper
andIteratedCfgHelper
are gone. They are replaced with thePipeline
machinery that takes aFragment
on one end, creates the resource, does something with it and then installs it fully automatically. This is, however, more flexible and looks more magical when being read.
- Fix panic when the config can't be serialized to toml due to order of values.
- Configuration fragments now implement
Serialize
andStructDoc
to support theCfgDump
andCfgHelp
helpers.
- Initial implementation.
CfgDump
andCfgHelp
command line options.config_logging
to log configuration changes.
- Initial implementation.
- Fragment to configure and build the client.
- A storage that is kept up to date all the time.
- spirit::utils::Hidden to hide sensitive information from logs.
- Make the
max-conn
connection limit optional. If not present, the number of active connections is not limited (well, but max number of file descriptors, kernel, memory… but not the application itself).
- Ability to specify connection limits.
- New way of handling connection limits (reusable as a transport for eg. hyper).
- More informative error messages when binding.
- (Re)enabled log-panics integration. It got lost when splitting of the main
spirit
, but was always intended to be present.
- Docs extensions (example, listing features, adding link to tutorial).
- Docs fixes.
- Redesigned (same changes as with spirit-tokio).
- Support for arbitrary
Service
implementations.
- Redesigned; the main traits are now
ResourceConfig
andResourceConsumer
. They interlock in a similar way the serde traits do. - Support for unix domain sockets.
- Either for alternative sockets (usually unix vs. IP).
- Fixed problem of not shutting down on error from inner body.
- Ability to opt out of several dependencies by features (the config dependencies).
- Some more logging formats.
- Don't add needless context to top-level errors.
- More detailed errors from configuration loading & friends (they have causes and contexts).
- Moved few utility functions into
utils
(and re-exporting them for compatibility).
- Turn the passed configuration paths to absolute so they survive daemonization or other changes of current directory.
- Utility function to parse PathBuf into absolute one in StructOpt (to allow custom fragments to do the same).
- Fix of the error message when missing configuration files.
log_errors_named
.- Fix/improvement of the target for errors inside
run
.
- Possibility to choose the logging format, at least a bit for now.
- Fix documentation (the key is
pid-file
, with a dash).
- Fixed matching environment variables with underscore.
- Use standard date format (rfc3339).
- Allows choosing between local and UTC time and configuring the time format.
- Helpers for immutable config fragments.
- Config hook gets access to the command line options too.
- Logging extracted to a separate helper crate (
spirit-log
). - Daemonization extracted to a separate helper crate (
spirit-daemonize
). - Ability to not start the background thread.
- Dropped the
S
type parameter. It now keeps the config internally, but if exporting to a global variable is needed, ahelpers::cfg_store
helper is provided.
- Initial release, minimal hyper support.
- The ResourceMaker trait to reuse lower-level things in higher-level abstractions. To be used by other helper crates.
- Link/documentation fixes.
- Added support for named groups and users when dropping privileges (thanks to myrrlyn).
- Inclusion of the spirit-tokio helper
- Initial implementation