| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-08-16 | fix and test case for returning from suspend block | Andrew Kelley | |
| See #3063 | |||
| 2019-08-16 | codegen: LLVMConstSub instead of LLVMBuildSub in one place | Andrew Kelley | |
| 2019-08-15 | fix crash with sometimes type not being resolved | Andrew Kelley | |
| 2019-08-15 | add assertion about control flow to fix gcc warning | Andrew Kelley | |
| 2019-08-15 | fix error return traces for async calls of blocking functions | Andrew Kelley | |
| 2019-08-15 | remove `cancel` | Andrew Kelley | |
| 2019-08-14 | codegen for async call of blocking function | Andrew Kelley | |
| 2019-08-13 | avoid the word "coroutine", they're "async functions" | Andrew Kelley | |
| 2019-08-13 | alignment of structs no longer depends on LLVM | Andrew Kelley | |
| fixes async function tests in optimized builds | |||
| 2019-08-13 | Merge remote-tracking branch 'origin/master' into rewrite-coroutines | Andrew Kelley | |
| 2019-08-13 | flip the order of fields in error unions | Andrew Kelley | |
| to prepare for fixing u128 alignment issues | |||
| 2019-08-11 | fix no-longer-correct `nonnull` attribute on merge err ret traces fn | Andrew Kelley | |
| 2019-08-11 | fix cancel invoking branch on undefined memory | Andrew Kelley | |
| 2019-08-11 | all tests passing | Andrew Kelley | |
| 2019-08-11 | fix canceling async functions which have error return tracing | Andrew Kelley | |
| 2019-08-10 | fix returning a const error from async function | Andrew Kelley | |
| 2019-08-10 | fix try in an async function with error union and non-zero-bit payload | Andrew Kelley | |
| 2019-08-09 | fix combining try with errdefer cancel | Andrew Kelley | |
| 2019-08-09 | fix cancel inside an errdefer | Andrew Kelley | |
| 2019-08-08 | fix passing string literals to async functions | Andrew Kelley | |
| 2019-08-08 | async functions in single threaded mode do not use atomic ops | Andrew Kelley | |
| 2019-08-08 | more debuggable safety for awaiting twice | Andrew Kelley | |
| 2019-08-08 | cancel, defer, errdefer all working as intended now | Andrew Kelley | |
| 2019-08-07 | modify header precedence for zig cc, resolves intrinsics issues (#3027) | Ryan Saunderson | |
| 2019-08-07 | clean up the bitcasting of awaiter fn ptr | Andrew Kelley | |
| 2019-08-07 | implement cancel | Andrew Kelley | |
| all behavior tests passing in this branch | |||
| 2019-08-06 | fix awaiting when result type is a struct | Andrew Kelley | |
| 2019-08-06 | error return trace across suspend points | Andrew Kelley | |
| 2019-08-06 | passing the error return trace async function test | Andrew Kelley | |
| 2019-08-06 | improve async function semantics | Andrew Kelley | |
| * add safety panic for resuming a function which is returning, pending an await * remove IrInstructionResultPtr * add IrInstructionReturnBegin. This does the early return in async functions; does nothing in normal functions. * `await` gets a result location * `analyze_fn_async` will call `analyze_fn_body` if necessary. * async function frames have a result pointer field for themselves to access and one for the awaiter to supply before the atomic rmw. when returning, async functions copy the result to the awaiter result pointer, if it is non-null. * async function frames have a stack trace pointer which is supplied by the awaiter before the atomicrmw. Later in the frame is a stack trace struct and addresses, which is used for its own calls and awaits. * when awaiting an async function, if an early return occurred, the awaiter tail resumes the frame. * when an async function returns, early return does a suspend (in IrInstructionReturnBegin) before copying the error return trace data, result, and running the defers. After the last defer runs, the frame will no longer be accessed. * proper acquire/release atomic ordering attributes in async functions. | |||
| 2019-08-05 | async functions have error return traces where appropriate | Andrew Kelley | |
| however the traces are not merged on `await` or async function calls yet. When an async function has an error set or error union as its return type, it has a `StackTrace` before the args in the frame, so that it is accessible from `anyframe->T` awaiters. However when it does not have an errorable return type, but it does call or await an errorable, it has a stack trace just before the locals. This way when doing an `@asyncCall` on an async function pointer, it can populate the args (which are after the `StackTrace`) because it knows the offset of the args based only on the return type. This sort of matches normal functions, where a stack trace pointer could be supplied by a parameter, or it could be supplied by the stack of the function, depending on whether the function itself is errorable. | |||
| 2019-08-05 | delete IrInstructionMarkErrRetTracePtr | Andrew Kelley | |
| this IR instruction is no longer needed | |||
| 2019-08-05 | support async functions with inferred error sets | Andrew Kelley | |
| 2019-08-04 | refactor logic for determining if there is a frame pointer | Andrew Kelley | |
| 2019-08-04 | simpler, less memory intensive suspend/resume implementation | Andrew Kelley | |
| 2019-08-04 | move state from ZigFn to CodeGen to save memory | Andrew Kelley | |
| 2019-08-04 | suspension points inside branching control flow | Andrew Kelley | |
| 2019-08-03 | implement `@asyncCall` which supports async function pointers | Andrew Kelley | |
| 2019-08-03 | add runtime safety for resuming an awaiting function | Andrew Kelley | |
| 2019-08-02 | implement async functions returning structs | Andrew Kelley | |
| 2019-08-02 | Merge remote-tracking branch 'origin/master' into rewrite-coroutines | Andrew Kelley | |
| 2019-08-02 | Merge branch 'master' into rewrite-coroutines | Andrew Kelley | |
| 2019-08-02 | fix cmpxchg with discarded result | Andrew Kelley | |
| 2019-08-02 | implement async await and return | Andrew Kelley | |
| 2019-08-01 | fix calling an inferred async function | Andrew Kelley | |
| 2019-08-01 | reimplement async with function splitting instead of switch | Andrew Kelley | |
| 2019-07-29 | improve support for anyframe and anyframe->T | Andrew Kelley | |
| * add implicit cast from `*@Frame(func)` to `anyframe->T` or `anyframe`. * add implicit cast from `anyframe->T` to `anyframe`. * `resume` works on `anyframe->T` and `anyframe` types. | |||
| 2019-07-26 | add the `anyframe` and `anyframe->T` types | Andrew Kelley | |
| 2019-07-26 | async functions return void, no more GetSize resume block | Andrew Kelley | |
| 2019-07-25 | `@frameSize` works via PrefixData | Andrew Kelley | |
