Skip to content
This repository has been archived by the owner on May 23, 2022. It is now read-only.

Release notes draft for V0.6.0 (Tungsten Release) #166

Merged
merged 13 commits into from
Jul 24, 2020
67 changes: 32 additions & 35 deletions modules/release-notes/pages/sdk-release-notes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
:page-layout: releasenotes
:sdk-short-name: DFINITY Canister SDK
:sdk-long-name: DFINITY Canister Software Development Kit (SDK)
:release: 0.5.7
:release: 0.6.0
ifdef::env-github,env-browser[:outfilesuffix:.adoc]

The {sdk-long-name} enables developers to develop applications for the {IC} using the {proglang} programing language.
Expand All @@ -35,60 +35,57 @@ This {release} version of the software and programming language should not be us

The {release} release includes the following new features and capabilities:

- {proglang} and the JavaScript library now support floating point numbers (Float).
- When using the Candid UI, you can view return values in text, UI, and JSON formats.
+
You can switch between the formats for representing values by clicking the results bar.
- Internal updates that are not yet user-visible to support future features.
=== SDK

== Breaking change
The {release} release includes the following changes that might require updates to existing programs:

- The name of the built-in {proglang} library has changed from `stdlib` to `base`.
- All of the module names in the `base` library start with an upper case letter.
- The `principalId` module has been changed to `Principal`.
- 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.
- Canister manifest now stores multiple canister IDs associated with local and remote networks as well as network mapping.
- Asset canisters include `.did.js`.
- Local network defaults to `127.0.0.1:8000`.

=== Modifying existing programs
=== Tungsten (Developer Network)

If you have programs that rely on modules in the `stdlib` library, you must change the `import` statement to use the new `base` library name.
For example, you might have previously imported the Array module using the following statement:
- 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 access and toggle between local and Tungsten networks.
- 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.

[source,motoko]
----
import Array "mo:stdlib/array";
----
=== Motoko

With this release, you would change the statement like this:
- The `motoko-base` repository is now open. We encourage developers to use Vessel package manager to download the latest `base` from `master`.
- Major breaking changes and updates as detailed here: dfinity/motoko-base#37
- Motoko style guide published to sdk.dfinity.org
- Stable variable support

[source,motoko]
----
import Array "mo:base/Array";
----
=== Addressing case-sensitivity
== Breaking changes
The {release} release includes the following changes that might require updates to existing programs:

If your local development environment runs on macOS, you might be able to build your {proglang} program using a lower case module name because the macOS file system is not case-sensitive by default.

If you use lower case module names, however, the same code will not compile on Linux computers.
Therefore, the recommended best practice is to always capitalize module names.
For example, use `import Array "mo:base/Array"`, not `import Array "mo:base/array"`.
- 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. There is no need to use `--type string/number` anymore. The arguments are therefore deprecated.

== Issues fixed in this release

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

- `dfx stop` now finds and kills all `dfx start` and `dfx replica` processes.
- Allow lowercase hex in Canister ID.
- Canister name now used for WASM and DID output.
- 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.

== Known issues and limitations

This section covers any known issues or limitations that might affect how you work with the {sdk-short-name} in specific environments or scenarios.
If there are workarounds to any of the issues described in this section, you can find them in the link:../developers-guide/troubleshooting{outfilesuffix}[Troubleshooting] section.

The {release} release includes the following known issues and limitations:

- 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 link:../developers-guide/troubleshooting{outfilesuffix}[Troubleshooting] for additional technical support.