Wilfred / difftastic

a structural diff that understands syntax 🟥🟩
https://difftastic.wilfred.me.uk/
MIT License
20.54k stars 331 forks source link

Perl parser should be switched out #667

Open rabbiveesh opened 6 months ago

rabbiveesh commented 6 months ago

Thanks for reporting a bug! Please include all of the following:

The upstream perl parser is unmaintained and very bad. I maintain a much better parser, https://github.com/tree-sitter-perl/tree-sitter-perl

I would love to do whatever work to get this switched, just I don't know what the steps are to update a parser in this repo.

Wilfred commented 4 months ago

I disagree: the parser I'm currently using is actively maintained and the maintainer has been helpful when I've sent build fixes. I'm not necessarily opposed to changing parsers, but how is yours better?

ferki commented 4 months ago

While I'm not qualified to compare the available tree-sitter-perl implementations on technological terms, I'd like to add a "staffing" and "activity" detail.

tree-sitter-perl/tree-sitter-perl gets updated by a Perl core maintainer, including support for new features added to Perl itself in every release each year, and that person is also the author of Text::Treesitter, the "Perl bindings for tree-sitter". As a long-term Perl user I find this a strong indicator of high quality solution with minimal-to-no lag from Perl capabilities.

Even then, I was only aware of the above, and I'm somewhat surprised there are multiple (competing?) tree-sitter-perl implementations, and I would also like to learn about the differences between them.

rabbiveesh commented 4 months ago

I can't really speak about the other parser; I had begun to work with him several years ago and found that at that time there were fundamentally wrong decisions made - he passed fat commas as always part of a pair, he had explicit semicolon nodes.

I'm not sure if the other parser supports them, but here's a list of some of the crazier (in terms of how ppl perceive these to be difficult to parse; most are fairly common) stuff mine supports - completely correct autoquoting (fat commas and minus and hash-key), Unicode identifiers in all places (including heredocs), new perl syntax (try/catch, class syntax), insane quoting constructs ( proper handling of q = words = vs q => words " and q#this is a quote#, three part quotes with comments [that's a thing!], soon will implement Unicode paired delimiters which is being marked stable), space sensitivity for interpolated variables (bc "$ thing" still interpolates!)

There are clearly bugs in the other one, I just received a strange bug report about a fairly simple regex (on mobile, can't get the issue number) that my parser did fine with.

On Wed, May 8, 2024, 00:15 Ferenc Erki @.***> wrote:

While I'm not qualified to compare the available tree-sitter-perl implementations on technological terms, I'd like to add a "staffing" and "activity" detail.

tree-sitter-perl/tree-sitter-perl https://github.com/tree-sitter-perl/tree-sitter-perl gets updated by a Perl core maintainer, including support for new features added to Perl itself in every release each year, and that person is also the author of Text::Treesitter https://metacpan.org/pod/Text::Treesitter, the "Perl bindings for tree-sitter". As a long-term Perl user I find this a strong indicator of high quality solution with minimal-to-no lag from Perl capabilities.

Even then, I was only aware of the above, and I'm somewhat surprised there are multiple (competing?) tree-sitter-perl implementations, and I would also like to learn about the differences between them.

— Reply to this email directly, view it on GitHub https://github.com/Wilfred/difftastic/issues/667#issuecomment-2099322124, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFURPKS3256A6PMCVYAFARTZBE76XAVCNFSM6AAAAABFCJJSH2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJZGMZDEMJSGQ . You are receiving this because you authored the thread.Message ID: @.***>