I just wanted to give you a quick heads-up about things I’m currently doing in Pijul:
The Nest was previously using my own hack to do HTTP, it’s now using Tokio. I originally wrote it because Hyper had no Tokio version, and I felt I didn’t know enough about Tokio to rewrite Hyper. Another goal was to try and avoid all the complexity (and memory allocations) of Hyper, which was forced to allocate lots of stuff because it was answering each request using a different thread.
That experiment was interesting in itself, and makes we want to contribute back to Hyper some of the things I learnt along the way.
Meanwhile, my current testing version of the Nest uses only Hyper for everything. This might cause some problems in the next few days with external services (such as OAuth and emails).
@laumann and @lthms have found a number of issues with conflicts. My initial intuition was that they were caused by a problem in the representation of zombie lines (lines that some patch authors consider alive, while others have deleted them).
I’ve just checked the theory, and that intuition was wrong.
However, looking at the code of output, apply and unrecord, I’ve found (and hopefully) a number of other problems:
- output (libpijul/src/graph.rs) was not outputting zombie lines correctly, due to a stupid mistake. This is fixed now.
- unrecord was not working correctly on zombie lines. Some lines were still marked as zombies.
- ERROR: dependency not found was probably preventing some patch applications. The wrong test for that was a leftover from a refactoring. Fixed too!
Even after these fixes, I would not expect existing repositories to work completely. Repositories on the Nest will be refreshed today (i.e. entirely cloned). A way to clean local repositories is to clone them (and obviously work on the fresh clone). Sorry for the inconvenience.