Technical Working Group: Scalability & Performance

Reminder: Later today, at 5:30 pm CEST, we’ll have a discussion on Inter Canister Query Calls and the recent Composite Queries Proposal

I’m looking forward to an interesting session!


I won’t be able to make it today due to the meetup in LA.

I think a couple of other people will be there as well.

1 Like

Link to slides and recording of the session on Inter-canister query calls.


How can I view the recording? It says I cannot view the recording because I have no permission.

Please try again. I got the permissions wrong.

1 Like

Tomorrow 11/17 at 5:30pm CET, the next WG session will happen.

The main topic we’d like to discuss in this session is Improving the utility of stable memory.

Please read the forum post in advance and think about the questions raised.


@johan couldn’t join the session, so we had a free discussion on stable memory on the IC.

Updated Meeting Notes and Recording.

1 Like

We’ll skip this week’s Scalability & Performance WG. I already wish you a nice Christmas and see you all in January.


I’d like to follow-up on this question. Will multiple memories do anything that would make stable structures unnecessary?

To specify my question more, will it be possible to create a native data structure (like a Rust struct) and simply tell it which memory to use during instantiation of the data structure? And could one or more memories be set aside as stable, so that we could actually have native stable data structures instead of having to create specialized (and a bit limited) stable data structures?

I’m imagining the main Wasm heap could maintain pointers to native structures in the stable memories, and perhaps on upgrade those pointers can be collected and stored in a stable memory, and then restored to their variables after upgrade.

Is this just crazy talk? @johan @rossberg

1 Like

The memory layout of a native data structure is not guaranteed to be stable or backwards compatible. In theory, even if the developer uses the same compiler binary with the same source code, the compiler is still allowed to use a different memory layout of native data structures based on non-deterministic optimizations.

While multi-memories enable fast access to the stable memory, the developer still needs to ensure that data stored in the stable memory is stable and backwards compatible.


Hey everybody,

Tomorrow 01/19 at 5:30pm CET we’ll have the first WG session of 2023.

The main topic for tomorrow will be a discussion on:

Canister queues (ingress, input and output) overview and case studies of handling large message volumes

led by @dsarlis.

Looking forward to see many of you!


Unfortunately I could not attend this meeting for family reasons. Would you happen to have a recording to share @domwoe please ?

1 Like

The meeting is actually scheduled for today the 19th (I guess Dominic made a typo on the date that no one noticed :sweat_smile:).

1 Like

Oopsie, fixed.

In any case, I always record and share.


Updated meeting notes and recording.


Will the recording be uploaded to youtube? Zoom player acting buggy on my side

1 Like

hmm, we haven’t uploaded WG sessions to Youtube thus far. I don’t think there’s a particular blocker but the audience is pretty small at the moment.


This would be a great bounty for someone to pursue while exploring these patterns at the library level. Pipelineify already handles a lot of this queuing action, and it would likely need to use some of the libraries that would help with managing input output queues.

1 Like

I remember reading about throughput limitations of BTC transactions, but can’t find it. Something like one transaction per block per subnet. Does anyone know the actual number and whether there is ongoing work to increase it?

Found it:

1 Like