Andrew Kelley
7b2cb7e679
remove --zig-install-prefix arg now that we find std at runtime
2018-04-12 11:00:11 -04:00
Andrew Kelley
e48e707c32
allow integer and float literals to be passed to var params
...
closes #623
2018-04-11 14:47:37 -04:00
Andrew Kelley
e85a10e9f5
async tcp server proof of concept
2018-04-09 00:52:45 -04:00
Andrew Kelley
acd8f6ef18
fixups from rebase
2018-04-08 18:49:20 -04:00
Andrew Kelley
b85ef656ca
running into the llvm corosplit error again
2018-04-08 18:30:54 -04:00
Andrew Kelley
0d22a00f6f
*WIP* async/await TCP server
2018-04-08 18:26:24 -04:00
Andrew Kelley
ee1a4f4c1d
error return traces work with async return case
2018-04-08 17:44:29 -04:00
Andrew Kelley
9e98ea552d
fix calling convention at callsite of zig-generated fns
2018-04-08 16:40:59 -04:00
Andrew Kelley
ada441157f
put the error return addresses in the coro frame
2018-04-08 16:04:48 -04:00
Andrew Kelley
e4083b7391
codegen: fix not putting llvm allocas together
2018-04-08 16:04:48 -04:00
Andrew Kelley
d26905c102
error return traces for the early return case
...
it would work but LLVM is not correctly spilling the addresses.
See #821
2018-04-08 16:04:48 -04:00
Ben Noordhuis
8980281184
fix llvm assert on version string with git sha
...
LLVM's CodeViewDebug pass misparses the version string when it contains
a git revision so stop doing that. This only affected Windows builds.
closes #898
2018-04-06 00:31:55 +02:00
Marc Tiehuis
2e5115b068
Add run compiler command
...
'zig run file.zig' builds a file and stores the artifacts in the global
cache. On successful compilation the binary is executed.
'zig run file.zig -- a b c' does the same, but passes the arguments a,
b and c as runtime arguments to the program. Everything after an '--' are
treated as runtime arguments.
On a posix system, a shebang can be used to run a zig file directly. An
example shebang would be '#!/usr/bin/zig run'. You may not be able pass
extra compile arguments currently as part of the shebang. Linux for example
treats all arguments after the first as a single argument which will result
in an 'invalid command'.
Currently there is no customisability for the cache path as a compile
argument. For a posix system you can use `TMPDIR=. zig run file.zig` to
override, in this case using the current directory for the run cache.
The input file is always recompiled, even if it has changed. This is
intended to be cached but further discussion/thought needs to go into
this.
Closes #466 .
2018-04-01 17:03:06 +12:00
Andrew Kelley
67f11190d1
musl-friendly dynamic linking
2018-03-31 16:34:55 -04:00
Andrew Kelley
8f962a957a
fix regressions on windows
2018-03-31 11:26:02 -04:00
Andrew Kelley
c3724ec506
implement os_self_exe_path in the c++ compiler for darwin
...
ported from the zig std lib
this fixes looking for zig std lib at runtime on darwin
2018-03-31 02:12:44 -04:00
Andrew Kelley
b01c50d6fa
find libc and zig std lib at runtime
...
this removes the following configure options:
* ZIG_LIBC_LIB_DIR
* ZIG_LIBC_STATIC_LIB_DIR
* ZIG_LIBC_INCLUDE_DIR
* ZIG_DYNAMIC_LINKER
* ZIG_EACH_LIB_RPATH
* zig's reliance on CMAKE_INSTALL_PREFIX
these options are still available as command line options, however,
the default will attempt to execute the system's C compiler to
collect system defaults for these values.
closes #870
2018-03-30 17:10:54 -04:00
Andrew Kelley
ccadcbc715
fix examples and rename std.rand.Rand to std.rand.Random
2018-03-29 12:33:29 -04:00
Andrew Kelley
032fccf615
fix compile time array concatenation for slices
...
closes #866
2018-03-28 23:25:12 -04:00
Andrew Kelley
5627347bab
Merge pull request #865 from bnoordhuis/zig-build-stage2
...
skeleton stage 2 support for 'zig build'
2018-03-28 21:02:09 -04:00
Jimmi Holst Christensen
72ce146293
Fixed looking for windows sdk when targeting linux
2018-03-29 00:53:06 +02:00
Ben Noordhuis
db70b909a0
non-zero exit when build.zig cannot be created
...
Make the stage 1 compiler exit with a non-zero status code
when `zig build --init` cannot create a new build.zig file.
2018-03-28 18:30:41 +02:00
Andrew Kelley
6cb99fdac3
fix crash when compile error in analyzing @panic call
2018-03-27 15:07:45 -04:00
Andrew Kelley
aa2995ee39
fix invalid codegen for error return traces across suspend points
...
See #821
Now the code works correctly, but error return traces are missing
the frames from coroutines.
2018-03-24 22:07:12 -04:00
Andrew Kelley
897e783763
add promise->T syntax parsing
...
closes #857
2018-03-24 19:25:53 -04:00
Andrew Kelley
18af2f9a27
fix async fns with inferred error sets
...
closes #856
2018-03-24 18:28:32 -04:00
Andrew Kelley
b1c07c0ea9
move error ret tracing codegen to zig ir
...
progress towards #821
2018-03-24 18:28:32 -04:00
Marc Tiehuis
3d1732ef6c
Fix OpqaueType usage in exported c functions
...
We prefer `struct typename`. If a typedef is required, this must be done
manually after generation.
2018-03-23 20:27:11 +13:00
Andrew Kelley
7a99d63c76
ability to use async function pointers
...
closes #817
2018-03-22 16:56:03 -04:00
Andrew Kelley
f885a1ab61
change async function call syntax
...
* instead of `async(allocator) call()`, now it is
`async<allocator> call()`.
* Fixes syntax ambiguity when leaving off the allocator
* Fixes parse failure when call is a field access
This sets a precedent for using `<` to pass arguments
to a keyword. This will affect `enum`, `union`, and
`fn` (see #661 )
2018-03-21 19:56:41 -04:00
Andrew Kelley
efebb6d341
fix tests broken by previous commit
2018-03-14 03:37:54 -04:00
Andrea Orru
c828c23f71
Tests for zero-bit field compiler error
2018-03-13 22:07:40 -07:00
Andrea Orru
7ac44037db
Compiler error when taking @offsetOf of void struct member
...
closes #739
2018-03-13 21:20:06 -07:00
Andrea Orru
2a6ad23b52
Merge branch 'master' of https://github.com/zig-lang/zig
2018-03-13 16:16:22 -07:00
Andrew Kelley
7f7823e23c
fix casting a function to a pointer causing compiler crash
...
closes #777
2018-03-13 19:15:20 -04:00
Andrea Orru
2cdd50c9b2
Panic instead of segfault when returning generic type from functions
...
closes #829
2018-03-13 16:14:21 -07:00
Marc Tiehuis
d6e84e325b
Add WebAssembly output workaround for LLVM 6
2018-03-13 21:53:42 +13:00
Andrew Kelley
bcce77700f
some return types disqualify comptime fn call caching
...
closes #828
2018-03-12 12:56:25 -04:00
Andrew Kelley
5834ff0cc5
don't memoize comptime fn calls that access comptime mutable state
...
closes #827
2018-03-12 08:35:41 -04:00
Andrew Kelley
1bf2810f33
fix comptime slicing not preserving comptime mutability
...
* fix comptime slice of slice not preserving mutatibility
of the comptime data
* fix comptime slice of pointer not preserving mutability
of the comptime data
closes #826
2018-03-12 01:21:10 -04:00
Andrew Kelley
49c3922037
fix incorrect setEvalBranchQuota compile error
...
closes #688
2018-03-12 00:08:52 -04:00
Andrea Orru
d0621391bc
zen-specific: main -> _start
2018-03-10 16:59:28 -08:00
Andrew Kelley
84e952c230
fix await multithreaded data race
...
coro return was reading from a value that coro await was
writing to. that wasn't how it was designed to work, it
was an implementation mistake.
this commit also has some work-in-progress code for fixing
error return traces across suspend points.
2018-03-10 01:38:40 -05:00
Andrew Kelley
60b2031831
improvements to stack traces
...
* @panic generates an error return trace
* printing an error return trace no longer interferes with
normal stack traces.
* instead of ignore_frame_count, we look at the return address
when you call panic, and that's the first stack trace function
makes stack traces much cleaner - the error return trace
flows gracefully into the stack trace
2018-03-10 01:38:40 -05:00
Andrew Kelley
6db9be8900
don't memoize comptime functions if they can mutate state via parameters
...
closes #639
2018-03-09 14:20:44 -05:00
Andrew Kelley
aaf2230ae8
fix partial inlining of binary math operator using old value
...
the code was abusing the internal IR API. fixed now.
closes #699
2018-03-08 17:15:55 -05:00
Andrew Kelley
028ec0f2c3
enums with 1 field and explicit tag type still get the tag type
...
closes #820
2018-03-08 15:22:42 -05:00
Andrew Kelley
aa9902b586
translate-c: add missing case labels
2018-03-08 11:47:07 -05:00
Andrew Kelley
b57cb04afc
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-08 10:59:24 -05:00
Jimmi Holst Christensen
2e010c60ae
Translate C now correctly converts ints, floats, ptrs and enums to bools
...
* Boolean "and" and "or" should also work with these types.
* This new method also simplifies to output code.
2018-03-08 15:34:00 +01:00
Jimmi Holst Christensen
b2887620f3
Translate C will now handle ignored return values
2018-03-08 13:15:30 +01:00
Jimmi Holst Christensen
689e241ff8
Merge branch 'master' of github.com:zig-lang/zig
2018-03-08 10:29:43 +01:00
Jimmi Holst Christensen
51b2f1b80b
Translate C can now translate switch statements again
2018-03-08 10:29:29 +01:00
Andrew Kelley
790aaeacae
add compile error for using @tagName on extern union
...
closes #742
2018-03-07 14:35:48 -05:00
Jimmi Holst Christensen
bb80daf509
Ast Render no longer outputs erroneous semicolon
...
closes #813
2018-03-07 10:39:32 +01:00
Andrew Kelley
d96dd5bc32
fix missing compile error for returning error from void async function
...
closes #799
2018-03-06 21:44:27 -05:00
Andrew Kelley
6b5cfd9d99
turn assertion into compile error for using var as return type
...
closes #758
2018-03-06 20:41:49 -05:00
Andrew Kelley
eff3530dfa
var is no longer a pseudo-type, it is syntax
...
closes #779
2018-03-06 18:31:31 -05:00
Andrew Kelley
44ae891bd7
fix assertion when taking slice of zero-length array
...
closes #788
2018-03-06 17:19:45 -05:00
Andrew Kelley
cc0f660ad2
unless hf is specified in target environ, assume soft floating point
...
closes #804
2018-03-06 16:57:41 -05:00
Andrew Kelley
07e47c058c
ptrCast builtin now gives an error for removing const qualifier
...
closes #384
2018-03-06 16:37:03 -05:00
Jimmi Holst Christensen
1d378d8f26
Removed fixed todo
2018-03-06 12:33:09 +01:00
Jimmi Holst Christensen
5ab25798e3
We now also use trans_to_bool_expr on bool not
2018-03-06 12:04:14 +01:00
Jimmi Holst Christensen
bf47cf418a
expr to bool is now it's own function.
...
* Now while and for loops work on ints and floats, like if statements
* This fixes the loop problem in #813
2018-03-06 11:57:51 +01:00
Jimmi Holst Christensen
61ecc48671
Added appropriate TODO comment to UO_LNot
2018-03-06 11:15:13 +01:00
Jimmi Holst Christensen
ed1386eeff
Simple translation of UO_LNot
2018-03-06 11:13:10 +01:00
Andrew Kelley
1c244d34b3
Merge branch 'master' into llvm6
2018-03-03 16:30:59 -05:00
Andrew Kelley
101b7745c4
add optnone noinline to async functions
...
this works around LLVM optimization assertion failures.
https://bugs.llvm.org/show_bug.cgi?id=36578
closes #800
2018-03-02 13:40:03 -05:00
Andrew Kelley
a217c764db
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-01 22:25:15 -05:00
Andrew Kelley
de5c0c9f40
Merge remote-tracking branch 'origin/master' into async
2018-03-01 20:47:35 -05:00
Andrew Kelley
8a0e1d4c02
await keyword works
2018-03-01 15:46:35 -05:00
Andrew Kelley
a7c87ae1e4
fix not casting result of llvm.coro.promise
2018-03-01 10:23:47 -05:00
Andrew Kelley
253d988e7c
implementation of await
...
but it has bugs
2018-03-01 03:28:13 -05:00
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
58dc2b719c
better coroutine codegen, now passing first coro test
...
we have to use the Suspend block with llvm.coro.end to
return from the coro
2018-02-28 18:22:43 -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
556f22a751
different way of fixing previous commit
...
get_fn_type doesn't need the complete parameter type, it
can just ensure zero bits known.
2018-02-28 00:28:26 -05:00
Andrew Kelley
1b8a241f6f
Merge branch 'fix795' of https://github.com/bnoordhuis/zig into bnoordhuis-fix795
2018-02-28 00:22:53 -05:00
Ben Noordhuis
90598b4631
fix assert on self-referencing function ptr field
...
The construct `struct S { f: fn(S) void }` is not legal because structs
are not copyable but it should not result in an ICE.
Fixes #795 .
2018-02-28 00:56:00 +01:00
Andrew Kelley
d243453862
Revert "llvm coroutine workaround: sret functions return sret pointer"
...
This reverts commit 132e604aa3
.
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 4ac6c4d6bf
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 c2f5634fb3
.
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
4e43bde924
workaround for llvm: delete coroutine allocation elision
...
maybe this can be reverted, but it seems to be related
to llvm's coro transformations crashing.
See #727
2018-02-26 21:31:00 -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
Ben Noordhuis
9aa65c0e8e
allow implicit cast from &const to ?&const &const
...
Allow implicit casts from n-th degree const pointers to nullable const
pointers of degree n+1. That is:
fn f() void {
const s = S {};
const p = &s;
g(p); // Works.
g(&p); // So does this.
}
fn g(_: ?&const &const S) void { // Nullable 2nd degree const ptr.
}
Fixes #731 some more.
2018-02-26 19:56:26 +01:00
Andrew Kelley
3e86fb500d
implement coroutine suspend
...
see #727
2018-02-26 02:46:21 -05:00
Andrew Kelley
c60496a297
parse await and suspend syntax
...
See #727
2018-02-26 00:04:11 -05:00
Andrew Kelley
6fef7406c8
move coroutine init code to after coro.begin
2018-02-25 20:29:14 -05:00
Andrew Kelley
6b436146a8
fix invalid memory write in coroutines implementation
2018-02-25 20:28:44 -05:00
Andrew Kelley
6cbea99ed6
async functions are allowed to accept zig types
2018-02-25 20:27:53 -05:00
Andrew Kelley
b018c64ca2
add coroutine LLVM passes
2018-02-25 18:09:39 -05:00
Andrew Kelley
fe354ebb5c
coroutines: fix llvm error of instruction not dominating uses
...
See #727
2018-02-25 17:57:05 -05:00
Andrew Kelley
704a8acb59
fix handle_is_ptr for promise type
2018-02-25 17:34:18 -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
9cfd7dea19
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-23 12:56:41 -05:00
Andrew Kelley
40dbcd09da
fix type_is_codegen_pointer being used incorrectly
...
The names of these functions should probably change, but at least
the semantics are correct now:
* type_is_codegen_pointer - the type is either a fn, ptr, or promise
* get_codegen_ptr_type -
- ?&T and &T returns &T
- ?promise and promise returns promise
- ?fn()void and fn()void returns fn()void
- otherwise returns nullptr
2018-02-23 12:49:21 -05:00
Ben Noordhuis
f11b948019
allow implicit cast from S
to ?&const S
...
Allow implicit casts from container types to nullable const pointers to
said container type. That is:
fn f() void {
const s = S {};
g(s); // Works.
g(&s); // So does this.
}
fn g(_: ?&const S) void { // Nullable const pointer.
}
Fixes #731 .
2018-02-23 15:55:57 +01:00
Andrew Kelley
99985ad6fc
implement Zig IR for async functions
...
See #727
2018-02-23 03:03:06 -05:00
Ben Noordhuis
0845cbe277
name types inside functions after variable
...
Before this commit:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "f()", unexpected.
}
And now:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "S", expected.
}
Fixes #675 .
2018-02-22 19:54:02 +01:00
Andrew Kelley
ca1b77b2d5
IR analysis for coro.begin
...
See #727
2018-02-22 11:54:27 -05:00
Andrew Kelley
88e7b9bf80
ir analysis for coro_id and coro_alloc
...
See #727
2018-02-22 09:36:58 -05:00
Andrew Kelley
37c07d4f3f
coroutines: analyze get_implicit_allocator instruction
...
see #727
2018-02-22 09:30:55 -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
af10b0fec2
add async, await, suspend, resume, cancel keywords
...
See #727
2018-02-19 23:19:59 -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
cc26148ba7
fix compiler crash when struct contains...
...
ptr to another struct which contains original struct
2018-02-15 12:14:20 -05:00
Andrew Kelley
1c1c0691cc
fix crash when doing comptime float rem comptime int
...
closes #776
2018-02-14 23:12:51 -05:00
Andrew Kelley
ca597e2bfb
std.zig.parser understands try. zig fmt respects a double line break.
2018-02-14 23:00:53 -05:00
Andrew Kelley
9fa35adbd4
fix sometimes not type checking function parameters
...
closes #774
regression introduced in cfb2c67692
2018-02-14 16:24:43 -05:00
Andrew Kelley
e7ab2bc553
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-13 11:53:20 -05:00
Andrew Kelley
02f70cda8a
zig_llvm.cpp uses new(std::nothrow)
...
This fixes a mismatched malloc/delete because
we were allocating with malloc and then llvm was
freeing with delete.
2018-02-13 10:54:46 -05:00
Andrew Kelley
ef6260b3a7
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-11 23:49:20 -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
e7bf8f3f04
fix compiler crash switching on global error with no else
2018-02-09 13:49:58 -05:00
Andrew Kelley
3919afcad2
fix crash with error peer type resolution
...
closes #765
2018-02-09 11:16:04 -05:00
Andrew Kelley
32c988a2d7
fix build runner on windows
2018-02-09 00:24:23 -05:00
Andrew Kelley
ee982ae162
syntax: parse ?error!i32
as ?(error!i32)
2018-02-08 22:30:08 -05:00
Andrew Kelley
0efe441dfd
if statements support comptime known test error, runtime payload
2018-02-08 22:18:13 -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
f9be970375
Merge remote-tracking branch 'origin/master' into error-sets
2018-02-08 20:45:26 -05:00
Andrew Kelley
57edd4dcb3
error sets - fix bad value for constant error literal
2018-02-08 18:13:07 -05:00
Andrew Kelley
fee875770c
error set casting building
2018-02-08 11:09:18 -05:00
Andrew Kelley
0d5ff6f462
error sets - most tests passing
2018-02-08 02:08:45 -05:00
Andrew Kelley
68238d5678
fix comptime fn execution not returning error unions properly
2018-02-07 22:33:05 -05:00
Jeff Fowler
c88e6e8aee
improve behavior of zig build
( #754 )
...
See #748
2018-02-07 17:45:20 -05:00
Andrew Kelley
aa043a6339
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-07 17:27:30 -05:00
Ben Noordhuis
0090c2d70b
DRY 'is slice?' conditionals in parser ( #750 )
2018-02-07 14:38:49 -05:00
Andrew Kelley
f99b8b006f
error sets - fix most std lib compile errors
2018-02-05 18:09:13 -05:00
Andrew Kelley
6940212ecb
error sets: fix peer resolution of error unions
2018-02-05 17:42:13 -05:00
Andrew Kelley
44d8d654a0
fix test failure, organize code, add new compile error
2018-02-05 09:26:39 -05:00
Andrew Kelley
b7bc259093
make OutStream and InStream take an error set param
2018-02-05 07:38:24 -05:00
Andrew Kelley
893f1088df
error sets - peer resolution for error unions
2018-02-05 01:49:14 -05:00
Andrew Kelley
15075d2c3d
error sets - compile error for equality with no common errors
2018-02-05 00:05:04 -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
61718742f7
*WIP* error sets - std lib test compile but try to link against windows
2018-02-03 14:42:20 -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
abf5ae6897
*WIP* error sets - support fns called at comptime
2018-02-03 11:51:29 -05:00
Andrew Kelley
b8f59e14cd
*WIP* error sets - correctly resolve inferred error sets
2018-02-02 18:13:32 -05:00
Andrew Kelley
39d5f44863
*WI* error sets - basic support working
2018-02-02 14:26:14 -05:00
Andrew Kelley
cfb2c67692
*WIP* error sets - rewrite "const cast only" function
2018-02-02 11:50:19 -05:00
Andrew Kelley
406496ca33
*WIP* error sets - allow peer type resolution to create new error set
2018-02-01 23:32:09 -05:00
Andrew Kelley
13b36d458f
*WIP* error sets - fix implicit cast
2018-02-01 10:23:25 -05:00
Andrew Kelley
5f518dbeb9
*WIP* error sets converting std lib
2018-01-31 22:48:40 -05:00
Andrew Kelley
44f38b04b0
fix assertion fail when using global var number literal
...
closes #697
2018-01-31 11:13:39 -05:00
Andrew Kelley
5161d70620
*WIP* error sets
2018-01-31 01:51:31 -05:00
Andrew Kelley
40ca39d3d5
fix error message mentioning unreachable instead of noreturn
2018-01-31 01:44:52 -05:00
Andrew Kelley
3ef6a00bb8
add compile error for duplicate struct, enum, union fields
...
closes #730
2018-01-30 11:52:03 -05:00
Andrew Kelley
1c60f31450
add compile error for calling naked function
2018-01-29 14:01:12 -05:00
Andrew Kelley
96c9a9bdb3
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-29 13:26:09 -05:00
Andrew Kelley
abe6c2d585
allow packed containers in extern functions
2018-01-29 10:57:09 -05:00
Andrew Kelley
f66ac9a5e7
fix crash when align 1 field before self referential...
...
...align 8 field as slice return type
closes #723
2018-01-27 18:30:36 -05:00
Andrew Kelley
ad3e2a5da0
fix compiler crash on function with invalid return type
...
closes #722
2018-01-26 10:37:18 -05:00
Andrew Kelley
47be64af5a
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-25 11:51:41 -05:00
Andrew Kelley
3671582c15
syntax: functions require return type. remove ->
...
The purpose of this is:
* Only one way to do things
* Changing a function with void return type to return a possible
error becomes a 1 character change, subtly encouraging
people to use errors.
See #632
Here are some imperfect sed commands for performing this update:
remove arrow:
```
sed -i 's/\(\bfn\b.*\)-> /\1/g' $(find . -name "*.zig")
```
add void:
```
sed -i 's/\(\bfn\b.*\))\s*{/\1) void {/g' $(find ../ -name "*.zig")
```
Some cleanup may be necessary, but this should do the bulk of the work.
2018-01-25 04:10:11 -05:00
Andrew Kelley
e5bc5873d7
rename "debug safety" to "runtime safety"
...
closes #437
2018-01-25 01:46:12 -05:00
Andrew Kelley
b71a56c9df
cleanups that I meant to put in the previous commit
2018-01-23 23:12:38 -05:00
Andrew Kelley
b3a6faf13e
replace %defer with errdefer
...
See #632
now we have 1 less sigil
2018-01-23 23:08:09 -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
cacba6f435
fix crash on union-enums with only 1 field
...
closes #713
2018-01-22 17:23:23 -05:00
Andrew Kelley
5b7ae86af4
fix crash when switching on enum with 1 field and no switch prongs
...
closes #712
2018-01-21 14:44:24 -05:00
Andrew Kelley
517e8ea426
remove unused function, fixes mingw build
2018-01-20 02:49:53 -05:00
Andrew Kelley
ddd04a7b46
fix docgen on windows
2018-01-19 22:17:31 -05:00
Andrew Kelley
890bf001db
os_rename uses MoveFileEx on windows
2018-01-19 16:53:08 -05:00
Andrew Kelley
9f5c0b6e60
windows-compatible os_rename function
...
windows libc rename() requires destination file path to not exist
2018-01-19 16:31:21 -05:00
Andrew Kelley
ea623f2d39
all doc code examples are now tested
...
improve color scheme of docs
make docs depend on no external files
fix broken example code in docs
closes #465
2018-01-19 03:21:47 -05:00
Andrew Kelley
4b64c777ee
add compile error for shifting by negative comptime integer
...
closes #698
2018-01-18 17:47:21 -05:00
Andrew Kelley
0fc645ab70
emit a compile error for @panic called at compile time
...
closes #706
2018-01-18 17:15:36 -05:00
Andrew Kelley
0b8f19fcba
fix null debug info for 0-length array type
...
closes #702
2018-01-18 15:08:20 -05:00
Andrew Kelley
48cd808185
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-17 13:11:21 -05:00
Jimmi Holst Christensen
fa2c3be341
More tests, and fixed none negative bigint xor
2018-01-17 14:31:47 +01:00
Jimmi Holst Christensen
db0fc32ab2
fixed xor with zero
2018-01-17 14:00:27 +01: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
b897e98d30
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-16 12:26:04 -05:00
Andrew Kelley
ee9ab15679
Merge pull request #695 from Hejsil/tranlate-c-fixes
...
Tranlate c fixes - undefined variable initialization and non-bool if statements
2018-01-16 10:32:37 -05:00
Jimmi Holst Christensen
3974b7d31d
translate_c can now translate if statements on integers and floats
2018-01-16 15:48:28 +01:00
Jimmi Holst Christensen
821cbd7a1b
Output "undefined" on uninitialized variables
2018-01-16 15:01:02 +01:00
Andrew Kelley
6a95b88d1b
fix bigint remainder division
...
See #405
2018-01-16 03:09:44 -05:00
Andrew Kelley
84d8584c5b
implement bigint div and rem
...
See #405
2018-01-16 02:22:19 -05:00
Andrew Kelley
92fc5947fc
fix compiler crash related to @alignOf
2018-01-15 20:44:21 -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
Andrew Kelley
fa024f8092
error return trace pointer prefixes other params
...
instead of being last. This increases the chances that it can
remain in the same register between calls.
2018-01-14 14:35:43 -05:00
Andrew Kelley
4551489b92
typecheck the panic function
2018-01-13 01:00:50 -05:00
Andrew Kelley
32ea6f54e5
*WIP* proof of concept error return traces
2018-01-12 02:12:11 -05:00
Andrew Kelley
7ec783876a
functions which can return errors have secret stack trace param
...
See #651
2018-01-11 23:04:08 -05:00
Andrew Kelley
eb3726c502
Merge branch 'master' into llvm6
2018-01-11 22:26:55 -05:00
Andrew Kelley
3268276b58
the same string literal codegens to the same constant
...
this makes it so that you can send the same string literal
as a comptime slice and get the same type
2018-01-11 21:02:30 -05:00
Andrew Kelley
d1d3dbc7b5
Merge branch 'master' into llvm6
2018-01-09 09:56:24 -05:00
Andrew Kelley
3c094116aa
remove %% prefix operator
...
See #632
closes #545
closes #510
this makes #651 higher priority
2018-01-09 00:51:51 -05:00
Andrew Kelley
5a8d87f504
Merge branch 'master' into llvm6
2018-01-08 10:34:45 -05:00
Andrew Kelley
598170756c
a catch unreachable
generates unwrap-error code
...
See #545
See #510
See #632
2018-01-07 18:13:54 -05:00
Andrew Kelley
632d143bff
replace a %% b
with a catch b
...
See #632
better fits the convention of using keywords for control flow
2018-01-07 17:28:20 -05:00
Andrew Kelley
66717db735
replace %return
with try
...
See #632
better fits the convention of using keywords for control flow
2018-01-07 16:53:13 -05:00
Andrea Orru
de1f57926f
Merge branch 'master' of github.com:zig-lang/zig
2018-01-07 04:43:15 -05:00
Andrea Orru
3182857224
Adding zen support
2018-01-07 04:43:08 -05:00
Andrew Kelley
bb39e503c0
fix struct inside function referencing local const
...
closes #672
the crash and compile errors are fixed but structs
inside functions still get named after the functions
they're in. this will be fixed later.
2018-01-07 00:28:37 -05:00
Andrea Orru
e932919e68
Darwin -> MacOSX, added Zen. See #438
2018-01-06 23:10:53 -05:00
Andrew Kelley
38658a597b
Merge branch 'master' into llvm6
2018-01-06 02:59:17 -05:00
Andrew Kelley
17e68c4a11
disable NewGVN
...
closes #673
2018-01-06 00:15:37 -05:00
Andrew Kelley
2200c2de6f
translate-c: update to clang 6.0.0 which has more binary operators
2018-01-05 13:53:04 -05:00
Andrew Kelley
5d9a8cbe1a
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-05 13:46:21 -05:00
Andrew Kelley
2c35e24bd9
workaround for microsoft releasing windows SDK with wrong version
2018-01-05 11:35:46 -05:00
Andrew Kelley
1b120d1e49
update windows build to llvm 5.0.1
...
llvm-config.exe does not handle diaguids.lib for us so we have to
duplicate the work.
2018-01-04 22:46:26 -05:00
Andrew Kelley
477e3f64fc
self-hosted build: use llvm-config from stage1
2018-01-03 21:32:50 -05:00
Andrew Kelley
8eae4a0967
Merge branch 'master' into llvm6
2018-01-03 20:53:53 -05:00
Andrew Kelley
5a800db48c
build: std files and c header files are only specified once
...
In the CMakeLists.txt file. And then we communicate the list
to the zig build.
2018-01-03 19:39:04 -05:00
Andrew Kelley
5b156031e9
enum tag values are expressions so no parentheses needed
2018-01-03 16:05:37 -05:00
Andrew Kelley
36ff26609b
fix self hosted compiler on windows
2018-01-03 04:55:49 -05:00
Andrew Kelley
1d77f8db28
Merge branch 'master' into llvm6
2018-01-03 00:42:00 -05:00
Andrew Kelley
0ea50b3157
ir: new pass iteration strategy
...
Before:
* IR basic blocks are in arbitrary order
* when doing an IR pass, when a block is encountered, code
must look at all the instructions in the old basic block,
determine what blocks are referenced, and queue up those
old basic blocks first.
* This had a bug (See #667 )
Now:
* IR basic blocks are required to be in an order that guarantees
they will be referenced by a branch, before any instructions
within are referenced.
ir pass1 is updated to meet this constraint.
* When doing an IR pass, we iterate over old basic blocks
in the order they appear. Blocks which have not been
referenced are discarded.
* After the pass is complete, we must iterate again to look
for old basic blocks which now point to incomplete new
basic blocks, due to comptime code generation.
* This last part can probably be optimized - most of the time
we don't need to iterate over the basic block again.
closes #667
2018-01-02 21:08:12 -05:00
Andrew Kelley
6bfaf262d5
Merge branch 'master' into llvm6
2017-12-26 21:44:08 -05:00
Andrew Kelley
6fece14cfb
self-hosted: build against zig_llvm and embedded LLD
...
Now the self-hosted compiler re-uses the same C++ code for interfacing
with LLVM as the C++ code.
It also links against the same LLD library files.
2017-12-26 19:44:08 -05:00
Andrew Kelley
2a25398c86
fix segfault when passing union enum with sub byte...
...
...field to const slice parameter
we use a packed struct internally to represent a const array
of disparate union values, and needed to update the internal
getelementptr instruction to recognize that.
closes #664
2017-12-24 04:11:58 -05:00
Andrew Kelley
9dae796fe3
translate-c: set up debug scope for translated functions
2017-12-23 22:14:35 -05:00
Andrew Kelley
8b716f941d
Merge branch 'master' into llvm6
2017-12-23 21:21:32 -05:00
Andrew Kelley
87ba004d46
translate-c: set up debug scope for translated functions
2017-12-23 21:20:38 -05:00
Andrew Kelley
fe66046283
Merge remote-tracking branch 'origin/master' into llvm6
2017-12-23 12:00:25 -05:00
Andrew Kelley
760b307e8a
fix endianness of sub-byte integer fields in packed structs
...
closes #307
2017-12-22 18:27:33 -05:00
Andrew Kelley
d917815d81
explicitly return from blocks
...
instead of last statement being expression value
closes #629
2017-12-22 00:50:30 -05:00
Andrew Kelley
8bc523219c
add labeled loops, labeled break, labeled continue. remove goto
...
closes #346
closes #630
regression: translate-c can no longer translate switch statements.
after #629 we can ressurect and modify the code to utilize arbitrarily
returning from blocks.
2017-12-20 23:00:19 -05:00
Andrew Kelley
d686113bd2
fix crash when implicitly casting array of len 0 to slice
...
closes #660
2017-12-19 22:38:02 -05:00
Andrew Kelley
1cc450e6e7
fix assert when wrapping zero bit type in nullable
...
closes #659
2017-12-19 18:21:42 -05:00
Andrew Kelley
9d9201c3b4
bring back code that uses export and fix tests
...
partial revert of 1fdebc1dc4
2017-12-19 02:39:43 -05:00
Andrew Kelley
27ba4f0baf
export keyword works again
2017-12-19 01:49:42 -05:00
Andrew Kelley
c627f9ea18
wip bring back export keyword
2017-12-19 01:19:49 -05:00
Andrew Kelley
1fdebc1dc4
wip export rewrite
2017-12-18 09:59:57 -05:00