<- Back
Comments (30)
- eblansheyIt's cool seeing all the engineering that goes into optimizing performance of diffs. I'm working on a FreeCAD workbench that generates diffs on CAD model trees[0], and although my bottlenecks are a bit different, I can still implement some of your optimizations down the line if needed (such as deferred syntax highlighting).My main bottleneck is that I do a complete diff on all open + changed documents in the repository up front, because due to how document properties are stored, I won't know if the file has meaningful changes until I compute the full diff (FreeCAD may save the document, but not have anything meaningful change.)[0] https://github.com/eblanshey/HistoryWorkbench
- darkamaulWhat an interesting article. I did not assume I would read it until the end when I opened it, but the writing was super clear and easy to follow.At the end, I admire the craft and patience to try to solve code diff rendering, and wish the folks at GitHub could put the same effort to improve their platform.On a side note, I feel that we’re going to see more and more of this type of agentic usage, in well defined sub tasks, and the ability of a model to try many possibilities is a huge gift here.
- cipherselfFor anyone else who's suffering, paste this in the console in devtools: document.getElementsByTagName('main')[0].style.margin = '0 auto';
- akdor1154I disagree with the theory that scrolling frame rate doesn't need to be smooth for scrolling to feel smooth.On mobile it kinda does. Scrolling diffs on mobile just kinda feels crap.I have been spoiled by years of engineer hours spent getting scrolling to be 60- or even 120Hz smooth to match my finger, and diffs just.. isn't.I know this is frustrating to hear, and that this is technically compounded by mobile probably having the lowest device performance to be playing with too, but.. There you go.
- amadeusA bit of a technical deep dive into how we built CodeView, a review surface that can handle rendering diffs of immense size, all in a browser.
- joostersI was hoping that this would talk more about the logic behind generating a diff, rather than the optimisations involved in rendering the text.IMO (as someone who doesn't have to deal with the actual rendering) it would go a bit deeper into talking about deciding how to show what has changed. There's a lot of improvements that could be made there. e.g. "whitespace has changed here" so there's no real code changes involved.Or "this big list of imports has changed, and code formatting has line-wrapped the list into different lines" - gitlab for example copes poorly with this. I'd love to just see a clean diff that highlights the additional import, and not just ten lines of changes caused by adding one line to a big list of imported symbols/functions.
- shaokindSemi-related: have you considered making DiffsHub a browser extension, so you can serve private diffs as well?(I say this, having done a vibe-port of the code to a browser extension, so the underlying concept works.)
- tomtom1337It is SO NICE to see people working on making fast, nice-to-use tools. It's a lovely experience to use diffshub. Thank you for creating it, and than you for the great write-up! (I made it "that far" )
- charcircuitI feel like virtualization is not the right way to handle things. It adds so much complexity and makes the user experience buggy due to breaking optimizations and features of browsers.Computers are very powerful these days and have a done of resources that they can use. We should be able to handle large diffs without any crazy tricks.
- cvinceWhatever happened to all the pretext hype? I feel like that would be perfect for rendering huge diffs.
- IshKebabVery impressive! I doubt Github or Gitlab would ever do something as good as this but maybe there's a chance we could get it in Forgejo?
- brapI don’t have much to say except I appreciate the ASCII art.
- nerdypepperrendering massive diffs is cool but ultimately a gimmick. in what scenario are you actually reading a 500k line diff?something i'd really want to see from forges is alternate diff techniques: like AST diffing.
- logdahlMaybe an intended effect, but the header ascii art is suspiciously misaligned... :^)
- anonundefined