Developer Release Notes

The DFINITY Canister Software Development Kit (SDK) enables developers to develop applications for the Internet Computer using the Motoko programing language. Motoko is a new programming language optimized for creating tamper-proof software and open internet services that will be hosted on the Internet Computer.

The DFINITY Canister SDK provides everything you need to perform the following key tasks:

  • Author canisters in Motoko and compile them to WebAssembly.

  • Run Internet Computer replica processes locally on your development computer.

  • Deploy compiled programs as standalone canisters and interact with the canisters using a command-line interface.

This 0.6.2 version of the DFINITY Canister Software Development Kit (SDK) is an interim update of the Alpha release recently shared with the development community and made available to the public for preliminary testing, demonstration, and exploration. As part of our commitment to continuous improvement and iterative development focused on addressing developer feedback, this version includes numerous fixes and enhancements.

Note that DFINITY Canister Software Development Kit (SDK) and Motoko programming language are Alpha-quality releases intended to give you an early look at the potential for building applications that run on the Internet Computer. This 0.6.2 version of the software and programming language should not be used for developing production applications at this time.

Highlights of what’s new in 0.6.2

The 0.6.2 release only includes one important user-facing change which is also a breaking change that will require an update to all existing projects.

In this release, all canister identifiers are generated using a text-based representation. To work with the 0.6.2 release, therefore, you must update your projects to use the new canister identifier format.

If you are connected to the Internet Computer running locally, do the following in each project directory:

  1. Stop the Internet Computer by running the following command:

    dfx stop
  2. Restart the Internet Computer in a clean state by running the following command:

    dfx start --clean

    This command removes all existing canister state and build output.

  3. Generate new textual canister identifiers by running the following command:

    dfx canister create --all
  4. Redeploy the updated canisters to use the new text-based identifiers by running the following command:

    dfx canister install --all

For information about breaking changes that were introduced in the previous releases, see Breaking changes.

Highlights of what’s new in 0.6.1

The 0.6.1 release only included the following user-facing changes:

  • An update to the dfx ping command enables you to specify a network name to check the status of a network connection.

  • An update to the user authentication method enables dfx to use the browser’s localStorage for the user’s public and private keys if cookies are not enabled.

  • Motoko programming guidelines are now available as part of the programming language guide on the SDK website.

Highlights of what’s new in 0.6.0

The 0.6.0 release included many new features and enhancements. The following sections describe the key features and enhancements that were introduced in the 0.6.0 release.

SDK

  • You can now look up a canister identifier using the command dfx canister id <canister_name>

  • The --check flag can be used with the dfx build command to check whether a canister will build before creating or building the canister

  • Both canister name and identifiers are printed upon canister creation

  • The dfx.json configuration file has a new field—defaults/build/packtool—to support the Vessel package manager.

  • The dfx.json file supports canister new types—motoko, assets, and custom—to allow different build tools to be used for building canisters:

    • The motoko canister type uses the motoko compiler to build a canister.

    • The assets canister type uses npm run build (optionally) to build files and uploads them to an asset canister

    • The custom canister type uses a custom builder that should output WASM and DID files.

  • The dfx.json file includes network mapping for local and Tungsten networks. The local network defaults to 127.0.0.1:8000.

Tungsten (Developer Network)

  • HTTP authorization and credentials management for onboarded Tungsten users

  • Tungsten added as a provider in `dfx.json

  • You can use the dfx ping command to ping an Internet Computer and request its status

  • The --network <network> flag can be used to build and install canisters to the specified provider

  • Canister ID formatting for accessing Tungsten-deployed apps in the browser

Motoko

  • The motoko-base repository is now open. We encourage developers to use Vessel package manager to download the latest base from master.

  • Stable variable support

  • Released mo-doc for generating documentation from Motoko comments

  • Better support for Char and Text module

  • Error module for rejecting messages

  • Buf module renamed to Buffer

Breaking changes

In addition to the change described in Highlights of what’s new, the 0.6.2 release includes the following changes that might require updates to existing programs:

  • Major breaking changes and updates to Motoko as detailed here: https://github.com/dfinity/motoko-base/issues/37

  • The command dfx new now creates a separate assets canister. Programs built with earlier versions of the SDK may need to be converted to this new format.

  • You must now create empty canisters before building and installing using the subcommand dfx canister create.

  • dfx canister call will consult the Candid file for method types. You no longer need to use --type string/number. The arguments are therefore deprecated.

Issues fixed in this release

This section covers the issues fixed in this release. The 0.6.2 release includes internal fixes and improvements to the Candid user interface, the interface description library, and some refactoring of dfx commands.

  • Certification validation error fixed on Linux and NixOS

  • dfx stop now finds and kills all dfx start and dfx replica processes

  • Allow lowercase hex in Canister ID

  • Allow installation without sudo when possible

  • Install script issues resolved for Ubuntu and Mac

  • Check added to forbid starting webserver with a forwarded port

  • Cache directory management and error messages

  • Improved error messages for HTTP server error

Known issues and limitations

This section covers any known issues or limitations that might affect how you work with the DFINITY Canister SDK in specific environments or scenarios. If there are workarounds to any of the issues described in this section, you can find them in the Troubleshooting section.

Additional questions and feedback

Check out Troubleshooting for additional technical support.