libphext
This Rust project provides the standard Phext implementation (11-dimensional plain hypertext). For more information about the phext format, head over to https://phext.io.
Elevator Pitch
Phext is hierarchical digital memory. It enables seamless knowledge transfer between humans and computers. Let's learn how to think at planet-scale. :)
Zero Dependencies
Phext is just 11-dimensional text. As such, you only need phext.rs and the standard libraries to work with it.* This tiny dependency gives you hierarchical superpowers. Use them wisely!
Note: Although we do depend upon xxh3 for checksum content hashes.
Phext Motivation
In the 1980s, computers could write 25 KB/sec to a floppy disk. In the 2020s, it became possible to write 2 GB/sec to an SSD. This changed the definition of a "small" file. Unfortunately, most of our file abstractions (especially on Windows) have not scaled to take advantage of these performance gains. For the most part, this isn't much of a problem: humans are still rate-limited at 300 bps using keyboards. At some point in the next 25 years, however, we will have high-bandwidth brain interconnects - at which point we will need a high-bandwidth multi-dimensional text format: phext!
The introduction of Large Language Models (LLMs) has accelerated our transition to this future. You can use phext to interact with agents and groups of humans at scale - think of visualizing 9 billion computer screens at once. Phext is like being given a coordinate system of coordinate systems, allowing you to walk the latent space of any problem space efficiently.
Phext Coordinate Formats
- Canonical Format: Orders coordinates to avoid the need for labels
- example: z3.z2.z1/y3.y2.y1/x3.x2.x1
- z3 - Library (LB)
- z2 - Shelf (SF)
- z1 - Series (SR)
- y3 - Collection (CN)
- y2 - Volume (VM)
- y1 - Book (BK)
- x3 - Chapter (CH)
- x2 - Section (SN)
- x1 - Scroll (SC)
- URL Format: the same as the canonical format, but with semi-colons instead of slashes
- this allows us to use coordinates in routes
- example: z3.z2.z1;y3.y2.y1;x3.x2.x1
Build
- Clone this repo
- Install Rust
- Run
cargo build
Test
- Complete the build steps above
- Run
cargo test
Run
- After building and testing the project, start the rocket server.
- Run
cargo run
Phext Basics
- test_more_cowbell: Ensures that you've got more cowbell!
- line_break: Proves that we're using ASCII line breaks
- coordinate_parsing: Verifies that string -> coordinate -> string produces the same result
- scrolls: Verifies that SCROLL_BREAK reliably splits 3 scrolls
- sections: Verifies that SECTION_BREAK reliably splits 3 sections
- chapters: Verifies that CHAPTER_BREAK reliably splits 3 chapters
- books: Verifies that BOOK_BREAK reliably splits 3 books
- volumes: Verifies that VOLUME_BREAK reliably splits 3 volumes
- collections: Verifies that COLLECTION_BREAK reliably splits 3 collections
- series: Verifies that SERIES_BREAK reliably splits 3 series
- shelves: Verifies that SHELF_BREAK reliably splits 3 shelves
- libraries: Verifies that LIBRARY_BREAK reliably splits 3 libraries
- coordinates_invalid: tests for invalid coordinate detection
- coordinates_valid: ensures that a realistic coordinate is valid
- realistic_parse: Verifies that a coordinate with many delimiters parses correctly
- dead_reckoning: Verifies that we can accurately calculate coordinates on existing phext documents
Tests
- next_scroll: verifies that we can tokenize subspace by scroll
- phokenize: verifies that we can build subspace phokens (phext tokens)
- test_url_encoding: tests for alternate url format with semicolons
- coordinate_based_insert: Verifies that random insertion by phext coordinate works
- coordinate_based_replace: Verifies that random replacement by phext coordinate works
- coordinate_based_remove: Verifies that random scroll removal by phext coordinate works
- range_based_replace: Verifies that a range of phext coordinates can be used to replace text
- expand: verifies that delimiters can be grown larger by 1 dimension
- contract: verifies that delimiters can be shrunk by 1 dimension
- merge: verifies that two phext documents can be zipper-merged (intersection)
- subtract: verifies that we can prune all of the coordinates from a second phext document
- normalize: verifies that empty scrolls are pruned from the given phext document