| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2019-08-08 | fix segfault with var args | Andrew Kelley | |
| 2019-08-08 | better compile errors when frame depends on itself | Andrew Kelley | |
| 2019-08-08 | cancel, defer, errdefer all working as intended now | Andrew Kelley | |
| 2019-08-07 | Don't emit clang error if source or filename pointer is null | Sam Tebbs | |
| 2019-08-07 | cancel works on non-pointers | 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 | 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 | simpler, less memory intensive suspend/resume implementation | 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 compile error for async call of function pointer | Andrew Kelley | |
| 2019-08-02 | Merge remote-tracking branch 'origin/master' into rewrite-coroutines | Andrew Kelley | |
| 2019-08-02 | fix regressions regarding writing through const pointers | Andrew Kelley | |
| 2019-08-02 | fix discarding function call results | Andrew Kelley | |
| 2019-08-02 | assignment participates in result location | Andrew Kelley | |
| fix one regression with optionals but there are more | |||
| 2019-08-02 | implement async await and return | Andrew Kelley | |
| 2019-08-01 | more passing coroutine tests | Andrew Kelley | |
| 2019-08-01 | reimplement async with function splitting instead of switch | Andrew Kelley | |
| 2019-08-01 | allow 128 bit cmpxchg on x86_64 | 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-25 | `@frameSize` works via PrefixData | Andrew Kelley | |
| 2019-07-25 | implement `@frameSize` | Andrew Kelley | |
| 2019-07-25 | implement `@frame` and `@Frame` | Andrew Kelley | |
| 2019-07-25 | calling an inferred async function | Andrew Kelley | |
| 2019-07-23 | inferring async from async calls | Andrew Kelley | |
| 2019-07-22 | fix suspend at end of function | Andrew Kelley | |
| 2019-07-21 | implement coroutine resume | Andrew Kelley | |
| 2019-07-21 | fix not jumping to entry | Andrew Kelley | |
| 2019-07-21 | remove errors for async calling convention | Andrew Kelley | |
| 2019-07-21 | simple async function call working | Andrew Kelley | |
| 2019-07-19 | remove coroutines implementation and promise type | Andrew Kelley | |
| 2019-07-19 | fix usingnamespace | Andrew Kelley | |
| It used to be that usingnamespace was only allowed at top level. This made it OK to put the state inside the AST node data structure. However, now usingnamespace can occur inside any aggregate data structure, and therefore the state must be in the TopLevelDeclaration rather than in the AST node. There were two other problems with the usingnamespace implementation: * It was passing the wrong destination ScopeDecl, so it could cause an incorrect error such as "import of file outside package path". * When doing `usingnamespace` on a file that already had `pub usingnamespace` in it would "steal" the usingnamespace, causing incorrect "use of undeclared identifier" errors in the target file. closes #2632 closes #2580 | |||
| 2019-07-18 | closes #2916 | Michael Dusan | |
| 2019-07-13 | ir: add an assertion in phi analysis | Andrew Kelley | |
| 2019-07-10 | mingw: building and linking msvcrt-os.lib | Andrew Kelley | |
| 2019-07-08 | std.os.getrandom does a libc version check | Andrew Kelley | |
| closes #397 | |||
| 2019-07-06 | Add implicit cast for *[N]T to [*c]T | SamTebbs33 | |
| 2019-07-04 | improve the error message and test coverage | Andrew Kelley | |
| 2019-07-03 | Merge branch 'impl-1107' of https://github.com/emekoi/zig into emekoi-impl-1107 | Andrew Kelley | |
| 2019-07-03 | added tests for #1107 and a note in the reference | emekoi | |
| 2019-07-03 | update `@unionInit` to integrate with result location semantics | Andrew Kelley | |
| 2019-07-03 | Merge branch 'comptime-union-init' of https://github.com/rbscott/zig into ↵ | Andrew Kelley | |
| rbscott-comptime-union-init | |||
| 2019-07-02 | add missing compile error for comptime continue inside runtime catch | Andrew Kelley | |
| See #2604 | |||
| 2019-07-02 | fixups | Andrew Kelley | |
| 2019-07-02 | Merge branch 'has-field' of https://github.com/shawnl/zig into shawnl-has-field | Andrew Kelley | |
