网络安全|互联网计算机的母语 Motoko 两岁了

网络安全|互联网计算机的母语 Motoko 两岁了

自推出以来 , 许多 IC 项目都采用 Motoko 进行开发 。 这是关于语言和我们所处位置的更新 。

元子二周年快乐!两年前 , 我们宣布推出 Motoko , 这是一种为互联网计算机设计的基于演员的编程语言 。 在此期间发生了很多事情——最值得注意的是 , 互联网计算机终于经历了创世纪并推出 。
从那时起 , 许多项目都采用 Motoko 进行开发并在 Internet 计算机上运行 , 在 GitHub 上有大约 400 个存储库 。 项目和存储库在技术上变得越来越复杂 , dapps 和开放的互联网服务使用不同的容器 , 其中核心“业务逻辑”是用 Motoko 编写的 , 但相关的数据存储或令牌可能会在 Rust 中实现 。 通过这种方式 , 我们看到 WebAssembly 支持的动态系统越来越多 。
在过去的一年里 , Motoko 团队也没有闲着 。 我们一直致力于改进 Motoko , 包括语言及其实现 , 并使其更易于使用和访问 。
开放Motoko 团队最大的里程碑是该语言及其库终于开源 。 我们已经为这个目标努力了很长时间 , 但在它最终实现之前 , 必须解决各种技术和组织障碍 。 Motoko及其基础库现在在 GitHub 上公开 , 包括所有来源以及完整的问题和提交历史 , 对外部贡献者开放 。
也许更明显的是 , Motoko Playground启动了 。 通过允许用户通过一个简单的网页部署和测试罐式智能合约 , 它极大地降低了使用 Motoko 语言和互联网计算机的门槛 。 我们 Motoko 团队发现自己一直在使用 Playground 在功能齐全的 Motoko+IC 环境中尝试简单的事情 。
Vessel是 Motoko 的包管理器 , 也已成为 Motoko 生态系统中更为核心的部分 , 它允许开发人员轻松地将第三方库拉入他们的项目或将他们自己的库提供给其他项目 。
Motoko 文档(现在也是开源的)也有许多改进和补充 , 当然还有更多工作要做 。 我们欢迎社区以改进建议或实际材料的形式做出贡献 。
记忆目前对我们来说最重要的项目是让 Motoko 对内存的使用更具可扩展性 。 如您所知 , Motoko 是一种托管语言 , 这意味着程序员无需担心内存管理的细节和容易出错的细节 。 这是通过垃圾收集器实现的 , 这是Motoko 编译器添加的一段代码 , 用于发现何时不再需要数据并且可以回收它使用的空间 。 垃圾收集器在所有高级编程语言中都有使用 , 它们的最新技术已经达到了超越大多数手动管理内存尝试的复杂程度 。
话虽如此 , Motoko 一开始是一个非常天真的收藏家 , 因为这是让我们起步的最快方式 。 这是一个简单的半空间收集器 , 它不断地将活动数据从活动堆的一半复制到另一半 。 但是我们的早期采用者正在以比我们预期的更快的速度将 IC 带到其存储容量的极限 , 因此很明显我们需要快速改进 。 在将整个运行时系统从 C 重写为 Rust 之后 , 我们现在提供了一个使用更少空间的压缩收集器 。 我们还大幅改进了收集的调度 , 以便它们仅在可能积累了足够垃圾时发生 。
现在 , 我们正在朝着基于页面的堆发展 , 这将允许将收集器的工作本地化到单个 IC 内存页面 , 从而通过一次只弄脏几个页面来减少内存费用 。 这是下一个重大改进的先决步骤:一个现代的分代和最终增量收集器 , 它将垃圾收集最小化并分解成小的、连续的工作包 , 这些工作包可以随着时间的推移均匀处理 , 避免周期使用中不可预测的峰值 。
另一个重要的话题是稳定的内存 。 这是一个独立的内存区域 , IC 允许在容器升级中幸存下来 。 在 Motoko 实现中 , 我们使用它在升级之前自动备份容器的稳定变量的内容 。 不幸的是 , 这可能是昂贵的 。 理想情况下 , 人们希望直接在该内存区域中存储稳定的数据 , 但将垃圾收集扩展到这一点将需要直接访问该内存才可行 , 而 WebAssembly 和 IC 尚不支持 。 作为权宜之计 , 我们很快将提供手动访问稳定内存的接口 , 希望社区能够构建库抽象 , 例如键/值存储甚至驻留在稳定内存中的数据库 。