Andrew Kelley
8429d4ceac
implement coroutine resume
2018-02-28 22:18:48 -05:00
Andrew Kelley
c622766156
async function fulfills promise atomically
2018-02-28 21:48:20 -05:00
Andrew Kelley
807a5e94e9
add atomicrmw builtin function
2018-02-28 21:19:51 -05:00
Andrew Kelley
ad2a29ccf2
break the data dependencies that llvm coro transforms cant handle
...
my simple coro test program builds now
see #727
2018-02-28 16:47:13 -05:00
Andrew Kelley
026aebf2ea
another workaround for llvm coroutines
...
this one doesn't work either
2018-02-28 04:01:22 -05:00
Andrew Kelley
d243453862
Revert "llvm coroutine workaround: sret functions return sret pointer"
...
This reverts commit 132e604aa399a3bcb91996e550cf8972bd88422c.
this workaround didn't work either
2018-02-27 17:47:18 -05:00
Andrew Kelley
138d6f9093
revert workaround for alloc and free as coro params
...
reverts 4ac6c4d6bfb8f7ada2799ddb5ce3a9797be0518d
the workaround didn't work
2018-02-27 17:46:13 -05:00
Andrew Kelley
132e604aa3
llvm coroutine workaround: sret functions return sret pointer
2018-02-27 17:12:53 -05:00
Andrew Kelley
6e2a67724c
Revert "another llvm workaround for getelementptr"
...
This reverts commit c2f5634fb3df51622cf74f23b4ae0d4a7d2bbbe9.
It doesn't work. With this, LLVM moves the allocate fn call
to after llvm.coro.begin
2018-02-27 14:58:02 -05:00
Andrew Kelley
c2f5634fb3
another llvm workaround for getelementptr
2018-02-27 14:57:49 -05:00
Andrew Kelley
4ac6c4d6bf
workaround llvm coro transformations
...
by making alloc and free functions be parameters to async
functions instead of using getelementptr in the DynAlloc block
See #727
2018-02-26 21:14:15 -05:00
Andrew Kelley
3e86fb500d
implement coroutine suspend
...
see #727
2018-02-26 02:46:21 -05:00
Andrew Kelley
83f8906449
codegen for coro_resume instruction
...
See #727
2018-02-25 17:34:05 -05:00
Andrew Kelley
4eac75914b
codegen for coro_free instruction
...
See #727
2018-02-25 16:46:01 -05:00
Andrew Kelley
d2d2ba10e9
codegen for coro_end instruction
...
See #727
2018-02-25 16:40:00 -05:00
Andrew Kelley
0cf327eb17
codegen for coro_suspend instruction
...
See #727
2018-02-25 16:29:07 -05:00
Andrew Kelley
d0f2eca106
codegen for coro_begin instruction
...
See #727
2018-02-25 16:22:19 -05:00
Andrew Kelley
79f1ff574b
codegen for coro_alloc_fail instruction
...
See #727
2018-02-25 16:15:14 -05:00
Andrew Kelley
bced3fb64c
codegen for get_implicit_allocator instruction
...
See #727
2018-02-25 16:05:10 -05:00
Andrew Kelley
93cbd4eeb9
codegen for coro_alloc and coro_size instructions
...
See #727
2018-02-25 15:20:31 -05:00
Andrew Kelley
9f6c5a20de
codegen for coro_id instruction
...
See #727
2018-02-25 15:10:29 -05:00
Andrew Kelley
7567448b91
codegen for cancel
...
See #727
2018-02-25 14:47:58 -05:00
Andrew Kelley
05bf666eb6
codegen for calling an async function
...
See #727
2018-02-25 02:47:31 -05:00
Andrew Kelley
99985ad6fc
implement Zig IR for async functions
...
See #727
2018-02-23 03:03:06 -05:00
Andrew Kelley
ca1b77b2d5
IR analysis for coro.begin
...
See #727
2018-02-22 11:54:27 -05:00
Andrew Kelley
b261da0672
add coroutine startup IR to async functions
...
See #727
2018-02-21 23:28:35 -05:00
Andrew Kelley
236bbe1183
implement IR analysis for async function calls
...
See #727
2018-02-21 00:52:20 -05:00
Andrew Kelley
65a51b401c
add promise type
...
See #727
2018-02-20 16:42:14 -05:00
Andrew Kelley
a06f3c74fd
parse async fn definitions
...
See #727
2018-02-20 00:31:52 -05:00
Andrew Kelley
3d58d7232a
parse async fn calls and cancel expressions
2018-02-20 00:05:38 -05:00
Andrew Kelley
72ca2b214d
ability to slice an undefined pointer at compile time if the len is 0
2018-02-16 15:22:29 -05:00
Andrew Kelley
cbbd6cfa1e
add an assert to catch #777
...
asserting is better than segfaulting
2018-02-15 23:39:35 -05:00
Andrew Kelley
f2d601661d
fix exported variable not named in the object file
...
closes #771
2018-02-11 16:46:02 -05:00
Andrew Kelley
32c988a2d7
fix build runner on windows
2018-02-09 00:24:23 -05:00
Andrew Kelley
54c06bf715
error sets: runtime safety for int-to-err and err set cast
2018-02-08 21:54:44 -05:00
Andrew Kelley
fee875770c
error set casting building
2018-02-08 11:09:18 -05:00
Andrew Kelley
6940212ecb
error sets: fix peer resolution of error unions
2018-02-05 17:42:13 -05:00
Andrew Kelley
21ce559c9c
add --forbid-library
...
to help track down accidentally linking against a library
2018-02-04 22:06:03 -05:00
Andrew Kelley
ef5e7bb469
*WIP* error sets - an inferred error set can end up being the global one
2018-02-03 14:06:37 -05:00
Andrew Kelley
b8f59e14cd
*WIP* error sets - correctly resolve inferred error sets
2018-02-02 18:13:32 -05:00
Andrew Kelley
5161d70620
*WIP* error sets
2018-01-31 01:51:31 -05:00
Andrew Kelley
e5bc5873d7
rename "debug safety" to "runtime safety"
...
closes #437
2018-01-25 01:46:12 -05:00
Andrew Kelley
c2838f2442
fix printf format specifier
2018-01-23 11:40:22 -05:00
Marc Tiehuis
470ec91164
Add array type handling for gen_h
2018-01-23 23:38:20 +13:00
Andrew Kelley
cf39819478
add new kind of test: generating .h files. and more
...
* docgen supports obj_err code kind for demonstrating
errors without explicit test cases
* add documentation for `extern enum`. See #367
* remove coldcc keyword and add @setIsCold. See #661
* add compile errors for non-extern struct, enum, unions
in function signatures
* add .h file generation for extern struct, enum, unions
2018-01-22 22:24:07 -05:00
Andrew Kelley
4bdfc8a10a
fix error return traces pointing to off-by-one source line
...
See #651
2018-01-17 00:22:53 -05:00
Andrew Kelley
c9ac607bd3
add builtin.have_error_return_tracing
2018-01-15 00:14:14 -05:00
Andrew Kelley
7b57454cc1
clean up error return tracing
...
* error return tracing is disabled in release-fast mode
* add @errorReturnTrace
* zig build API changes build return type from `void` to `%void`
* allow `void`, `noreturn`, and `u8` from main. closes #535
2018-01-15 00:01:02 -05:00
Andrew Kelley
d973b40884
stack traces are a variable number of frames
2018-01-14 19:40:02 -05:00
Andrew Kelley
f0df2cdde9
error return traces use a zig-provided function to save binary size
2018-01-14 16:26:06 -05:00