Skip to content
campadrenalin edited this page Sep 25, 2011 · 5 revisions

The main branch of the repository. That's not to say it's stable, although we try to keep it more or less day-to-day stable. Still, this is the workbench where work gets done, not the final packaging of a well-tested mature codebase. Given that, when we wanna really go out there in the deep end, we make branches with names that start out with "experimental-", which gives us room to innovate publicly without forcing the experiment on everyone in master.

A current experiment that does away with the era system in favor of node-level collapsing to keep memory from expanding continually.

Changes planned in this branch:

  • Address format is now a more space-efficient intermix of strings and ints.
  • Refactor tree.py to decruftify it from era madness and make it flattenable.
  • Rejigger BCP code to use the new system.

Challenges:

  • Now that we're working with a simpler way to manage memory, it's becoming less obscure that eras are simply problem deferment, and we need to figure out a real way to create transactional agreements to flatten nodes in all copies of the tree in the same state (let's call that "freezing").

Other Potential experiments

These don't have experimental branches yet, but maybe they will. Feel free to add cool projects here, whether you have time to do them or not.

  • Freezing
  • "Replace" nodes, a type of node where no matter the length, there is one child-attachable index, and the flat value of the whole is always equal to either the immutable string, or the first child if children are present. Using these recursively allows efficient storage and concurrency management for sections of text that should only have one value at a time.
  • BCP handshake to establish version and such. Or maybe feature support instead, which is probably nicer.

Clone this wiki locally