基于 GoToSocial 的基于 WASM 的 SQLite 驱动程序和 BSD

主要观点:作者 2022 年在 OpenBSD 上使用 GoToSocial,因现代c.org/sqlite 与 OpenBSD 内核不兼容而停止,近期发现 NetBSD 上有 pkgsrc 选项后决定再次使用,GoToSocial 0.16.0 引入 wasm sqlite3 实现影响程序内存使用,0.17.0 更严重,推出 unsupported “nowasm”选项但在 OmniOS 编译失败,在 NetBSD 编译成功但替换二进制后程序会出错,最后通过特定方法实现从 WASM 到 nowasm 的迁移且程序稳定。
关键信息:

  • 2022 年在 OpenBSD 用 GoToSocial,因内核兼容问题停止。
  • 今年夏天在 NetBSD 或 OmniOS 上再次使用 GoToSocial。
  • 0.16.0 引入 wasm sqlite3 致内存问题,0.17.0 更严重,推出 nowasm 选项。
  • 在 OmniOS 编译 nowasm 失败,在 NetBSD 编译成功但替换二进制后程序出错。
  • 通过特定方法实现 WASM 到 nowasm 迁移且程序稳定。
    重要细节:
  • 在 NetBSD 或 OmniOS 上使用 pkgsrc 二进制包或源树编译会得到 wasm 版本,0.17.1 有相关补丁。
  • 在 OmniOS 上编译 nowasm 时出现特定错误。
  • 在 NetBSD 上通过特定设置使 nowasm 运行,如修改 db-sqlite-journal-mode 为“TRUNCATE”。
  • 迁移过程包括停止旧的 WASM 实例、备份配置和存储目录、导出 SQLite 数据库、转移备份到新实例、修改配置和恢复数据库等。
  • 迁移后需要安装 ffmpeg 并添加到环境变量。
    结论:切换到 nowasm 后内存使用降低,程序稳定,可根据需求选择编译方式。
阅读 16
0 条评论