3个版本 (破坏性)
0.3.0 | 2024年8月13日 |
---|---|
0.2.5 | 2024年8月12日 |
0.0.6 | 2024年2月5日 |
235 在 解析器实现
每月246次下载
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
构建
- 克隆此仓库
- 安装Rust
- 运行
cargo build
测试
- 完成上述构建步骤
- 运行
cargo test
运行
- 构建和测试项目后,启动火箭服务器。
- 运行
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
- 对于“world.phext”中的给定坐标运行
- 标准化 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