Wilfred Hughes
bef93e9626
Roll version
2022-03-31 09:47:58 +07:00
Wilfred Hughes
d36224229e
Downgrade rpds to last Rust 2018 version
...
This will allow difftastic to build on earlier rust versions, and is
also a ~2% instruction count reduction on slow_before.rs.
2022-03-28 22:23:42 +07:00
Wilfred Hughes
bacefe5a58
Roll version
2022-03-26 16:02:51 +07:00
Wilfred Hughes
9435798c9c
Next release will be 0.24
2022-03-19 10:27:04 +07:00
Wilfred Hughes
06ffa0267a
Next release will be a patch release with a single crash fix
2022-03-19 10:24:30 +07:00
Wilfred Hughes
b5187d98d0
Roll version
2022-03-17 22:22:42 +07:00
Wilfred Hughes
dad463daf5
Use Myers' diff everywhere
...
The diff crate has a great ergonomic API, but it doesn't implement
Myers' algorithm and performs badly on large inputs.
https://github.com/utkarshkukreti/diff.rs/issues/1
Now that we have a wrapper wu_diff that provides a similar API,
replace the remaining call sites to diff::slice(). These are
relatively cold, so this is a small performance improvement (1%
instruction reduction).
2022-03-12 12:29:34 +07:00
Wilfred Hughes
afb1b369f4
Switch to wu-diff for textual diffing
...
In #153 a user reported difftastic never terminated on a 140,000
file. This was due to the diff crate using a very large amount of time
and memory.
The diff crate does not use Myers' algorithm, which has a
divide-and-conquer approach using snakes:
https://blog.jcoglan.com/2017/03/22/myers-diff-in-linear-space-theory/
wu-diff does implement Myer's algorithm and performs much better on
these large files.
2022-03-10 23:12:25 +07:00
Wilfred Hughes
a3a2bfb317
Roll version
2022-03-10 00:13:26 +07:00
Wilfred Hughes
00c7d73bdf
Version bump tree-sitter
2022-03-05 11:03:28 +07:00
Wilfred Hughes
2640f78f2f
Version bump radix-heap
2022-03-05 10:59:50 +07:00
Wilfred Hughes
4b674d4b8e
Use rpds rather than im for persistent data types
...
rpds is actively maintained and it's even a significant performance
win in my testing (40% time reduction on slow_before.rs).
2022-03-04 21:47:05 +07:00
Wilfred Hughes
cb0f1f3fe5
Roll version
2022-02-28 09:26:26 +07:00
Wilfred Hughes
d8e8e12bf8
Roll version
2022-02-20 16:50:05 +07:00
Wilfred Hughes
82890923cd
Track entering/leaving parents explicitly
...
This produces significantly better diffs, and fixes some cases that
were outright wrong before.
Fixes #30
2022-02-20 12:43:52 +07:00
Wilfred Hughes
3c1c5649f4
Ensure --color is still respected
...
This was broken in the port to owo_colors. owo_colors does not have a
global override: the override function only affects if_supports_color.
2022-02-13 16:54:57 +07:00
Wilfred Hughes
6004855206
Port to owo_colors
...
This library is faster and actively maintained.
Closes #107
2022-02-13 15:13:40 +07:00
Wilfred Hughes
d9ec560f0d
Roll version
2022-02-07 23:14:55 +07:00
Wilfred Hughes
2aaeb0e216
Update crossbeam-utils
...
We were previously on 0.8.5, which has been yanked.
2022-02-07 23:11:30 +07:00
Wilfred Hughes
e2832dabb3
Set a maximum size on syntactic diffing, and use line diffing otherwise
...
Fixes #82
2022-02-06 16:38:55 +07:00
Wilfred Hughes
0eba3ecabe
Update to the latest tree-sitter version
...
This is also a minor performance improvement (e.g. saves 1.3% time on
typing_old/new.ml or 3% on elisp_before/after.el).
2022-01-31 22:37:05 +07:00
Wilfred Hughes
4d3fac20d9
Next release will be 0.19
2022-01-30 22:58:22 +07:00
Wilfred Hughes
8f6b269492
Tag a 0.18.1 release
2022-01-30 22:56:19 +07:00
Wilfred Hughes
409f7aae75
Roll version
2022-01-30 18:03:45 +07:00
Wilfred Hughes
5a2e0379aa
Update to clap 3
2022-01-29 11:01:36 +07:00
Wilfred Hughes
69dbad35ad
Roll version
2022-01-25 22:32:18 +07:00
Wilfred Hughes
a2dc0b5109
Roll version
2022-01-22 19:03:58 +07:00
Wilfred Hughes
b270156e48
Update tree-sitter version
...
This is a small perf win (30ms runtime on my machine) due to faster
tree_sitter::Query creation.
2022-01-15 18:13:53 +07:00
Wilfred Hughes
a11e3081b2
Roll version
2022-01-06 01:00:48 +07:00
Wilfred Hughes
667a42d57b
Downgrade to tree-sitter 0.20.0
...
0.20.1 has a performance regression, which seems to particularly
affect Elixir parsing:
https://github.com/tree-sitter/tree-sitter/issues/1510
2021-12-29 14:59:12 +07:00
Wilfred Hughes
0cf68ef847
Roll version
2021-12-27 18:28:15 +07:00
Wilfred Hughes
7cc62a3835
Update Cargo.lock for latest dependencies
2021-12-27 18:02:26 +07:00
Wilfred Hughes
cb900c3463
Revert to term_size
...
Git invokes difftastic and then pipes stdout to less, but stderr still
goes to the terminal. term_size queries both stdout and stderr, so it
can still find the terminal width in this situation.
Previously, we'd always use a width of 80 when invoked by git.
terminal_size discussion:
https://github.com/eminence/terminal-size/issues/23
term_size does claim to support Windows, and #71 was not fixed by
changing libraries, so this seems reasonable.
2021-12-19 12:48:52 +07:00
Wilfred Hughes
6f1baae23e
Prefer terminal_width crate so we support more platforms
...
term_width is unmaintained and does not support Windows.
Fixes #71
2021-12-07 23:24:13 +07:00
Wilfred Hughes
4948f59855
Roll version
2021-12-04 23:56:42 +07:00
Wilfred Hughes
fa17058f80
Bump libc version
2021-11-24 23:55:16 +07:00
Wilfred Hughes
7d1bf1e5f4
Update to latest tree-sitter
2021-11-24 23:29:41 +07:00
Wilfred Hughes
7fdbaff6fe
Update build dependencies
2021-11-19 23:29:17 +07:00
Wilfred Hughes
7f6b8174d5
Update pretty_assertions and use consistently
2021-11-19 23:27:41 +07:00
Wilfred Hughes
9079567695
Update radix-heap
...
Upstream has had some optimisations and it saves 7% in instructions
executed for slow_before/slow_after.rs according to `perf stat`.
2021-11-19 23:20:37 +07:00
Wilfred Hughes
e8f45d91b8
Roll version
2021-11-19 00:49:14 +07:00
Wilfred Hughes
86724658c0
Update radix-heap version
...
This avoids us depending on an old version of ordered_float, which has
a security advisory: https://rustsec.org/advisories/RUSTSEC-2020-0082
It also slightly reduces the number of dependencies of difftastic.
2021-10-28 00:51:37 +07:00
Wilfred Hughes
aa65b20665
Bump dependencies
2021-10-23 15:43:18 +07:00
Wilfred Hughes
44b025fdc5
Roll version
2021-10-18 22:42:17 +07:00
Wilfred Hughes
c92007e5b3
Remove criterion
...
I've found the numbers pretty noisy on my laptop, and `perf stat` is a
nice way of testing full size files for performance.
2021-10-02 22:00:12 +07:00
Wilfred Hughes
08c68de229
Run `cargo upgrade`
2021-09-26 23:09:20 +07:00
Wilfred Hughes
62b030195e
Upgrade to latest treesitter
2021-09-26 23:05:09 +07:00
Wilfred Hughes
ec37c5bef1
Add full Mercurial extdiff support
2021-09-26 21:23:22 +07:00
Wilfred Hughes
48efe9d7c4
Roll version
2021-09-24 23:40:07 +07:00
Wilfred Hughes
5991efdcc7
Build tree-sitter parsers in parallel
2021-09-22 22:02:07 +07:00
Wilfred Hughes
f1c59dcfba
Add a basic benchmark for the parser
2021-09-14 22:24:25 +07:00
Wilfred Hughes
31572a83a9
Roll version following release
2021-09-14 00:34:38 +07:00
Wilfred Hughes
ea3cb7737a
Use a radix heap to speed up Dijkstra implementation
2021-09-12 22:04:15 +07:00
Wilfred Hughes
6222987872
Move to mimalloc
...
This produces a small (~10% less runtime) improvement on larger files,
as difftastic spends a lot of time allocating.
2021-09-12 20:14:44 +07:00
Wilfred Hughes
0f042fb160
Roll version
2021-09-05 11:23:00 +07:00
Wilfred Hughes
86a330c44e
Add debug logging and log stats on shortest path found
2021-09-04 10:46:51 +07:00
Wilfred Hughes
cc93976969
Handle SIGPIPE
...
Based on the sample code in
https://stackoverflow.com/a/65760807/509706
Closes #28
2021-08-29 16:50:05 +07:00
Wilfred Hughes
763b9d2d17
Roll version
2021-08-24 01:07:07 +07:00
Wilfred Hughes
001a36a7e3
Define regexp parsers in code rather than TOML
2021-08-21 19:13:01 +07:00
Wilfred Hughes
c80ce0d024
Use vendored tree-sitter-rust
2021-08-15 16:50:43 +07:00
Wilfred Hughes
e7a6c3b11e
Initial tree-sitter prototype
2021-08-15 16:16:48 +07:00
Wilfred Hughes
3ae0b7df84
Allow RHS to be arbitrarily long in a pager
...
If stdout is not a TTY, assume it's a pager and don't truncate the
RHS.
2021-08-08 17:35:31 +07:00
Wilfred Hughes
6e321d070a
Bump dependencies to latest minor versions
2021-07-28 00:06:58 +07:00
Wilfred Hughes
da63704675
Roll version
2021-07-28 00:04:47 +07:00
Wilfred Hughes
6d5704aed9
Only compile the newline regexp once
2021-07-25 12:56:02 +07:00
Wilfred Hughes
928584676a
Only highlight individual comment words for comments that are similar
2021-07-24 17:01:30 +07:00
Wilfred Hughes
b81312e88b
Roll version
2021-07-22 00:09:13 +07:00
Wilfred Hughes
aa87085b95
Remove unused dependency
2021-07-17 15:35:43 +07:00
Wilfred Hughes
4c79267602
Roll version
2021-07-13 23:27:17 +07:00
Wilfred Hughes
9e821956a5
Roll version
2021-07-07 22:25:03 +07:00
Wilfred Hughes
64bfc73a6c
Roll version for next release
2021-07-04 11:42:59 +07:00
Wilfred Hughes
cf2b5d762a
Bump version for initial release
2021-07-03 23:09:11 +07:00
Wilfred Hughes
a38b20d5a6
Prefer rustc-hash for faster hashing
...
This is hot when profiling.
2021-07-03 15:42:23 +07:00
Wilfred Hughes
3b033c1438
Embed syntax.toml in binary
2021-06-20 16:32:22 +07:00
Wilfred Hughes
48c31ec0ec
Read a language block from syntax.toml
2021-06-01 23:57:08 +07:00
Wilfred Hughes
cb75585679
Basic .toml language description
2021-05-31 23:10:49 +07:00
Wilfred Hughes
ca1aca1021
Use arena allocation for Syntax
2021-05-23 17:39:54 +07:00
Wilfred Hughes
f13ee634ad
Bump dependencies
2021-03-07 13:02:31 +07:00
Wilfred Hughes
26a3ee36a6
Use pretty assertions
2019-11-18 12:03:33 +07:00
Wilfred Hughes
635b0380ab
Update dependencies
2019-11-18 11:44:17 +07:00
Wilfred Hughes
c7b1281a91
Update for Rust 2018
2019-11-18 11:38:14 +07:00
dependabot[bot]
5a9a982170
Bump regex from 1.1.0 to 1.1.2
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.1.0...1.1.2 )
Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-03-03 22:49:11 +07:00
dependabot[bot]
5a92de425d
Bump colored from 1.6.1 to 1.7.0
...
Bumps [colored](https://github.com/mackwic/colored ) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/mackwic/colored/releases )
- [Changelog](https://github.com/mackwic/colored/blob/master/CHANGELOG.md )
- [Commits](https://github.com/mackwic/colored/compare/v1.6.1...v1.7.0 )
Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-27 20:39:57 +07:00
Wilfred Hughes
71bc6a53c4
Pad to the terminal width if the files are narrower
2018-12-31 17:53:07 +07:00
Wilfred Hughes
958033924a
Initial proof of concept
2018-12-29 15:29:42 +07:00