HackerTrans
TopNewTrendsCommentsPastAskShowJobs

burdiyan

no profile record

Submissions

Buck2: Facebook's Build System Successor of Buck

github.com
2 points·by burdiyan·4 lata temu·0 comments

comments

burdiyan
·4 lata temu·discuss
OK, I got advised that it’s probably ChatGPT-generated, or anyhow made on purpose :) Still funny though.
burdiyan
·4 lata temu·discuss
Gosh, I laughed pretty hard, and I'm sorry :) Govno means shit in Russian (my mother tongue), and some other slavic languages.
burdiyan
·4 lata temu·discuss
Yeah, I've seen this project. Looks pretty interesting!

Although probably the most challenging data type to get right would be RGA, especially for text. Not to mention rich text :)

Sets and registers in the end are pretty straight-forward as soon as one understand the idea of causality, partial order, and arbitrary total order. In terms of the implementation there's also not a lot to optimize I believe, and at worst you could simply store a counter along with the value.

But RGA is a whole different story. Especially in the context of SQLite, which doesn't have default page compression, or prefix compression for keys.

Still, one probably could put together something similar to how Yjs deals with that, and store chunks of data as rows in a table.
burdiyan
·4 lata temu·discuss
Which parts of SQLite have range trees? How would you see a CRDT implemented using SQLite? I've been thinking a lot about fitting SQLite into the world of CRDT, but haven't come up with a good-enough generalized approach.
burdiyan
·5 lat temu·discuss
Thanks! Will look take a look.
burdiyan
·5 lat temu·discuss
Nice! I was thinking about something like that too. E.g. building symlinks for all the deps into a local directory and use it as PYTHONPATH. I tried it with your example on GitHub and it worked. And then if all the developers are using something like direnv[1] this PYTHONPATH variable could easily be set for everyone.

How do you manage dependencies for the fine-grained Bazel targets (like py_library)? Do you write them manually or using some language-specific tools like Gazelle? If you do use the tool, do you have anything in place to automate it?

Couple years ago I had a pretty bad experience with people complaining about having to execute Gazelle manually. In my ideal world view I'd want to add an import statement in code and just run `bazel build`. So I ended having a wrapper that would run Gazelle before running Bazel all the time, but it slowed thing down quite a bit, because it was doing a lot of unnecessary work.

[1]: https://direnv.net
burdiyan
·5 lat temu·discuss
This sounds like a nice setup. I've been using Bazel for some years, but it's always been a struggle to make other people use it :) For some quite understandable reasons. I also really would like to use one tool, either Nix or Bazel I don't care, but unfortunately, even though Nix is positioning itself as a build system, it really doesn't work very well to offer fast feedback loop and incrementality necessary in development.

How do you make your IDE happy about Bazel managing your external dependencies? I mean, autocomplete and stuff like that.