cargo pueue 1.0.0

latest releases: 3.4.0, 3.3.3, 3.3.2...
2 years ago

[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 for ios-aarch64.
  • Option in config file to use the --in-place flag on restart by default.
  • --failed-in-group [group_name] for restart. 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 and stdout 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, on pueue clean or pueue remove of the last tasks in a queue.
  • Show the date in pueue status for the start and end 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 or pueue wait -g some_group and there're no tasks in the group.
  • Stabilized internal daemon shutdown and restoration logic.
  • Rename Index to Id in pueue status to free up screen space.
  • Remove Exitcode column in pueue status and include exitcode into Failed 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 the TaskStatus 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.

Don't miss a new pueue release

NewReleases is sending notifications on new releases.