3个版本 (破坏性)

0.3.0 2024年8月13日
0.2.5 2024年8月12日
0.0.6 2024年2月5日

235解析器实现

Download history • Rust 包仓库 246/week @ 2024-08-12 • Rust 包仓库

每月246次下载

MIT许可证

125KB
934

hello-phext

这是一个Rust项目,演示了如何与Phext(11维平面超文本文档)一起工作。有关phext格式的更多信息,请访问https://phext.io

简要介绍

Phext是分层数字记忆。它使人类和计算机之间的无缝知识传递成为可能。让我们一起学习如何在地球规模上思考。 :)

你好,Phext

该项目是将Rust驱动的Phext后端(phext.rs)和基于Rocket的API(main.rs)结合在一起的产物。Phext后端中定义的功能提供了托管phext文档所需的全部数据库/逻辑。基于Rocket的API是这个功能的包装器。

Phext动机

在20世纪80年代,计算机可以以每秒25KB的速度写入软盘。在2020年代,我们可以以每秒2GB的速度写入SSD。这改变了“小”文件的定义。不幸的是,我们的大部分文件抽象(特别是在Windows上)并没有扩展到利用这些性能提升。从本质上讲,这并不是一个大问题:人类使用键盘的速度仍然受到300 bps的限制。然而,在未来的25年内,我们将在某个时刻拥有高带宽的大脑互连 - 到那时,我们将需要一个高带宽的多维文本格式:phext!

大型语言模型(LLMs)的引入加速了我们对这一未来的过渡。你可以使用phext与大规模的代理和人类群体进行交互 - 想象一下一次可视化90亿台计算机屏幕。Phext就像被赋予了一个坐标系统,允许你高效地遍历任何问题空间的潜在空间。

Phext坐标格式

  • 规范格式:对坐标进行排序,以避免需要标签
    • 示例:z3.z2.z1/y3.y2.y1/x3.x2.x1
    • z3 - 图书馆(LB)
    • z2 - 书架(SF)
    • z1 - 系列(SR)
    • y3 - 收藏(CN)
    • y2 - 体积(VM)
    • y1 - 书(BK)
    • x3 - 章节CH
    • x2 - 部分(SN)
    • x1 - 卷轴(SC)
  • URL格式:与规范格式相同,但用分号代替斜杠
    • 这允许我们在路由中使用坐标
    • 示例:z3.z2.z1;y3.y2.y1;x3.x2.x1

构建

  1. 克隆此仓库
  2. 安装Rust
  3. 运行 cargo build

测试

  1. 完成上述构建步骤
  2. 运行 cargo test

运行

  1. 构建和测试项目后,启动火箭服务器。
  2. 运行 cargo run

API 路由(用户级别)

  • 基本视图: /api/v1/index/{world}/{coordinate}
    • world:要加载的 .phext 归档的文件名
    • coordinate:URL 形式的 phext 坐标(z3.z2.z1;y3.y2.y1;x3.x2.x1)
  • 保存卷轴: /api/v1/save/{world}/{coordinate}
    • 对于“world.phext”中的给定坐标运行 phext::replace
  • 标准化 Phext: /api/v1/normalize/{world}
    • 接受作为“world.phext”发布的卷轴内容并标准化输出
  • 收缩 Phext: /api/v1/contract/{world}
    • 接受作为“world.phext”发布的卷轴内容并将所有 phext 定界符向下调整 1 维度
  • 扩展 Phext: /api/v1/expand/{world}
    • 接受作为“world.phext”发布的卷轴内容并将所有 phext 定界符向上调整 1 维度
  • 液体可视化器: /api/v1/liquid/{world}/{coordinate}
    • 提供 11x11 组 9x9 卷轴的 9,801 个卷轴的瓦片网格
    • 背景颜色由 R=LB/99 G=SF/99 B=SR/99 计算的 rgb 值渲染
    • 瓦片背景颜色由 R=CN/99 G=VM/99 B=BK/99 计算的 rgb 值渲染

低级(类似 SQL)路由

注意:您可以直接在子空间中工作,可以省略路由中的坐标部分。

  • 选择: /api/v1/select/{world}/{coordinate}
    • 从给定坐标处的“world.phext”中获取卷轴
  • 插入: /api/v1/insert/{world}/{coordinate}
    • 在给定坐标处附加文本(扩展该卷轴)
  • 更新: /api/v1/update/{world}/{coordinate}
    • 替换给定坐标处的内容(用于保存)
  • 删除: /api/v1/delete/{world}/{coordinate}
    • 将给定坐标处的卷轴置零
    • 如果没有给定坐标,则将“world.phext”的全部内容置零
  • 选择 Phext: /api/v1/select/{world}
    • 获取“world.phext”
  • 插入 Phext: /api/v1/insert/{world}
    • 替换给定的 phext 文档
  • 更新 Phext: /api/v1/update/{world}
    • 替换给定 phext 文档的全部内容
  • 删除 Phext: /api/v1/delete/{world}
    • 将“world.phext”的全部内容置零
  • 虚拟路由: /api/{world}/catchall
    • 一个收集未在其他地方使用(尚)的方法的虚拟路由

Phext 基础

  • test_more_cowbell:确保你有多一些的牛铃!
  • line_break:证明我们正在使用 ASCII 换行符
  • coordinate_parsing:验证字符串 -> 坐标 -> 字符串产生相同的结果
  • scrolls:验证 SCROLL_BREAK 可靠地分割 3 个卷轴
  • sections:验证 SECTION_BREAK 可靠地分割 3 个部分
  • chapters:验证 CHAPTER_BREAK 可靠地分割 3 个章节
  • books:验证 BOOK_BREAK 可靠地分割 3 本书
  • volumes:验证 VOLUME_BREAK 可靠地分割 3 个卷
  • collections:验证 COLLECTION_BREAK 可靠地分割 3 个集合
  • series:验证 SERIES_BREAK 可靠地分割 3 个系列
  • shelves:验证 SHELF_BREAK 可靠地分割 3 个书架
  • libraries:验证 LIBRARY_BREAK 可靠地分割 3 个图书馆
  • coordinates_invalid:测试无效坐标检测
  • coordinates_valid:确保一个现实的坐标是有效的
  • realistic_parse:验证具有许多分隔符的坐标正确解析
  • 航位推算:验证我们能否准确地在现有phext文档上计算坐标

API 测试

  • next_scroll:验证我们能否通过滚动来标记子空间
  • phokenize:验证我们能否构建子空间phokens(phext标记)
  • test_url_encoding:测试分号格式的备用URL格式
  • coordinate_based_insert:验证通过phext坐标随机插入是否工作
  • coordinate_based_replace:验证通过phext坐标随机替换是否工作
  • coordinate_based_remove:验证通过phext坐标随机滚动删除是否工作
  • range_based_replace:验证可以使用phext坐标范围来替换文本
  • expand:验证通过增加1维可以扩展分隔符
  • contract:验证通过减少1维可以缩小分隔符
  • merge:验证两个phext文档可以执行zipper合并(交集)
  • subtract:验证我们可以从第二个phext文档中剪枝所有坐标
  • normalize:验证从给定的phext文档中剪枝空滚动

依赖项

~15–46MB
~789K SLoC