| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-08-23 | better handling of lazy structs | Andrew Kelley | |
| this case works now: ```zig const A = struct { b_list_pointer: *const []B, }; const B = struct { a_pointer: *const A, }; const b_list: []B = [_]B{}; const a = A{ .b_list_pointer = &b_list }; const obj = B{ .a_pointer = &a }; ``` | |||
| 2019-08-23 | pointer types lazily evaluate their element type | Andrew Kelley | |
| 2019-08-23 | allow top level declarations to be lazy | Andrew Kelley | |
| this case now works: ```zig const A = struct { b: B, }; const B = fn (A) void; ``` | |||
| 2019-08-23 | add lazy value for fn prototypes | Andrew Kelley | |
| this case now works: ```zig const Node = struct { field: fn (*Node) *Node, }; ``` | |||
| 2019-08-23 | Merge remote-tracking branch 'origin/master' into fix-field-alignment-kludge | Andrew Kelley | |
| 2019-08-23 | Merge pull request #3114 from Tetralux/align-on-struct-fields | Andrew Kelley | |
| parsing and rendering of align(N) on struct fields | |||
| 2019-08-23 | Encapsulate bigint representation, assert on cast data loss | Jonathan Marler | |
| 2019-08-22 | parsing of align(N) on struct fields | Tetralux | |
| 2019-08-22 | fix regressions | Andrew Kelley | |
| 2019-08-22 | simple self-referential struct is working now | Andrew Kelley | |
| 2019-08-22 | add missing "referenced here" notes for lazy values | Andrew Kelley | |
| 2019-08-22 | introduce lazy values | Andrew Kelley | |
| see #2174 | |||
| 2019-08-21 | breaking: remove field alignment kludge | Andrew Kelley | |
| This breaks behavior tests as well as compile error notes for generic function calls. However it introduces better circular dependency compile errors. The next step is to add Lazy Values to fix the regressions. | |||
| 2019-08-20 | remove incorrect assert regarding 128-bit integers | Andrew Kelley | |
| LLVM incorrectly reports 8 as the alignment of i128 on x86_64 but it correctly reports 16 as the alignment of i128 on aarch64. closes #3101 | |||
| 2019-08-17 | add compile error for async frames depending on themselves | Andrew Kelley | |
| 2019-08-17 | detect non-async function pointer of inferred async function | Andrew Kelley | |
| closes #3075 | |||
| 2019-08-16 | add compile error for @Frame() of generic function | Andrew Kelley | |
| See #3063 | |||
| 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-14 | add compile error for await in exported function | Andrew Kelley | |
| 2019-08-14 | respect local variable alignment in async functions | Andrew Kelley | |
| 2019-08-13 | get_struct_type accepts field alignment overrides | 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 async function frames not aligned enough | Andrew Kelley | |
| 2019-08-11 | all tests passing | 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 cancel inside an errdefer | Andrew Kelley | |
| 2019-08-08 | better compile errors when frame depends on itself | Andrew Kelley | |
| 2019-08-08 | add compile error for unable to determine async fn frame | Andrew Kelley | |
| 2019-08-07 | implement cancel | Andrew Kelley | |
| all behavior tests passing in this branch | |||
| 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 | support async functions with inferred error sets | Andrew Kelley | |
| 2019-08-04 | suspension points inside branching control flow | Andrew Kelley | |
| 2019-08-03 | fix regression in calling extern functions | Andrew Kelley | |
| 2019-08-03 | implement `@asyncCall` which supports async function pointers | Andrew Kelley | |
| 2019-08-03 | add compile error for calling async function pointer | 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 | calling an inferred async function | Andrew Kelley | |
| 2019-07-24 | implement local variables in async functions | Andrew Kelley | |
