Pijul, a distributed version control system emphasizing patches rather than commits, could emerge as a potential challenger to Git and Subversion.
Snapshot-based systems like Git or Mercurial are typically fast, but they're hard to use for more than simple operations. On the other hand, patch-based systems like Darcs are simple to use, but slow.
Pijul represents data in a more general manner than snapshot-based systems, allowing for a patch-based interface. "In short: [Git and Subversion's] main concept is commits, which are states of a project at a given point in time," Pijul co-developer Pierre-Etienne Meunier said. "Ours is patches, which changes to the state of a project."
Because it uses the memory-safe Rust systems programming language, Pijul also offers safety. Git doesn't offer mathematical guarantees on its operations, Meunier noted, and as a result, a commit could be different from what was expected.
"Take 'cherry-picking', for instance, the operation of selecting changes in another branch and applying them to your branch," said Meunier. "When you work with patches, you can just pull a patch from that branch without pulling any other. It doesn't mean that your code will automatically work, but at least you can do it."
Pijul also is "truly distributed," Meunier said. "No matter how co-authors behave, whether or not they plan and synchronize their branches carefully in advance, Pijul ... works mostly in the same way in all cases: by exchanging and applying patches."
While Pijul currently doesn't support binary files, plans call for it to do so soon. It also is not interoperable with other systems, but would gain this capability from work by the Darcs team. The system uses the concept of implicit branching, in which the state of a repository is the nonordered set of patches that were applied since its creation. Developers of Pijul currently are writing a hosting platform to demonstrate ease of use, especially compared to current tools.