Taskwarrior - Command line Task Management taskwarrior.org https://taskwarrior.org
Find a file
Dustin J. Mitchell 4ff63a7960
Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588)
TC 0.7.0 introduces a new `TaskData` type that maps to Taskwarrior's
`Task` type more cleanly. It also introduces the idea of gathering lists
of operations and "committing" them to a replica.

A consequence of this change is that TaskChampion no longer
automatically maintains dependency information, so Taskwarrior must do
so, with its `TDB2::dependency_sync` method. This method does a very
similar thing to what TaskChampion had been doing, so this is a shift of
responsibility but not a major performance difference.

Cxx is .. not great. It is missing a lot of useful things that make a
general-purpose bridge impractical:

 - no support for trait objects
 - no support for `Option<T>` (https://github.com/dtolnay/cxx/issues/87)
 - no support for `Vec<Box<..>>`

As a result, some creativity is required in writing the bridge, for
example returning a `Vec<OptionTaskData>` from `all_task_data` to allow
individual `TaskData` values to be "taken" from the vector.

That said, Cxx is the current state-of-the-art, and does a good job of
ensuring memory safety, at the cost of some slightly awkward APIs.

Subsequent work can remove the "TDB2" layer and allow commands and other
parts of Taskwarrior to interface directly with the `Replica`.
2024-08-11 02:06:00 +00:00
.cargo Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
.devcontainer add faketime and change to apt-get in devcontainer (#3543) 2024-07-07 23:04:09 +02:00
.github Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
cmake Use corrosion instead of CMakeRust (#3273) 2024-03-02 16:21:34 -05:00
doc Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
docker Change to out-of source build, Update build instructions (#3271) 2024-02-25 12:27:52 -05:00
misc add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
performance add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
scripts add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
src Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
test Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
.clang-format add clang-format initial version 2024-07-29 22:33:16 +02:00
.git-blame-ignore-revs add .git-blame-ignore-revs file to hide formating changes in git blame 2024-07-29 22:36:03 +02:00
.gitignore add .cache from clang-format to .gitignore 2024-07-29 22:33:17 +02:00
.gitmodules Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
.pre-commit-config.yaml [pre-commit.ci] pre-commit autoupdate (#3587) 2024-08-05 14:20:35 -04:00
AUTHORS docs: Add Jake C. among AUTHORS 2021-08-21 10:09:59 -04:00
Cargo.lock Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
Cargo.toml Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
ChangeLog Release 3.1.0 (#3574) 2024-08-04 16:51:11 +00:00
cmake.h.in add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
CMakeLists.txt Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588) 2024-08-11 02:06:00 +00:00
commit.h.in Code Cleanup 2013-04-07 23:50:51 -04:00
COPYING meta: Adjust copyright headers 2021-09-05 12:02:07 -04:00
DEVELOPER.md Fixing a link in DEVELOPER.md. (#3159) 2023-08-20 22:40:40 -04:00
docker-compose.yml Update fedora 38 docker container to fedora 40 (#3396) 2024-04-24 08:31:36 -04:00
index.html Create index.html 2018-11-21 12:14:15 -05:00
INSTALL Sync against taskchampion-sync-server (#3118) 2023-07-08 10:27:33 -04:00
LICENSE add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
README.md update branch in coverage status badge (#3515) 2024-06-24 17:31:53 +02:00


GitHub Actions build status Coverage Status Release Release date GitHub Sponsors

Taskwarrior

OS-X downloads Github downloads Linux downloads

Taskwarrior is a command line task list management utility with a multitude of features, developed as a portable open source project with an active and quite vast ecosystem of tools, hooks and extensions.

Install

Arch Debian Fedora Homebrew Ubuntu

Taskwarrior is packaged on a wide range of Linux/Unix systems, Mac OS and Windows. Check out the latest available packages in repositories of your OS distribution of choice on Repology.

Alternatively, you can build Taskwarrior from source.

Documentation

The online documentation, downloads, news and more are available on our website, taskwarrior.org.

Community

Discord Github discussions Reddit

Taskwarrior has a lively community on many places on the internet.

Best place to ask questions is our discussions forum on Github. For other support options, take a look at taskwarrior.org/support

For code contributions, please use pull requests. See Contributing to Taskwarrior for more details.

Contributing

Contributors Milestone progress Good first issus

Your contributions are especially welcome. Whether it comes in the form of code patches, ideas, discussion, bug reports, encouragement or criticism, your input is needed. See further development documentation in doc/devel.

Sponsoring

GitHub Sponsors

Taskwarrior is a result of work of mostly small group of volunteers, and has been in development since 2006.

If you are a happy Taskwarrior user, please consider sponsoring us through Github Sponsors.

Every sponsorship matters, as it directly increases the number of hours core developers can contribute to the project and makes the project more sustainable.

License

Taskwarrior is released under the MIT license. For details check the LICENSE file.