Skip to content

wbic16/hello-phext

Repository files navigation

hello-phext

This Rust project demonstrates how to work with Phext (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. :)

Hello, Phext

This project is an amalgamation of a Rust-powered Phext backend (phext.rs) and a Rocket-based API (main.rs). The functionality defined in the Phext backend provides all of the database/logic needed for hosting phext documents. The Rocket-based API is a wrapper around that functionality.

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

  1. Clone this repo
  2. Install Rust
  3. Run cargo build

Test

  1. Complete the build steps above
  2. Run cargo test

Run

  1. After building and testing the project, start the rocket server.
  2. Run cargo run

Replit

You can try this out or publish your own replit! See the .replit configuration file for details.

https://rust.phext.io/

API Routes (User Level)

  • Basic View: /api/v1/index/{world}/{coordinate}
    • world: the filename of the .phext archive to load
    • coordinate: the phext coordinate in URL form (z3.z2.z1;y3.y2.y1;x3.x2.x1)
  • Save Scroll: /api/v1/save/{world}/{coordinate}
    • Runs phext::replace for the given coordinate within "world.phext"
  • Normalize Phext: /api/v1/normalize/{world}
    • Accepts the posted scroll content as "world.phext" and normalizes the output
  • Contract Phext: /api/v1/contract/{world}
    • Accepts the posted scroll content as "world.phext" and adjusts all phext delimiters down by 1 dimension
  • Expand Phext: /api/v1/expand/{world}
    • Accepts the posted scroll content as "world.phext" and adjusts all phext delimiters up by 1 dimension
  • Liquid Visualizer: /api/v1/liquid/{world}/{coordinate}
    • Provides a tile grid of 9,801 scrolls in an 11x11 group of 9x9 scrolls
    • The background color is rendered from the rgb value computed by R=LB/99 G=SF/99 B=SR/99
    • The tile background color is rendered from the rgb value computed by R=CN/99 G=VM/99 B=BK/99

Low-Level (SQL-ish) Routes

Note: You can omit the coordinate part of the route to work in subspace directly.

  • Select: /api/v1/select/{world}/{coordinate}
    • fetches the scroll from "world.phext" at the given coordinate
  • Insert: /api/v1/insert/{world}/{coordinate}
    • Appends text at the given coordinates (expanding that scroll)
  • Update: /api/v1/update/{world}/{coordinate}
    • Replaces the content at the given coordinates (used by Save)
  • Delete: /api/v1/delete/{world}/{coordinate}
    • zeroizes the scroll at the given coordinates
    • zeroizes the entire contents of "world.phext" if no coordinate is given
  • Select Phext: /api/v1/select/{world}
    • fetches "world.phext"
  • Insert Phext: /api/v1/insert/{world}
    • replaces the given phext doc
  • Update Phext: /api/v1/update/{world}
    • Replaces the entire contents of the given phext doc
  • Delete Phext: /api/v1/delete/{world}
    • zeroizes the entire contents of "world.phext"
  • Dummy Route: /api/{world}/catchall
    • a dummy route for collecting methods not used elsewhere (yet)

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

API 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