Skip to content
Draft
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
fe9b0d8
ci: release candid_ui (#692)
lwshang Dec 10, 2025
04e34a8
fix: escape `*/` to prevent premature JS doc comment termination (#693)
ilbertt Dec 18, 2025
2e4a2cf
chore: release candid_parser v0.2.4, didc v0.5.4 (#694)
ilbertt Dec 18, 2025
7f7859d
chore!: generate @icp-sdk/core imports (#695)
Jan 7, 2026
4e9d3b8
feat: Add rangemap feature to ic_principal (#696)
adamspofford-dfinity Jan 9, 2026
e643f7d
chore: release candid_parser v0.3.0, didc v0.6.0, ic_principal v0.1.2…
lwshang Jan 9, 2026
281d685
chore: enforce limits in binary parsing (#698)
venkkatesh-sekar Feb 2, 2026
022ec7e
chore: Release candid v0.10.21 (#699)
lwshang Feb 3, 2026
07d6414
feat: enhance recursion guard (#700)
lwshang Feb 10, 2026
cb5e687
chore: Release candid v0.10.22 (#701)
lwshang Feb 10, 2026
fafac81
fix: avoid double_parens lint in Decode! macro for single value (#703)
lwshang Feb 19, 2026
a267d71
feat: Add BoundedVec (#702)
michael-weigelt Feb 20, 2026
c339ac1
chore: Release candid v0.10.23 (#704)
lwshang Feb 20, 2026
ba72cf4
feat: Implement DataSize for Principal (#705)
dsarlis Feb 27, 2026
b51c0c5
feat(candid): preserve doc comments on exported types and fields (#707)
sasa-tomic Mar 15, 2026
7319172
perf: fast-path small candid numbers (#709)
sasa-tomic Mar 15, 2026
3149c13
perf: avoid cloning record fields during decode (#711)
sasa-tomic Mar 15, 2026
d9fd40c
perf: fast-path exact primitive vector decode (#712)
sasa-tomic Mar 15, 2026
1cb9813
perf: skip tokenizer trivia bookkeeping without trivia (#713)
sasa-tomic Mar 15, 2026
caf3fe4
perf: avoid rebuilding parser types during validation (#714)
sasa-tomic Mar 15, 2026
eaf7e6c
perf: bulk memcpy for primitive vector encoding on LE platforms (#715)
sasa-tomic Mar 15, 2026
beb56d5
perf: batch cost tracking for primitive vector decode (#716)
sasa-tomic Mar 15, 2026
325b275
perf: Int::decode small-value fast path (#717)
sasa-tomic Mar 15, 2026
3759322
bench: add vec_nat, vec_nat32, vec_nat64 benchmarks (#718)
sasa-tomic Mar 15, 2026
e0f393d
chore: Release candid v0.10.25 (#719)
lwshang Mar 16, 2026
defcf83
fix: primitive vec fast-path skip bug + release 0.10.26 (#720)
lwshang Mar 18, 2026
99ef1fa
perf: optimize decode paths for Nat/Int, primitive vecs, and strings …
sasa-tomic Mar 18, 2026
917abf8
perf(de): inline LEB128 and add map fast paths (#722)
sasa-tomic Mar 18, 2026
6b0576e
bench(bench): add real-world encoding/decoding benchmarks (#723)
sasa-tomic Mar 18, 2026
27bdf42
ci: add publish workflow for crates.io trusted publishing (#724)
lwshang Mar 30, 2026
36a8034
feat: collect all subtype errors in compatibility check + release 0.1…
sasa-tomic Apr 8, 2026
39ef098
chore: pin GitHub Actions to commit SHAs (#726)
slawomirbabicz Apr 9, 2026
bf4a997
feat: Add schemars feature to ic_principal (and release 0.1.3) (#727)
adamspofford-dfinity May 5, 2026
578487d
fix(candid_parser): emit `Float32` for Candid `float32` in Motoko bin…
Kamirus May 7, 2026
dd3d5ab
Release candid 0.10.28 and candid_parser 0.3.2 (#731)
lwshang May 20, 2026
f97db28
fix: text_fast_path leakage between nested maps + release candid 0.10…
mraszyk May 27, 2026
96dbb62
chore(ui): use icp-cli for the candid ui (#734)
raymondk Jun 16, 2026
ac2ef66
chore(ui): Update TS libraries to @icp-sdk (#735)
raymondk Jun 17, 2026
0e23227
feat(ui): use candid:service metadata to lookup did (#736)
raymondk Jun 17, 2026
88697bb
feat(ui): Bump to recent cdk and add asset certification and env cook…
raymondk Jun 17, 2026
e131cfd
chore(ui): Use the environment variables to lookup the canister id (#…
raymondk Jun 17, 2026
0df211f
Merge origin/master into next
raymondk Jun 19, 2026
10aa7e3
fix the rust/bench
raymondk Jun 19, 2026
bab84c6
Update CHANGELOG with breaking and non-breaking changes
raymondk Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,21 @@ jobs:
CARGO_TERM_COLOR: always # Force Cargo to use colors
TERM: xterm-256color
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Checkout base branch
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
with:
ref: ${{ github.base_ref }}
path: main/
- uses: actions/setup-python@v4
- uses: actions/setup-python@7f4fc3e22c37d6ff65e88745f38bd3157c663f7c # v4.9.1
with:
python-version: "3.10"
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install pyyaml
- name: Cache cargo build
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.cargo
Expand Down Expand Up @@ -53,7 +53,7 @@ jobs:
echo "</details>"
} > /tmp/message.txt
- name: Post comment
uses: thollander/actions-comment-pull-request@v2
uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 # v2.5.0
with:
filePath: /tmp/message.txt
comment_tag: canbench
4 changes: 2 additions & 2 deletions .github/workflows/coq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v12
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- uses: cachix/install-nix-action@07da2520eebede906fbeefa9dd0a2b635323909d # v12
#- run: nix-build s coq
# The above would also build the shell, includling niv.
# This would be useful behaviour if our CI seeds some cache.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/license.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
name: license-check:required
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: EmbarkStudios/cargo-deny-action@v1
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- uses: EmbarkStudios/cargo-deny-action@3f4a782664881cf5725d0ffd23969fcce89fd868 # v1.6.3
with:
command: check bans licenses sources
65 changes: 65 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Publish crates to crates.io

on:
workflow_dispatch:
inputs:
ic_principal:
description: "Publish ic_principal"
type: boolean
default: false
candid:
description: "Publish candid and candid_derive"
type: boolean
default: false
candid_parser:
description: "Publish candid_parser"
type: boolean
default: false

jobs:
publish:
name: Publish selected crates
runs-on: ubuntu-24.04
if: >-
inputs.ic_principal || inputs.candid || inputs.candid_parser

permissions:
contents: read
id-token: write # Required for trusted publishing via OIDC

steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache: false

- name: Authenticate with crates.io
id: auth
uses: rust-lang/crates-io-auth-action@b7e9a28eded4986ec6b1fa40eeee8f8f165559ec # v1

# Crates are ordered by dependency: publish dependencies before dependents.
# ic_principal has no workspace deps.
# candid_derive has no workspace deps.
# candid depends on ic_principal, candid_derive.
# candid_parser depends on candid.

- name: Publish ic_principal
if: inputs.ic_principal
run: cargo publish -p ic_principal
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}

- name: Publish candid and candid_derive
if: inputs.candid
run: cargo publish -p candid_derive && cargo publish -p candid
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}

- name: Publish candid_parser
if: inputs.candid_parser
run: cargo publish -p candid_parser
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
69 changes: 44 additions & 25 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
name: linux64
artifact_name: target/x86_64-unknown-linux-musl/release/didc
asset_name: didc-linux64
- os: macos-13-large
- os: macos-15-intel
name: macos
artifact_name: target/release/didc
asset_name: didc-macos
Expand All @@ -25,22 +25,12 @@ jobs:
artifact_name: target/arm-unknown-linux-gnueabihf/release/didc
asset_name: didc-arm32
steps:
- uses: actions/checkout@v4
- name: Install stable toolchain
if: matrix.name != 'arm'
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Install stable toolchain
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Add arm target
if: matrix.name == 'arm'
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: arm-unknown-linux-gnueabihf
run: rustup target add arm-unknown-linux-gnueabihf
- name: Build
if: matrix.name == 'linux64'
run: |
Expand All @@ -54,13 +44,13 @@ jobs:
run: cargo build --package didc --release --locked
- name: Cross build
if: matrix.name == 'arm'
uses: actions-rs/cargo@v1
uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3
with:
use-cross: true
command: build
args: --package didc --target arm-unknown-linux-gnueabihf --release --locked
- name: "Upload assets"
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ matrix.asset_name }}
path: ${{ matrix.artifact_name }}
Expand All @@ -77,14 +67,10 @@ jobs:
asset_name: didc-linux64
- os: ubuntu-22.04
asset_name: didc-linux64
- os: macos-14-large
asset_name: didc-macos
- os: macos-13-large
asset_name: didc-macos
steps:
- name: Get executable
id: download
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ matrix.asset_name }}
- name: Executable runs
Expand All @@ -104,13 +90,46 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Get executable
uses: actions/download-artifact@v4
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ matrix.asset_name }}
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v2
uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # 2.11.5
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: didc
asset_name: ${{ matrix.asset_name }}
tag: ${{ github.ref }}

candid-ui:
name: Build and publish candid_ui canister
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Install Node.js
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: '20'
- name: Install Rust toolchain
run: rustup show active-toolchain || rustup toolchain install
- name: Install binaryen
run: |
sudo apt-get update -yy
sudo apt-get install -yy binaryen
- name: Build candid_ui
working-directory: tools/ui
run: |
npm install
npm run build
cargo build --target wasm32-unknown-unknown --profile canister --package didjs
wasm-opt --strip-debug -Oz target/wasm32-unknown-unknown/canister/didjs.wasm -o target/wasm32-unknown-unknown/canister/didjs_opt.wasm
- name: Prepare asset
run: |
cp tools/ui/target/wasm32-unknown-unknown/canister/didjs_opt.wasm candid_ui.wasm
- name: Upload candid_ui to release
uses: svenstaro/upload-release-action@29e53e917877a24fad85510ded594ab3c9ca12de # 2.11.5
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: candid_ui.wasm
asset_name: candid_ui.wasm
tag: ${{ github.ref }}
6 changes: 3 additions & 3 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ jobs:
rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Cache cargo build
uses: actions/cache@v4
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: |
~/.cargo/registry
Expand All @@ -39,7 +39,7 @@ jobs:
fuzzing:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
- name: Install cargo-fuzz
run: |
cargo install cargo-fuzz
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
build-didc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

- name: Build didc
run: cargo build -p didc --release
Expand All @@ -26,16 +26,16 @@ jobs:
run:
working-directory: ${{ env.WORKING_DIR }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1

# TODO: use dfinity/ci-tools/actions/setup-pnpm once the repo has a standard structure with a package.json file in the root
- name: Install pnpm
uses: pnpm/action-setup@v3
uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3
with:
package_json_file: ${{ env.WORKING_DIR }}/package.json

- name: Install Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version-file: ${{ env.WORKING_DIR }}/.node-version
registry-url: "https://registry.npmjs.org"
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
target/
.canbench/
canbench_results.yml

# IDEs
.idea/
Expand Down
Loading
Loading