0.6.24 中的新功能亮点

0.6.24 版本主要包含支持尚未完成的新功能的更改,包括对 DFX 命令、Motoko、Motoko 基础库和 Candid 的修复和更新。

新特性和功能

最重要的新特性和功能包括以下功能领域的更新:

DFX

  • 在此版本中,您必须拥有一个带有 cycleswallet canister 才能在 Internet Computer 上部署或管理应用程序。

    对于本地开发,当您在每个项目中运行 dfx canister createdfx deploy 命令时,dfx 会自动为您创建一个钱包。

    如果您在网络升级为需要燃料费余额之前使用“ic”网络别名部署到 Internet Computer,也会自动创建钱包。

    要在主 Internet Computer 网络上部署和管理应用程序,您必须向 DFINITY Foundation 提供与您的用户身份相关联的主体,并收到一个钱包容器标识符作为回报。

    在 Internet Computer 网络上部署应用程序:

    1. 下载并安装 {sdk-short-name}。

    2. 运行 dfx identity get-principal 命令以创建您的默认身份和主体:

      dfx identity get-principal

      运行该命令会显示类似于以下内容的输出:

      创建“默认”身份。
        - generating new key at /Users/pubs/.config/dfx/identity/default/identity.pem
      创建“默认”身份。
      wre5u-xietp-k5jz4-sdaaz-g3x4l-zjzxa-lxnly-fp2mk-j3j77-25qat-pqe
    3. 运行 dfx identity set-wallet 命令将您的钱包容器标识符与您的默认身份相关联。

      dfx identity set-wallet <wallet-canister-identifier>
    4. 通过使用类似于以下的 URL 导航到容器,在 Web 浏览器中打开钱包应用程序:

      https://<WALLET-CANISTER-ID>.ic0.app
  • 新的命令行选项使您能够指定初始周期数以传输到新创建的容器。

    dfx canister createdfx deploy 命令现在支持新的 --with-cycles <number-of-cycles> 选项。 此选项允许您指定钱包创建的容器的初始燃料费余额。

    您可以在本地运行 Internet Computer 网络或连接到当前的 ic 网络 (Sodium) 以进行测试时使用此选项。 但是,由于钱包和燃料费余额当前不用于您在连接到当前 ic 网络 (Sodium) 时创建的容器,因此 --with-cycles 选项不会影响任何容器操作。

    例如,您可以运行以下 dfx canister create 命令为项目中的所有容器初始化 8000000000 燃料费:

    dfx canister create --with-cycles 8000000000 --all

    如果使用 dfx deploy,您可以运行以下命令来为项目中的 backend 容器初始化 8000000000 燃料费:

    dfx deploy --with-cycles 8000000000 backend

    注意:您必须在要在其中创建或部署其他容器的网络上有一个带有燃料费余额的钱包容器。

  • 您现在可以使用新的`dfx toolchain` 命令来管理用于项目的`dfx` 命令行界面的版本。

    dfx toolchain 命令使您能够安装、卸载和设置您想要使用的 dfx 的默认版本。 您可以通过完整版本号、主要和次要版本号或标记名称来指定版本。 例如:

    dfx toolchain install 0.6.24 # complete version
    dfx toolchain install 0.6    # major minor version
    dfx toolchain install latest # tag name
  • 一个新的 deploy-wallet 子命令使您能够为您的燃料费钱包 WebAssembly 模块 (WASM) 指定容器标识符。

    例如,如果您拥有第三方交换提供商的帐户并收到钱包容器标识符,则可以运行类似于以下的命令来部署钱包并使用其燃料费进行开发:

    dfx identity deploy-wallet <canister-identifier>

    注意:`deploy-wallet` 功能旨在用于未来的用例。 该命令仅在您收到钱包容器标识符作为将 ICP 令牌转换为燃料费的转移操作的一部分时才适用。 此外,deploy-wallet 子命令不适用于当前版本的 Internet Computer 在本地或远程网络上运行。

Candid

  • New Candid documentation 为开发人员提供 Rust 和 JavaScript 的类型映射信息。

  • Candid 现在支持其他原生 Rust 类型和 Typescript。

  • 更多信息见 Candid changelog.

Motoko

  • Motoko 编译器 (moc) 现在接受 -Werror 标志以将警告转换为错误。

  • 语言服务器现在会同时返回文档注释 完成和悬停通知。

  • Motoko 支持对 NatNIntN 进行包装算术和按位运算。

    NatNIntN 上的传统算术运算符会在溢出时陷入陷阱。 如果需要环绕语义,可以使用运算符 +%-%%*%。 相应的赋值运算符(+%= 等)也可用。

    同样,位运算符(&|^<<>><<><>> 等)现在也可用于`NatN 和`IntN。 右移运算符 (>>) 是 NatN 上的无符号右移和 IntN 上的有符号右移; +>> 运算符在这些类型上_不_可用。

    此更改的动机是最终弃用并删除`WordN` 类型。 因此,不推荐使用 WordN 上的包装算术运算,并且它们的使用将打印警告。 有关替换 Word 类型的信息,请参阅Word types

  • 对于 Blob 类型的值 x,引入了对 blob x.vals() 元素的迭代器。 它的工作方式类似于 x.bytes(),但将元素返回为 Nat8 类型。

  • 基础库文档工具`mo-doc` 现在为签名中的类型生成交叉引用。 使用此增强功能,当您查看类似 fromIter : I.Iter<Nat> → List.List<Nat> 的签名时,您可以单击 I.IterList.List 导航到适当的定义。

  • 对类型检查器和编译器的改进为对象文字提供了更好的处理。

此版本中修复的问题

本节涵盖了已在此版本中修复的所有报告的问题。

已知问题和限制

本节涵盖可能影响您在特定环境或场景中使用 {sdk-short-name} 的任何已知问题或限制。