v1.0.0
[1.0.0] - 19-08-2021
A lot of things happened during this release.
Even though quite a few new features were added, the main effort went into increasing stability and inter-version compatibility.
The goal of this release is to push the code quality, error handling, test coverage and stability to a level that justifies a v1.0 release.
Since this project follows semantic versioning, this includes no breaking changes and backward compatibility on minor version upgrades.
This also means that I'm quite certain that there are no critical bugs in the project and that all important and planned features have been implemented.
Unless some critical issues pop up, this can be seen as a finished version of the project!
Disclaimer: This project is mainly developed for Linux.
Windows and MacOS/Apple platforms are partially supported, but this is a community effort.
Thereby, v1.0 might be misleading for those.
I hope you understand, that I cannot wait for someone to implement missing features for these platforms.
I want this project to move forward.
Added
~
is respected in configuration paths by dadav for #191.- Use
pueue kill --signal SigTerm
to send Unix signals directly to Pueue's processes. #202 - Support for other
apple
platforms. New build artifacts forios-aarch64
. - Option in config file to use the
--in-place
flag onrestart
by default. --failed-in-group [group_name]
forrestart
. That way you can restart all failed tasks of a specific group #211- Options in config file to configure the time and datetime format in
pueue status
for #212. - Add a worker pool representation for groups to Pueue #218.
The task's group name and the pool's worker id for a given task are then injected into the environment variables of the subprocess.
This allows users to map Pueue's internal group and worker logic to external resources:./run_on_gpu_pool --gpu $PUEUE_WORKER_ID --pool $PUEUE_GROUP`
- The last lines of
stderr
andstdout
are now available in the callback command. #196. - Add
callback_log_lines
setting for the daemon, specifying the amount of lines returned to the callback. #196. - Add a PID file to
$pueue_directory/pueue.pid
, which will be used to check whether there's an already running daemon.
Changed
- Use the next available id instead of constantly increasing id's.
This results in ids being reused, onpueue clean
orpueue remove
of the last tasks in a queue. - Show the date in
pueue status
for thestart
andend
fields, if the task didn't start today. - Backward compatible protocol for stable version changes with
serde_cbor
. - Detection of old daemon versions during client->daemon handshake.
- Overall better debug messages.
- Use tokio's async runtime and set a hardcoded limit of 4 worker threads, which is already more than enough.
- Add a debug message, when using
pueue wait
orpueue wait -g some_group
and there're no tasks in the group. - Stabilized internal daemon shutdown and restoration logic.
- Rename
Index
toId
inpueue status
to free up screen space. - Remove
Exitcode
column inpueue status
and include exitcode intoFailed
status to free up screen space. - You can no longer remove groups, if there are still tasks assigned to that group.
- A non-zero exit code will be returned, if no tasks were affected by an action.
Datastructures
A whole lot of Pueue's internal datastructures have been refactored.
The main goal of this was to prevent impossible/invalid states wherever possible.
Overall, this resulted in sleaker und much better maintainable code. However, this broke backwards compatibility to pre-v1.0 at numerous places.
- Json structure of the
Task
struct changed significantly, as data depending on the current status has been moved into theTaskStatus
enum. - Many messages have been touched, as several new enums have been introduced and many fields have been removed.
Fixed
- Handle very rare race-condition, where tasks with failed dependencies start anyway.
pueue log --json
now works again. #186
By default, only a few lines of output will be provided, but this can be configured via the--full
and--lines
option.- Use crossbeam's mpsc channels, resulting in faster execution of user's instructions.
- Fix issue where the daemon was shutting down so fast, there wasn't enough time to respond the client that it's actually shutting down.
Removed
- Removed the
enqueue
parameter from callback, as the callback is only run for finished tasks.