aboutsummaryrefslogtreecommitdiff
path: root/BRANCH_TODO
blob: c80c1e92e466f01d508157b894bb9fd9ede422d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 * compile error for error: expected anyframe->T, found 'anyframe'
 * compile error for error: expected anyframe->T, found 'i32'
 * await of a non async function
 * async call on a non async function
 * a test where an async function destroys its own frame in a defer
 * implicit cast of normal function to async function should be allowed when it is inferred to be async
 * revive std.event.Loop
 * @typeInfo for @Frame(func)
 * peer type resolution of *@Frame(func) and anyframe
 * peer type resolution of *@Frame(func) and anyframe->T when the return type matches
 * returning a value from within a suspend block
 * make resuming inside a suspend block, with nothing after it, a must-tail call.
 * make sure there are safety tests for all the new safety features (search the new PanicFnId enum values)
 * compile error for casting a function to a non-async function pointer, but then later it gets inferred to be an async function
 * compile error for copying a frame
 * compile error for resuming a const frame pointer
 * runtime safety enabling/disabling scope has to be coordinated across resume/await/calls/return
 * calling a generic function which is async
 * make sure `await @asyncCall` and `await async` are handled correctly.
 * allow @asyncCall with a real @Frame(func) (the point of this is result pointer)
 * documentation
   - @asyncCall
   - @frame
   - @Frame
   - @frameSize
   - coroutines section
   - suspend
   - resume
   - anyframe, anyframe->T
 * call graph analysis to have fewer stack trace frames
 * grep for "coroutine" and "coro" and replace all that nomenclature with "async functions"
 * when there are multiple calls to async functions in a function, reuse the same frame buffer, so that the
   needed bytes is equal to the largest callee's frame