761 Commits

Author SHA1 Message Date
Raul Leal
87b10400c2 allow implicit cast from *[N]T to ?[*]T (#1398)
* allow implicit cast from *[N]T to ?[*]T
2018-08-22 13:12:08 -04:00
Wink Saville
d927f347de Fix ir_analyze_instruction_atomic_rmw (#1351)
There were two tests of type_is_valid(casted_ptr->value.type) change the
second one to type_is_valie(casted_operand->value.type).
2018-08-07 23:18:26 -04:00
Andrew Kelley
9bd8b01650 fix tagged union initialization with a runtime void
closes #1328
2018-08-03 15:21:08 -04:00
kristopher tate
298abbcff8 better support for _ identifier
* disallow variable declaration of `_`
 * prevent `_` from shadowing itself
 * prevent read access of `_`

closes #1204
closes #1320
2018-08-03 02:57:17 -04:00
kristopher tate
b3cd65d56e src/ir.cpp: remove promise_symbol from suspend;
Tracking Issue #1296 ;
2018-08-02 16:50:08 +09:00
kristopher tate
a8ea236095 src/ir.cpp: don't allow @handle() outside of a function;
Tracking Issue #1296 ;
2018-08-02 16:50:08 +09:00
kristopher tate
fcf53b31fc src/ir.cpp: return promise->T instead of promise;
Tracking Issue #1296 ;
Thanks @andrewrk ;
2018-08-02 16:50:08 +09:00
kristopher tate
c1a3b0cb0a src/ir.cpp: add/throw error for @handle() in a non async context;
Tracking Issue #1296 ;
Thanks @andrewrk ;
2018-08-02 16:50:08 +09:00
kristopher tate
a9ea22d4f9 src/ir.cpp: wire-up IR for handle builtin;
Tracking Issue #1296 ;
2018-08-02 16:50:08 +09:00
Andrew Kelley
6fd6bc94f5 await sets suspend bit; return clears suspend bit 2018-07-30 12:22:54 -04:00
Andrew Kelley
09304aab77 fix cancel and await semantics 2018-07-29 23:25:40 -04:00
Andrew Kelley
0d79e03816 canceling an await also cancels things awaiting it 2018-07-28 13:52:48 -04:00
Andrew Kelley
dd272d1316 await cancels the await target when it is canceled 2018-07-28 12:36:02 -04:00
Andrew Kelley
0ba2bc38d7 await checks the cancel bit 2018-07-28 12:23:47 -04:00
Andrew Kelley
60cda3713f suspend cancels awaiter when it gets canceled 2018-07-28 12:11:39 -04:00
Andrew Kelley
c6f9a4c044 cancel detects suspend bit 2018-07-28 01:26:11 -04:00
Andrew Kelley
6fed777637 cancel detects if the target handle has already returned 2018-07-28 01:22:51 -04:00
Andrew Kelley
f0c049d02b detect double await 2018-07-27 18:37:30 -04:00
Andrew Kelley
e5beca886d suspend checks the cancel bit 2018-07-27 18:07:30 -04:00
Andrew Kelley
e491c38189 resume detects resuming when not suspended 2018-07-27 18:01:39 -04:00
Andrew Kelley
341bd0dfa4 await sets the await bit 2018-07-27 17:47:27 -04:00
Andrew Kelley
0b7a9c0722 cancel sets the cancel bit 2018-07-27 17:42:09 -04:00
Andrew Kelley
02c5bda704 remove ability to break from suspend blocks
closes #803
2018-07-27 17:27:03 -04:00
Andrew Kelley
442e244b4d suspend sets suspend bit 2018-07-27 17:16:00 -04:00
Andrew Kelley
10764ee0e6 resume clears suspend bit 2018-07-27 17:00:41 -04:00
Andrew Kelley
7113f109a4 update coroutine return codegen with new status bits 2018-07-27 15:50:26 -04:00
Andrew Kelley
b3f4182ca1 coroutines have 3 more bits of atomic state 2018-07-26 22:26:00 -04:00
Andrew Kelley
2cbad364c1 add compile error for ignoring return value of while loop bodies
closes #1049
2018-07-26 18:29:07 -04:00
Andrew Kelley
fd575fe1f3 add compile error for missing parameter name of generic function 2018-07-25 18:15:55 -04:00
Andrew Kelley
84195467ad add compile error for non-inline for loop on comptime type 2018-07-25 17:08:55 -04:00
Andrew Kelley
2257660916 fix assertion failure when some compile errors happen
I don't actually know of a test case to trigger this

self-hosted won't have this problem because get_pointer_to_type
will return error.SemanticAnalysisFailed
2018-07-25 13:12:03 -04:00
Andrew Kelley
0a880d5e60 fix generation of error defers for fns inside fns
closes #878
2018-07-19 18:06:41 -04:00
Andrew Kelley
cbfe9a4077 fix @setEvalBranchQuota not respected in generic fn calls
closes #1257
2018-07-17 23:37:17 -04:00
kristopher tate
69e3b4e7dc revert commit 860d3da9156a0b1f4a1e3e644b423da3e768bb86 ; please see #1249 for more information; (#1255) 2018-07-17 10:27:18 -04:00
Andrew Kelley
0fa24b6b75 allow implicit cast of undefined to optional 2018-07-16 19:26:15 -04:00
Andrew Kelley
e9a03cccf3 all integer sizes are available as primitives
* fix wrong implicit cast for `@IntType` bit_count parameter.
 * fix incorrect docs for `@IntType` bit_count parameter.

closes #1242
closes #745
closes #1240
2018-07-16 10:53:15 -04:00
Andrew Kelley
c87102c304 ir_get_ref: delete unnecessary and probably buggy code 2018-07-13 14:53:54 -04:00
Andrew Kelley
171f33b961 ir: remove unnecessary and probably buggy code 2018-07-13 14:18:37 -04:00
Andrew Kelley
860d3da915 ir: remove dead code 2018-07-13 13:37:01 -04:00
Andrew Kelley
5354d1f5fc allow == for comparing optional pointers
closes #658
2018-07-13 12:34:42 -04:00
Andrew Kelley
ce11d6d16c ir: refactor lvalues 2018-07-11 21:37:47 -04:00
Andrew Kelley
0ce6934e26 allow var args calls to async functions 2018-07-10 11:44:47 -04:00
Andrew Kelley
28f9230b40 fix crash when calling comptime-known undefined function ptr
closes #880
closes #1212
2018-07-10 10:12:08 -04:00
Andrew Kelley
3f4d0ecd7e Merge remote-tracking branch 'origin/master' into m-n-threading 2018-07-09 17:14:42 -04:00
Andrew Kelley
0ac1b83885 fix non-portable format specifier 2018-07-09 17:13:31 -04:00
Andrew Kelley
2ee67b7642 langref: docs for invalid error set cast and incorrect pointer alignment
also add detection of incorrect pointer alignment at compile-time
of pointers that were constructed with `@intToPtr`.
2018-07-09 11:13:29 -04:00
Andrew Kelley
9eb51e20ed fix crash on @ptrToInt of a *void
closes #1192
2018-07-09 10:44:06 -04:00
Andrew Kelley
eb326e1553 M:N threading
* add std.atomic.QueueMpsc.isEmpty
 * make std.debug.global_allocator thread-safe
 * std.event.Loop: now you have to choose between
   - initSingleThreaded
   - initMultiThreaded
 * std.event.Loop multiplexes coroutines onto kernel threads
 * Remove std.event.Loop.stop. Instead the event loop run() function
   returns once there are no pending coroutines.
 * fix crash in ir.cpp for calling methods under some conditions
 * small progress self-hosted compiler, analyzing top level declarations
 * Introduce std.event.Lock for synchronizing coroutines
 * introduce std.event.Locked(T) for data that only 1 coroutine should
   modify at once.
 * make the self hosted compiler use multi threaded event loop
 * make std.heap.DirectAllocator thread-safe

See #174

TODO:
 * call sched_getaffinity instead of hard coding thread pool size 4
 * support for Windows and MacOS
 * #1194
 * #1197
2018-07-07 00:32:19 -04:00
Andrew Kelley
d8295c1889 add @popCount intrinsic 2018-07-07 00:25:32 -04:00
Andrew Kelley
1cf7511dc9 add compile error notes for where struct definitions are
closes #1202
2018-07-06 16:20:46 -04:00