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 client processes locally on your development computer.

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

This 0.4.13 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.

Important

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.4.13 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.4.13

The 0.4.13 release includes the following new features and capabilities:

  • Inter-canister calls are now supported.

    This release includes multiple back-end enhancements to both the SDK and Motoko as scaffolding to support inter-canister calls. Inter-canister calls enable you to build applications in which canisters make calls to each other. Some of the backend changes introduced to support inter-canister calls include the following: — The ability to identify a canister using a caller id — The ability to import canister function by a caller id or alias

  • New dfx canister call --query and --update flags for you to explicitly specify whether you are making a query call or an update call when accessing a canister’s methods.

  • New dfx canister --client option that enables you to specify the client host name or IP address and port to connect to. This option enables you to override the client setting specified in the dfx configuration file.

  • Improvements to the handling of front-end static assets so they can be deployed as part of a canister or served from a bootstrap web server.

  • Cross-Origin Resource Sharing (CORS) support added for the webserver.

    Cross-Origin Resource Sharing (CORS) is a mechanism that uses additional HTTP headers to tell browsers to give a web application running at one origin access to selected resources from a different origin. With this added support, you can have the client running dfx start on a server and connect to it from a static bootstrap server.

Note: The backend changes for inter-canister calls and for handling of front-end assets are not directly exposed in documentation for this release. User-facing changes for these features will be documented with sample code in an upcoming release.

Issues fixed in this release

This section covers the issues fixed in this release. The 0.4.13 release includes the following fixes to reported issues:

  • Added stability for dfx canister call

  • Several minor fixes to improve front-end experience

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.

The 0.4.13 release includes the following known issues and limitations:

  • There is a breaking change to Motoko which removes definitions like debugPrint, abs and range from the default scope. You now have to import them through the Motoko standard library.

    For help with importing from the standard library, check out this section of the Motoko language reference and also the phonebook tutorial.

  • Float support in the Motoko programming language that is compiled to WebAssembly.

    Although Motoko recognizes floating point numbers, there are some limitations related to the deterministic requirements of the Internet Computer that can create issues when compiling Motoko source code that includes floating point data types into WebAssembly for deployment. To simplify the development of test and demonstration programs that run on the current 0.4.13 release, you should avoid using Float data types for now.

  • Using fixed-length Word data type arguments when running dfx commands.

    Fixed-length Word32 data types are not yet supported in the dfx command-line interface. As an alternative, you can convert integers to Word32 using the standard library function int32ToWord32(intToInt32(value))` until the support for fixed-length Word32 and Nat32 data types is added.

Additional questions and feedback

Check out Troubleshooting for additional technical support.