Andrew Kelley
f68d724647
parse-c: support function calls
2017-09-21 00:02:18 -04:00
Andrew Kelley
38059e6f97
parse-c: fix anonymous enums
2017-09-20 23:16:44 -04:00
Josh Wolfe
c3814eee26
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-20 19:49:55 -07:00
Josh Wolfe
c10b052cee
translate expr++ from c to zig
2017-09-20 19:49:41 -07:00
Andrew Kelley
9cdb5dec7a
parsec: cleaner shifting code for fixed size types
2017-09-20 22:44:24 -04:00
Josh Wolfe
e2f8bec7ac
optimize >>= operator for common case
2017-09-20 18:37:36 -07:00
Andrew Kelley
0228f8c9fd
all parsec tests passing
2017-09-20 21:16:26 -04:00
Andrew Kelley
b1e04865cc
parsec: don't make pointless block in fn body
2017-09-20 13:08:02 -04:00
Andrew Kelley
3c41c2d84b
Merge branch 'master' into c-to-zig
2017-09-20 12:52:54 -04:00
Andrew Kelley
86eb183668
coff linking passes -DEBUG
...
which makes a .pdb file
2017-09-18 22:05:55 -04:00
Andrew Kelley
46ddeb0baf
add --verbose-link option
...
only prints the link line
2017-09-18 21:06:53 -04:00
Andrew Kelley
c7d80cc421
fix crash when enum has invalid field
...
closes #468
2017-09-17 18:44:18 -04:00
Andrew Kelley
b8ee3a8143
add -mllvm support
...
useful for debugging crashes in llvm optimizer
2017-09-17 17:46:16 -04:00
Andrew Kelley
faaaf88327
fix use of uninitialized variable in alignCast
2017-09-17 16:13:55 -04:00
Andrew Kelley
7ee00730ac
add option to run tests in LLDB and turn it on for macos travis
2017-09-17 14:43:51 -04:00
Marc Tiehuis
71342f8249
Add dash arguments for cli
2017-09-17 12:26:13 +12:00
Andrew Kelley
5989b88352
do not depend on __int128
...
closes #477
2017-09-14 02:48:16 -04:00
Andrew Kelley
14cda27b64
depend on embedded SoftFloat-3d instead of __float128
...
See #302
See #467
2017-09-14 01:46:47 -04:00
Jonathan Marler
bb44e4b479
Fixed a couple compilation errors for MSVC 64-bit ( #475 )
2017-09-13 23:59:09 -04:00
Andrew Kelley
d9eabde319
add Child property of slice type
...
also rename child field to Child for pointer and array
2017-09-13 14:30:57 -04:00
Andrew Kelley
57ea6e8c9f
fix up msvc stuff to make it work on linux and macos too
2017-09-13 02:40:02 -04:00
Josh Wolfe
32c51e0156
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-11 21:37:37 -07:00
Josh Wolfe
4adffea8d0
analysis of result used
2017-09-11 21:37:11 -07:00
Andrew Kelley
bf52a74803
fix error messages
2017-09-12 00:07:37 -04:00
Josh Wolfe
99cb6e955a
oh, actually it was
2017-09-11 20:39:42 -07:00
Josh Wolfe
e52418097d
not my segfault
2017-09-11 20:08:45 -07:00
Josh Wolfe
7e3f45a49f
Merge branch 'master' into c-to-zig
2017-09-11 19:58:41 -07:00
Josh Wolfe
6f50457b61
wip c to zig stuff
2017-09-11 19:58:14 -07:00
Andrew Kelley
4bd23aefe7
local var
2017-09-11 22:58:06 -04:00
Jonathan Marler
7c81cd30de
Add support for MSVC
2017-09-11 09:26:26 -06:00
jean-dao
373785ae8d
c macros: support hex chars ( #459 )
...
* c macros: remove add_char redundancies
* c macros: support hex chars
* c macros: add test for hex chars
2017-09-10 16:35:56 -04:00
Andrew Kelley
4f44d49925
fix uninitialized variable
2017-09-10 15:01:37 -04:00
Andrew Kelley
011df61f8a
fix not verifying GlobalLinkage and AtomicOrder types
...
thanks to aep4Ayai on IRC
2017-09-10 14:04:19 -04:00
Andrew Kelley
b00b7bd290
variables are allowed to be pointers to opaque
2017-09-10 00:34:44 -04:00
Andrew Kelley
b5d9584e6f
support parens in C macros
...
closes #454
2017-09-10 00:20:09 -04:00
Andrew Kelley
bc0a60c7a6
more compile errors for non-const variables of things
...
closes #456
2017-09-09 22:46:08 -04:00
Andrew Kelley
9fb4d1fd6c
std: os.ChildProcess knows when its child died
...
using signal handlers
2017-09-07 23:10:51 -04:00
Andrew Kelley
e7c3aa7f7c
parsec: turn panics into warnings
2017-09-06 01:00:42 -04:00
Andrew Kelley
2c9bdad346
rename parseh to parsec
2017-09-05 22:55:03 -04:00
Andrew Kelley
48c44615a4
Merge branch 'c-to-zig'
2017-09-05 18:51:48 -04:00
Andrew Kelley
3ff465e288
add OpaqueType builtin
...
closes #326
2017-09-05 18:51:07 -04:00
Andrew Kelley
c3362c1cb6
fix void return node and param name nodes, fix dupe macros
...
all tests passing
2017-09-05 03:11:59 -04:00
Andrew Kelley
87970920c4
parseh: fix duplicate definitions
2017-09-05 02:34:06 -04:00
Andrew Kelley
5c386f9911
parseh: remove unneeded hash tables
2017-09-05 01:22:26 -04:00
Andrew Kelley
b64843bf70
parseh: fix generating functions from macros
2017-09-05 00:45:09 -04:00
Andrew Kelley
cc621cdee3
fix parseh bugs
2017-09-05 00:21:02 -04:00
Andrew Kelley
e1d5da20a5
rewrite parseh to use AST instead of direct types
...
some tests still failing
2017-09-02 04:11:23 -04:00
Josh Wolfe
0f38955ee5
translate while loops and implicit bitcasts
2017-09-01 12:51:45 -07:00
Josh Wolfe
fa8912ab78
translate some variable declaration cases
2017-09-01 12:03:21 -07:00
Josh Wolfe
7e1bf6d29b
progress toward variable declaration translation
2017-09-01 11:45:06 -07:00
Josh Wolfe
a260cfa4dd
Merge remote-tracking branch 'origin/c-to-zig' into c-to-zig
2017-09-01 11:42:48 -07:00
Josh Wolfe
0d0fffe4d2
start implementing variable declaration translation
2017-09-01 11:39:48 -07:00
Andrew Kelley
80d75cf3bf
here, have trans_qual_type
2017-09-01 14:39:17 -04:00
Andrew Kelley
60bdbe5405
parseh: emit_warning takes SourceLocation
2017-09-01 13:39:16 -04:00
Josh Wolfe
1449e71de8
cleanup whitespace
2017-09-01 10:27:04 -07:00
Andrew Kelley
46e9d9df51
c-to-zig: less than, negation, ternary
2017-09-01 04:38:57 -04:00
Andrew Kelley
ee9d1d0414
c-to-zig: return statement
2017-09-01 03:16:35 -04:00
Raul Leal
e93ece7514
Opaque ptr patch
2017-08-31 18:01:09 -04:00
Andrew Kelley
c42e809f13
setEvalBranchQuota must be called from top of comptime stack
2017-08-31 16:54:20 -04:00
Andrew Kelley
67b6dd28ec
allow array literals to have size and fix comptime bug
2017-08-31 16:30:46 -04:00
Andrew Kelley
eb0979189b
add windows to test targets
...
cross-compiling hello world with no libc for windows is working
2017-08-31 11:41:58 -04:00
Andrew Kelley
021155db5b
successfully cross-building behavior tests for windows
2017-08-30 17:01:14 -04:00
Andrew Kelley
97013951dd
tests use darwin, not macosx since that's what macbook reports as
2017-08-30 15:15:14 -04:00
Andrew Kelley
0e9bdb44a6
test suite cross-compile builds tests for other targets
2017-08-30 14:55:26 -04:00
Andrew Kelley
052b4ae941
align syntax: align(4) instead of align 4
...
closes #37
2017-08-30 04:54:33 -04:00
Andrew Kelley
3f5dd08ca8
codegen: all stores specify align value
...
See #37
2017-08-30 04:23:52 -04:00
Andrew Kelley
849f65332d
set alignment on all loads and globals
...
See #37
2017-08-30 03:43:51 -04:00
Andrew Kelley
e9280c86a1
compile error for not-aligned-enough pointer to cmpxchg
...
See #37
2017-08-30 02:56:42 -04:00
Andrew Kelley
010b725bde
add alignment field to pointer type
2017-08-30 02:41:27 -04:00
Andrew Kelley
5482f9f9e8
when getting an element pointer, use the best alignment
...
type we can figure out is safe to use
See #37
2017-08-30 02:25:41 -04:00
Andrew Kelley
56cc62a9c7
@ptrCast preserves larger alignment if applicable
...
See #37
2017-08-30 01:12:47 -04:00
Andrew Kelley
fa9006f8d1
generic functions can access comptime args in align value
...
See #37
2017-08-30 00:46:38 -04:00
Andrew Kelley
c2357830b4
add "child" field to pointer type
2017-08-30 00:17:11 -04:00
Andrew Kelley
898d65baa9
more alignment improvements
...
* add alignment capability for fn protos
* add @alignCast
* fix some ast rendering code
* fix some ir rendering code
* add error for pointer cast increasing alignment
* update allocators in std to correctly align
See #37
2017-08-29 23:33:25 -04:00
Andrew Kelley
910a96f046
fix tests
2017-08-29 17:10:11 -04:00
Andrew Kelley
816689a3b1
ptrCast gives compile error for increasing alignment
...
See #37
2017-08-29 16:52:31 -04:00
Andrew Kelley
be94299666
prevent implicitly increasing pointer alignment
...
See #37
2017-08-29 15:19:15 -04:00
Andrew Kelley
8f682efbc5
pass all tests without triggering assertions
...
fixes tests when targeting darwin
2017-08-29 09:30:22 -04:00
Andrew Kelley
1116d82197
fix bitfield pointer syntax
...
See #37
2017-08-29 08:35:51 -04:00
Andrew Kelley
c5c9d98065
introduce align keyword
...
* remove `@setGlobalAlign`
* add align keyword for setting alignment on functions and
variables.
* loads and stores use alignment from pointer
* memcpy, memset use alignment from pointer
* add syntax for pointer alignment
* slices can have volatile
* add u2, i2 primitives
* ignore preferred align and use abi align everywhere
* back to only having alignOf builtin.
preferredAlignOf is too tricky to be useful.
See #432 . Partial revert of
e726925e80
.
See #37
2017-08-29 07:51:34 -04:00
Andrew Kelley
d7a539906d
Merge branch 'embed-lld'
...
Zig now depends on LLVM 5.0.0.
For the latest version that supports LLVM 4.0.1, use
2a49c876be
.
Unfortunately we had to embed LLD into Zig due to some
MACH-O related LLD bugs. One of them is already upstream
and another is awaiting feedback on the llvm-dev mailing
list.
You can use cmake option -DZIG_FORCE_EXTERNAL_LLD=ON to
still use external LLD if you want to live with the MACH-O
bugs or if your system LLD is patched.
Closes #273
2017-08-28 04:09:09 -04:00
Andrew Kelley
6c7e975b75
remove remnants of depending on darwin system linker
2017-08-28 03:31:57 -04:00
Andrew Kelley
ebdc6b594d
all tests passing in MacOS
...
depends on LLD 5.0.0 with 3 patches
See #273
2017-08-27 17:16:42 -04:00
Andrew Kelley
5fd579a51c
macos passing all tests except for building a shared library
...
see #273
2017-08-27 05:44:03 -04:00
Andrew Kelley
ff2c794612
all behavior tests passing for macos
...
See #273
2017-08-27 05:15:24 -04:00
Andrew Kelley
91536813ec
macos updates
...
* try some macos travis stuff
* put c in the link libs for macos since we always link with libSystem
* for non-native targets on macos, allow runtime symbol resolution
- it's causing an infinite loop in LLD.
* for macos, always build compiler_rt and turn on LinkOnce because
compiler_rt on darwin is missing some stuff.
2017-08-27 02:51:25 -04:00
Andrew Kelley
29a418c9d5
progress toward tests passing on MacOS
2017-08-27 00:11:09 -04:00
Andrew Kelley
2a49c876be
audit alignment for functions
...
see #37
2017-08-26 15:20:39 -04:00
Andrew Kelley
a0ae575ff8
codegen for enums chooses best order of tag and union fields
...
closes #396
2017-08-26 14:25:52 -04:00
Andrew Kelley
40feecb3e4
fixups from previous commit
...
See #396
2017-08-26 13:51:51 -04:00
scurest
5bc877017e
use most_aligned_member+padding to represent enum unions
2017-08-26 13:48:16 -04:00
Andrew Kelley
e726925e80
remove @alignOf and add @cAbiAlignOf and @preferredAlignOf
...
See #396
2017-08-26 13:29:24 -04:00
Andrew Kelley
3a4ea41fe8
add some asserts in switch analysis code
2017-08-26 13:06:13 -04:00
Andrew Kelley
2b8f98a52c
fix wrong switch target type with enum from .h file
...
fixes crash when else => unreachable is missing
2017-08-26 12:23:12 -04:00
Andrew Kelley
105a09e1d6
fix invalid llvm IR for const enum
...
closes #394
2017-08-26 00:34:40 -04:00
Andrew Kelley
2bd6c60752
update for llvm 5.0.0rc1
2017-08-26 00:34:40 -04:00
Andrew Kelley
6aa04c422b
float division by zero check only when FloatMode.Optimzed
...
closes #395
2017-08-25 20:44:32 -04:00
Andrew Kelley
db613d38f0
implement comptime bitcasting from array
2017-08-25 20:05:10 -04:00
Andrew Kelley
4d8269f69f
fix some casts on const data causing segfault
2017-08-25 19:54:20 -04:00
Andrew Kelley
754f7809e3
refactor - codegen llvm functions lazily
2017-08-25 13:13:07 -04:00
Andrew Kelley
629aa10c56
unreachable still codegens to unreachable in ReleaseFast test mode
...
closes #430
2017-08-25 10:20:06 -04:00
Andrew Kelley
5dddb45ec7
fix compiler test errors
...
closes #428
Thanks Marc Tiehuis for diagnosing this bug
2017-08-22 11:54:58 -04:00
Andrew Kelley
0a922d3bca
move docs to website
2017-08-20 17:30:02 -04:00
Andrew Kelley
d5271d1e49
more zen
2017-08-20 12:10:21 -04:00
Andrew Kelley
f248ef5f3f
move zen of zig to a sub command
2017-08-20 04:25:42 -04:00
Andrew Kelley
d9dd50d74c
fix not propagating parseh aliases through pub use decls
2017-08-20 04:03:36 -04:00
Andrew Kelley
09bd4a9a86
compile-time f32, f64 operations are now correctly lossy
...
previously we used the bigfloat abstraction to do all
compile-time float math. but runtime code and comptime code
are supposed to get the same result. so now if you add a
f32 to a f32 at compile time it does it with f32 math
instead of the bigfloat. float literals still get the
bigfloat math.
closes #424
2017-08-20 01:04:51 -04:00
Andrew Kelley
caaeab9882
add setEvalBranchQuota builtin function
2017-08-19 17:10:29 -04:00
Andrew Kelley
cd2f65ff6a
add compile error for globally shadowing a primitive type
...
closes #423
2017-08-19 02:02:25 -04:00
Andrew Kelley
987768778a
bit shifting safety
...
* add u3, u4, u5, u6, u7 and i3, i4, i5, i6, i7
* shift operations shift amount parameter type is
integer with log2 bit width of other param
- This enforces not violating undefined behavior on
shift amount >= bit width with the type system
* clean up math.log, math.ln, math.log2, math.log10
closes #403
2017-08-19 01:43:43 -04:00
Andrew Kelley
0aa36e882e
remove dependency on quadmath.h
2017-08-18 13:28:59 -04:00
Andrew Kelley
b73d4f74c2
depend on libquadmath
...
it seems to be shipped with gcc and clang
2017-08-18 13:13:03 -04:00
Andrew Kelley
e1c225694d
cast between __float128 and double to fix build in some places
2017-08-18 12:43:48 -04:00
Andrew Kelley
3a762e5a8d
make casting between __float128 and long double explicit
2017-08-18 12:37:01 -04:00
Andrew Kelley
1b5d61bee9
fix bitCast for big integers
...
and make bigfloat use __float128
2017-08-17 22:52:12 -04:00
Andrew Kelley
2173e1f457
fix big integer shifting by large number
2017-08-17 22:01:19 -04:00
Andrew Kelley
0d117bb0a9
fix wrong value for clz, ctz at compile time
...
closes #418
also make clz, ctz return smaller integer bit widths
and use smaller integer bit widths for enum tag types
2017-08-17 17:14:35 -04:00
Andrew Kelley
6a98bf3dba
compiler_rt implementations for __fixuns* functions
...
* add u128 and i128 integer types
* add f128 floating point type
* implement big integer multiplication (See #405 )
2017-08-16 19:07:35 -04:00
Andrew Kelley
cf46cd5f2b
organize file path of compiler_rt
2017-08-15 07:16:22 -04:00
Andrew Kelley
dea90e20e6
fix tokenization error pointing to wrong character
...
closes #401
2017-08-14 13:28:42 -04:00
Andrew Kelley
35d3444e27
more intuitive left shift and right shift operators
...
Before:
* << is left shift, not allowed to shift 1 bits out
* <<% is left shift, allowed to shift 1 bits out
* >> is right shift, allowed to shift 1 bits out
After:
* << is left shift, allowed to shift 1 bits out
* >> is right shift, allowed to shift 1 bits out
* @shlExact is left shift, not allowed to shift 1 bits out
* @shrExact is right shift, not allowed to shift 1 bits out
Closes #413
2017-08-09 10:09:38 -04:00
Andrew Kelley
54675b060a
add ptrToInt builtin, remove usize(ptr) cast
...
closes #415
2017-08-08 17:38:25 -04:00
Andrew Kelley
2234788fa8
add ability to explicitly cast float to integer
...
closes #414
2017-08-07 15:57:41 -04:00
Marc Tiehuis
0705b711f8
Correct floating-point literal allowed ranges
...
The exponent range for floating-point values is [-1022, 1023].
Fixes #399 .
2017-08-07 18:08:09 +12:00
Andrew Kelley
d8227c79a2
limit generated C preprocessor tokens to alphabet
...
closes #407
The mangling strategy replaces bytes outside the alphabet
with "_xx_" where xx is the hex code of the byte.
2017-08-06 19:31:05 -04:00
Andrew Kelley
d83e4092bf
fix constant debug info when number literal is 0
2017-08-06 18:15:11 -04:00
Andrew Kelley
a0a57beed5
fix invalid target info
2017-08-06 18:14:46 -04:00
Andrew Kelley
f1b2735a2e
fix segfault when var args fn proto shows up in ir printing
2017-08-06 18:14:17 -04:00
Andrew Kelley
ad9f48b74b
fix initializing undefined and crash when casting to invalid type
...
closes #408
2017-08-05 16:54:50 -04:00
Andrew Kelley
f4b214c010
remove unused enum
2017-07-08 18:02:50 -04:00
Andrew Kelley
d1e68c3ca8
better bigint/bigfloat implementation
2017-07-08 17:59:10 -04:00
Andrew Kelley
c9fc8bd802
workaround for llvm bug
...
See #393 for details
2017-06-19 14:36:33 -04:00
scurest
1a63f27247
allow trailing commas
...
closes #392
2017-06-17 10:34:51 -04:00
Andrew Kelley
1566ca21c4
fix peer type resolution for array and error
...
closes #388
2017-06-17 10:29:04 -04:00
Andrew Kelley
c0f9012bed
parseh: fix not recognizing integer suffixes on hex numbers
2017-06-16 14:34:38 -04:00
Andrew Kelley
865b53f286
fix alignOf builtin
...
* fix assertion error when type is not yet complete
* fix alignment value
closes #391
2017-06-15 23:47:05 -04:00
Andrew Kelley
ae61e26680
fix compiler segfault on null ?? x
...
closes #390
2017-06-14 19:32:52 -04:00
Andrew Kelley
7f0620a20f
partial implementation of printing floating point numbers with errol3
...
also add bitCast builtin function. closes #387
2017-06-14 00:24:25 -04:00
Andrew Kelley
6a93dda3e1
progress toward windows hello world working
2017-06-14 00:04:34 -04:00
Andrew Kelley
199bbb6292
progress toward hello world without libc in windows
2017-06-04 10:08:55 -04:00
Andrew Kelley
e5b90651ba
compileError builtin includes "referenced by" notes
...
to help track down the cause
closes #278
2017-06-03 15:09:40 -04:00
Andrew Kelley
1ae2002b41
fix crash when writing to const hardcoded ptr
...
closes #381
2017-05-29 14:25:00 -04:00
Andrew Kelley
8ae4ffa493
fix crash when unwrapping optional field of global variable
...
closes #379
2017-05-29 14:08:39 -04:00
Andrew Kelley
2dfb1ebee2
const global values can reference each other
...
Before, if you did something like:
```
const hi1 = "hi";
const hi2 = hi1;
```
This would create the "hi" data twice in the built object.
But since the value is const we don't have to duplicate the
data, now we take advantage of this fact.
closes #336
2017-05-27 00:54:14 -04:00
Andrew Kelley
d6b01931ef
implicitly cast by value var args parameters to const references
...
See #336
2017-05-26 16:44:13 -04:00
Andrew Kelley
c42c91ee7c
fix segfault with array of generic functions
...
closes #377
2017-05-26 14:39:18 -04:00
Andrew Kelley
fcdd808c5c
fix segfault with array of variadic functions
...
closes #377
2017-05-25 13:48:10 -04:00
Andrew Kelley
d8d45908fa
building with mingw for windows
2017-05-23 00:26:12 -04:00
Andrew Kelley
1c8fee41c2
add compile error for goto leaving defer expression
...
closes #284
2017-05-21 10:59:09 -04:00
Andrew Kelley
9f3cca8615
add error for break/continue exiting defer expression
...
See #284
2017-05-21 10:44:55 -04:00
Andrew Kelley
1c6f415a64
fix compiler crash when indexing types
...
closes #376
2017-05-21 09:50:15 -04:00
Andrew Kelley
565ac3e27a
flip the enum order of FloatMode
2017-05-20 23:26:39 -04:00
Andrew Kelley
29b488245d
add setFloatMode builtin and std.math.floor
...
* skip installing std/rand_test.zig as it's not needed beyond running
the std lib tests
* add std.math.floor function
* add setFloatMode builtin function to choose between
builtin.FloatMode.Optimized (default) and builtin.FloatMode.Strict
(Optimized is equivalent to -ffast-math in gcc)
2017-05-20 23:06:32 -04:00
Andrew Kelley
051ee8e626
change slicing syntax from ... to ..
...
See #359
2017-05-19 10:39:59 -04:00
Andrew Kelley
b483db4868
typeId builtin instead of isInteger, isFloat, etc
...
closes #373
2017-05-17 12:26:35 -04:00
Andrew Kelley
9851a943ed
add compile error for compile-time integer cast truncating bits
...
closes #371
2017-05-16 17:04:35 -04:00
Andrew Kelley
f375063917
fix printf format specifier
2017-05-16 10:19:35 -04:00
Andrew Kelley
a7570186eb
add compile error for comptime division by zero
...
closes #372
2017-05-14 13:07:45 -04:00
Andrew Kelley
63f6676fee
add compile error for casting negative value to...
...
...unsigned integer at compile-time
2017-05-10 00:21:27 -04:00
Andrew Kelley
6237411716
inline function call with builtin function instead...
...
...of special syntax.
partially reverts 41144a8566
closes #306
2017-05-09 22:54:23 -04:00
Andrew Kelley
01f066de37
ability to slice ptr to hard coded integer at comptime
...
closes #369
2017-05-09 22:23:38 -04:00
Andrew Kelley
2f20fe6ecd
delete @generatedCode builtin function
...
good riddance
2017-05-07 23:25:36 -04:00
Andrew Kelley
5774b48ceb
rename c_long_double to c_longdouble
...
to be consistent with other c primitive type names
2017-05-07 19:51:44 -04:00
Andrew Kelley
e485af94d4
fix inability to initialize global pointer to global array element
...
closes #366
2017-05-07 18:09:45 -04:00
Andrew Kelley
7261cd19b7
detect duplicate switch value even when else prong present
...
closes #43
2017-05-07 13:40:35 -04:00
Andrew Kelley
11d8a8cc7b
fix comptime switch on enum with ref payload
...
See #43
2017-05-07 13:21:53 -04:00
Andrew Kelley
818a0a2629
switch expression - add compile errors
...
* for duplicate integer value
* for missing integer values
* for missing else prong
see #43
2017-05-07 12:07:35 -04:00
Andrew Kelley
29beb603b7
allow division and remainder operators sometimes
...
when the values are comptime known and the result would be the same,
allow `/` and `%` for signed integers and floats.
closes #365
2017-05-06 23:59:57 -04:00
Andrew Kelley
157af4332a
builtin functions for division and remainder division
...
* add `@divTrunc` and `@divFloor` functions
* add `@rem` and `@mod` functions
* add compile error for `/` and `%` with signed integers
* add `.bit_count` for float primitive types
closes #217
2017-05-06 23:13:12 -04:00
Andrew Kelley
866c841dd8
add compile error when unable to inline a function
...
See #38
2017-05-04 15:11:24 -04:00
Andrew Kelley
b6a679c0ed
implement else on loops and break can give an expression
...
closes #357
2017-05-04 12:43:11 -04:00
Andrew Kelley
20b1491e6b
implement while for nullables and error unions
...
See #357
2017-05-04 10:28:00 -04:00
Andrew Kelley
698829b772
change while syntax
...
Old:
```
while (condition; expression) {}
```
New:
```
while (condition) : (expression) {}
```
This is in preparation to allow nullable and
error union types as the condition. See #357
2017-05-03 18:12:07 -04:00
Andrew Kelley
644ea2dde9
remove test and try expressions in favor of if expressions
...
See #357
2017-05-03 17:23:11 -04:00
Andrew Kelley
0940d46c01
add compile error for shadowing variable
...
closes #360
2017-05-03 16:13:57 -04:00
Andrew Kelley
6756c27ca4
zig build: cache_root is relative to build_root
2017-05-03 16:13:57 -04:00
Andrew Kelley
f69d28a087
fix debug info for nullable type
2017-05-02 18:21:55 -04:00
Andrew Kelley
24a9a42966
add safe release build mode
...
closes #288
2017-05-02 17:34:21 -04:00
Andrew Kelley
7c236f6dd8
fix compiler crash when referencing a variable...
...
...in an if after an if in the 2nd switch prong
closes #355
2017-05-02 12:59:09 -04:00
Andrew Kelley
9f92042da9
allow undefined to be resolved with other types
...
closes #295
2017-05-01 22:37:34 -04:00
Andrew Kelley
cff5358f60
make debug safety stuff lazy
2017-05-01 19:16:48 -04:00
Andrew Kelley
3cbd0065fa
basic support for specifying packages at the command line
...
See #226
2017-05-01 16:35:10 -04:00
Andrew Kelley
17b935325e
@import("builtin")
instead of @compileVar
...
See #226
Closes #220
2017-05-01 13:12:38 -04:00
Andrew Kelley
363d9038c9
zig build: organize build artifacts
...
closes #328
2017-04-30 18:56:24 -04:00
Andrew Kelley
43e7ac8418
add peer type resolution []T
and [0]T
...
closes #349
also fix slicing const array to be []const T instead of []T
2017-04-30 12:21:24 -04:00
Andrew Kelley
29defd705d
back to AT&T syntax for assembly
...
this reverts 5c04730534
.
sadly the quality of the intel dialect in llvm's assembly
parser has many frustrating bugs, and generally has unfortunate
syntax.
the plan is to use AT&T for now since it at least works,
and eventually zig will have its own assembly parser for
x86 and it will be as close to NASM as possible.
2017-04-30 11:28:11 -04:00
Andrew Kelley
cbfe4b4bae
add implicit cast from [0]T to %[]T
...
closes #347
also add std.os.path.relative
2017-04-29 19:23:33 -04:00
Andrew Kelley
a147f06585
zig puts temporary object files in zig-cache folder
...
See #298
2017-04-28 02:22:12 -04:00
Andrew Kelley
458afb0ef9
phi instruction retains stack ptr hint
2017-04-27 23:40:43 -04:00
Andrew Kelley
2e512a0e6e
add compile error for returning local variable address
...
closes #344
2017-04-27 19:40:35 -04:00
Andrew Kelley
1691074b4b
add no-elim-base-pointer to __zig_fail function
...
fixes missing frame for unwrapping an error
closes #345
2017-04-27 18:40:17 -04:00
Andrew Kelley
7e11ef79d6
zig test no longer requires a separate test_runner.o file
...
See #298
2017-04-27 16:19:20 -04:00
Andrew Kelley
7b0542d08b
build system: consolidate duplicate code and more
...
* add ability to add assembly files when building an exe, obj, or lib
* add implicit cast from `[N]T` to `?[]const T` (closes #343 )
* remove link_exe and link_lib in favor of allowing build_exe and
build_lib support no root zig source file
2017-04-26 19:17:05 -04:00
Andrew Kelley
afa80da857
revert the last 3 compile time improvements
...
they introduced complexity into the compiler and didn't
really help.
This reverts commit efa771af75
.
This reverts commit 8614397110
.
This reverts commit 13c6a58a61
.
2017-04-25 17:14:22 -04:00
Andrew Kelley
13c6a58a61
compile time improvement - move bounds checking to function calls
...
once again this barely had an effect:
Before:
./build size: 1.3 MB
hello.zig size: 301 KB
full test: 1m31.253s
debug test: 19.607s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0431 0.0431 0.2262
Code Generation 0.0431 0.0660 0.0229 0.1201
LLVM Emit Object 0.0660 0.1765 0.1105 0.5795
Build Dependencies 0.1765 0.1890 0.0125 0.0655
LLVM Link 0.1890 0.1906 0.0016 0.0086
Generate .h 0.1906 0.1906 0.0000 0.0000
Total 0.0000 0.1906 0.1906 1.0000
After:
./build size: 1.3 MB
hello.zig size: 300 KB
full test: 1m31.882s
debug test: 19.569s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0424 0.2228
Code Generation 0.0425 0.0661 0.0236 0.1239
LLVM Emit Object 0.0661 0.1762 0.1101 0.5782
Build Dependencies 0.1762 0.1888 0.0126 0.0664
LLVM Link 0.1888 0.1905 0.0016 0.0085
Generate .h 0.1905 0.1905 0.0000 0.0000
Total 0.0000 0.1905 0.1905 1.0000
2017-04-25 16:53:22 -04:00
Andrew Kelley
8614397110
compile time improvement - move overflow math safety to fns
...
move some boilerplate code having to do with overflow math safety
to functions.
Again the timing difference is not much:
Before:
./build size: 1.3 MB
hello.zig size: 308 KB
full test: 1m33.588s
debug test: 20.303s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0425 0.2202
Code Generation 0.0425 0.0675 0.0250 0.1293
LLVM Emit Object 0.0675 0.1789 0.1114 0.5773
Build Dependencies 0.1789 0.1913 0.0124 0.0640
LLVM Link 0.1913 0.1931 0.0018 0.0091
Generate .h 0.1931 0.1931 0.0000 0.0000
Total 0.0000 0.1931 0.1931 1.0000
After:
./build size: 1.3 MB
hello.zig size: 301 KB
full test: 1m31.253s
debug test: 19.607s
hello.zig timing:
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0431 0.0431 0.2262
Code Generation 0.0431 0.0660 0.0229 0.1201
LLVM Emit Object 0.0660 0.1765 0.1105 0.5795
Build Dependencies 0.1765 0.1890 0.0125 0.0655
LLVM Link 0.1890 0.1906 0.0016 0.0086
Generate .h 0.1906 0.1906 0.0000 0.0000
Total 0.0000 0.1906 0.1906 1.0000
2017-04-25 15:37:56 -04:00
Andrew Kelley
efa771af75
compile time improvement - add __zig_panic_slice fn
...
move some boilerplate code having to do with panicking
to a function.
Here's the timing difference. It's not much:
Before:
full test: 1m36.511s
debug test: 20.862s
hello.zig
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0001
Semantic Analysis 0.0000 0.0421 0.0420 0.2109
Code Generation 0.0421 0.0620 0.0200 0.1003
LLVM Emit Object 0.0620 0.1852 0.1231 0.6180
Build Dependencies 0.1852 0.1974 0.0122 0.0615
LLVM Link 0.1974 0.1993 0.0018 0.0093
Generate .h 0.1993 0.1993 0.0000 0.0000
Total 0.0000 0.1993 0.1993 1.0000
After:
full test: 1m33.588s
debug test: 20.303s
hello.zig
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0002
Semantic Analysis 0.0000 0.0425 0.0425 0.2202
Code Generation 0.0425 0.0675 0.0250 0.1293
LLVM Emit Object 0.0675 0.1789 0.1114 0.5773
Build Dependencies 0.1789 0.1913 0.0124 0.0640
LLVM Link 0.1913 0.1931 0.0018 0.0091
Generate .h 0.1931 0.1931 0.0000 0.0000
Total 0.0000 0.1931 0.1931 1.0000
2017-04-25 14:20:15 -04:00
Andrew Kelley
e0050af293
add some timing diagnostics
...
pass --enable-timing-info to print a nice table like this:
```
Name Start End Duration Percent
Initialize 0.0000 0.0000 0.0000 0.0001
Semantic Analysis 0.0000 0.0421 0.0420 0.2109
Code Generation 0.0421 0.0620 0.0200 0.1003
LLVM Emit Object 0.0620 0.1852 0.1231 0.6180
Build Dependencies 0.1852 0.1974 0.0122 0.0615
LLVM Link 0.1974 0.1993 0.0018 0.0093
Generate .h 0.1993 0.1993 0.0000 0.0000
Total 0.0000 0.1993 0.1993 1.0000
```
2017-04-25 12:29:25 -04:00
Andrew Kelley
245eed8afe
better stack traces for ELF x86_64
2017-04-24 12:14:45 -04:00
Josh Wolfe
08a871f625
defer requires expr to be void. closes #341
2017-04-23 22:33:06 -07:00
Josh Wolfe
ac7971122d
fix check-statement-is-void. add tests
...
see #291
2017-04-23 21:50:34 -07:00
Josh Wolfe
c6605cba83
blocks check that their statements are void
...
closes #291
This changes the error message "return value ignored" to "expression value is ignored".
This is because this error also applies to {1;}, which has no function calls.
Also fix ignored expression values in std and test.
This caught a bug in debug.readAllocBytes where an early Eof error would have been missed.
See #219 .
2017-04-23 21:15:15 -07:00
Andrew Kelley
6de33ded81
make undefined as a constant value lazy
...
closes #268
2017-04-23 14:34:40 -04:00
Josh Wolfe
2ed47070ef
refactor ir_gen_block to make different return paths more clear
2017-04-23 09:04:15 -07:00
Josh Wolfe
14dfbd6ad3
remove redundant unreachable code error
2017-04-23 08:36:21 -07:00
Andrew Kelley
0f633167c5
fix crash when unwrapping error with no error decls
...
closes #339
2017-04-23 03:14:22 -04:00
Andrew Kelley
ad9040443c
new compile errors for setGlobalAlign and setGlobalSection builtins
...
if you try to use them on an external variable or function
then you get a compile error, since the alignment/section
is set externally in this case.
closes #244
2017-04-22 12:54:00 -04:00
Andrew Kelley
aafb0b9082
slicing now returns correct const-ness
...
also remove the ability to override constness when slicing
closes #334
2017-04-22 12:19:20 -04:00
Andrew Kelley
1a0081b763
add peer type resolution for T and ?T
...
See #334
2017-04-22 11:45:04 -04:00
Andrew Kelley
0cce115476
update syntax for try and nullable unwrapping
...
closes #285
2017-04-21 16:46:33 -04:00
Andrew Kelley
d5346d7a80
remove ?return
and ?defer
...
closes #309
2017-04-21 15:08:03 -04:00
Andrew Kelley
e3c524c1d4
rename @ptrcast
to @ptrCast
to follow convention
2017-04-21 10:39:13 -04:00
Andrew Kelley
fb492d19eb
zig build system supports building a library
...
See #329
Supporting work:
* move std.cstr.Buffer0 to std.buffer.Buffer
* add build.zig to example/shared_library/ and add an automated test
for it
* add std.list.List.resizeDown
* improve std.os.makePath
- no longer recursive
- takes into account . and ..
* add std.os.path.isAbsolute
* add std.os.path.resolve
* reimplement std.os.path.dirname
- no longer requires an allocator
- handles edge cases correctly
2017-04-21 01:56:12 -04:00
Raul Leal
5234016561
Add @offsetOf builtin function
2017-04-20 11:53:00 +00:00
Andrew Kelley
d12f1f5b49
test framework supports name prefix and filter argument
...
rename self hosted tests to behavior tests
2017-04-19 15:38:12 -04:00
Andrew Kelley
d1e01e43d3
convert assemble and link tests to zig build system
2017-04-19 14:00:12 -04:00
Andrew Kelley
666435195f
update zig build help text when no build.zig found
2017-04-19 04:36:48 -04:00
Andrew Kelley
37b9a2e6a4
convert compare-output tests to use zig build system
2017-04-19 01:15:20 -04:00
Andrew Kelley
237dfdbdc6
error when building exe with no entry point
...
closes #30
2017-04-18 14:04:48 -04:00
Andrew Kelley
6f0f8a92ec
bail out of analysis on first error during comptime eval
...
prevents an error during comptime eval from printing a
large number of compile errors
2017-04-18 04:02:36 -04:00
Andrew Kelley
a791417552
add @fieldParentPtr
builtin function
...
closes #320
2017-04-18 02:28:05 -04:00
Andrew Kelley
407916cd2f
rename @intType
to @IntType
to follow convention
...
closes #327
2017-04-18 00:05:09 -04:00
Andrew Kelley
c7852bd596
minor clean ups from previous commit
2017-04-17 20:15:19 -04:00
Raul Leal
3266585606
Implicit cast from T to %?T
...
closes #171
2017-04-17 19:55:56 -04:00
Andrew Kelley
2e0b114fdc
add compile error for intToPtr with a 0-bit ptr
...
See #323
2017-04-17 19:28:33 -04:00
Andrew Kelley
47336abae3
improvements to zig build system and unwrap error safety
...
* zig build system: create standard dynamic library sym links
* unwrapping an error results in a panic message that contains
the error name
* rename error.SysResources to error.SystemResources
* add std.os.symLink
* add std.os.deleteFile
2017-04-17 06:47:20 -04:00
Josh Wolfe
3e93796e24
comptime ({}) should not get an implicit semicolon
...
closes #292 .
2017-04-14 16:09:01 -07:00
Andrew Kelley
5fdefe58e4
zig build system understands the concept of dependencies
...
See #204
2017-04-13 17:21:00 -04:00
Andrew Kelley
dcfa0e50dc
all internal functions get unnamed_addr attribute
2017-04-13 03:34:57 -04:00
Andrew Kelley
f2140efc52
Merge remote-tracking branch 'origin/parser'
2017-04-13 03:09:09 -04:00
Andrew Kelley
bf57d8a7e3
typedefpocalypse
...
closes #314
2017-04-13 03:07:58 -04:00
Josh Wolfe
356424916c
block statement lists never get fake expressions
...
instead blocks have a field that encodes whether the last statement ended with
a semicolon.
2017-04-12 23:22:32 -07:00
Josh Wolfe
919910312d
make it an error to ignore a statement's value
...
this makes {1;} an error.
2017-04-12 22:21:35 -07:00
Andrew Kelley
bf67427c67
fix crash when using zig to link
...
without explicit dynamic linker
2017-04-13 01:15:25 -04:00
Andrew Kelley
41144a8566
ability to inline at function callsite
...
closes #306
2017-04-13 00:13:54 -04:00
Andrew Kelley
2864359950
zig build system writes template build.zig file when none exists
...
see #204
2017-04-11 06:14:46 -04:00
Andrew Kelley
7f47b0c271
run alwaysinline pass in debug mode
...
before this commit, the optimized IR code that is displayed in
--verbose mode is not actually what gets emitted to an object
file.
that is now corrected, and we make sure to run the alwaysinliner
pass even in debug mode, so you can rely on "inline" keyword
inlining a function, guaranteed.
See #306
2017-04-11 03:37:44 -04:00
Andrew Kelley
11a6550324
fix some -Wconversion errors
2017-04-10 20:02:39 -04:00
Andrew Kelley
34eff50326
fix for loops not working at compile-time
...
closes #315
2017-04-10 03:00:19 -04:00
Andrew Kelley
0e77b0ac89
fix mangling exported global variables
...
closes #316
2017-04-10 02:32:11 -04:00
Andrew Kelley
095591f0b0
add enumTagName builtin function
...
closes #299
2017-04-08 17:45:22 -04:00
Andrew Kelley
7611ed3484
allow implicit cast from [N]T
to &const []const T
...
closes #296
2017-04-07 17:56:01 -04:00
Andrew Kelley
f7e9d7aa5d
ability to implicitly cast integer literal to &const Int
...
where Int is an integer type
also introduce `@intToPtr` builtin for converting a usize
to a pointer. users now have to use this instead of `(&T)(int)`.
closes #311
2017-04-07 15:35:38 -04:00
Andrew Kelley
ffb4852012
add compile error for the bug of unable to call var ags at compile time
...
See #313
2017-04-07 00:33:19 -04:00
Andrew Kelley
a3de550d3b
fix var args having wrong index when runtime param before it
...
closes #312
2017-04-06 21:00:49 -04:00
Andrew Kelley
273cebdf4d
peer resolve types [N]T, [M]T as []const T
...
closes #125
2017-04-06 18:07:38 -04:00
Andrew Kelley
47f58d6d02
fix runtime struct initialization of bitfield
...
closes #308
2017-04-06 15:04:18 -04:00
Andrew Kelley
6fbe1632d0
Update zig build system to support user defined options
...
* Fix assertion failure when switching on type.
Closes #310
* Update zig build system to support user defined options.
See #204
* fmt.format supports {sNNN} to set padding for a buffer arg.
* add std.fmt.bufPrint and std.fmt.allocPrint
* std.hash_map.HashMap.put returns the previous value
* add std.mem.startsWith
2017-04-06 05:34:04 -04:00
Andrew Kelley
d65cd73a8b
add support to use zig as a linker driver
...
closes #243
I also added --grep to ./run_tests if you want to single out
some specific tests
2017-04-05 07:49:40 -04:00
Andrew Kelley
8c10b6dcbd
ability to use zig as an assembler
...
see #243
2017-04-05 03:36:55 -04:00
Andrew Kelley
a461ae6c1f
fix crash when referencing invalid member of builtin enum
...
closes #304
2017-04-04 21:36:24 -04:00
Andrew Kelley
e30f713640
more accurate detection of pub main
2017-04-04 21:19:22 -04:00
Andrew Kelley
0edc2b19fe
support module level assembly
...
closes #256
2017-04-04 19:47:22 -04:00
Andrew Kelley
00efbfa054
link: correctly print debug linker invocation
2017-04-04 06:15:23 -04:00
Andrew Kelley
8db9d04e6f
link: fix ignoring first linker arg
...
LLD treats the first argument as arg[0], the exe name
2017-04-04 06:07:09 -04:00
Andrew Kelley
e332cd65c9
zig build system: delete ./build file on success
...
see #204
2017-04-04 02:02:51 -04:00
Andrew Kelley
1c6000d047
zig build system improvements, add some std API
...
* add std.buf_map.BufMap
* add std.buf_set.BufSet
* add std.mem.split
* zig build system improvements (See #204 )
- automatically parses NIX_CFLAGS_COMPILE and NIX_LDFLAGS
- add builder.addCIncludePath
- add builder.addRPath
- add builder.addLibPath
- add exe.linkLibrary
2017-04-04 01:52:20 -04:00
Andrew Kelley
b46344fd01
link: delete code that checks the linker version
...
since we depend on LLD for linking
2017-04-03 23:29:53 -04:00
Andrew Kelley
c9ae30d27e
delete alloca builtin function
...
See #225
introduce os.EnvMap
2017-04-03 18:11:57 -04:00
Andrew Kelley
c400cb429a
zig build system: add setLinkerScript and setTarget
...
* See #204 - zig build system
* allow builtin types Os, Environ, Arch to be used at runtime.
they have zero_bits=false and debug info now.
* Eradicate use of `@alloca` in std for syscalls. See #225
* add `std.io.writeFile`
* `std.debug.panic` adds a newline to format
2017-04-03 05:04:46 -04:00
Andrew Kelley
8fd0fddce5
zig build system progress
...
* In-progress os.ChildProcess.spawn implementation. See #204
* Add explicit cast from integer to error. Closes #294
* fix casting from error to integer
* fix compiler crash when initializing variable to undefined
with no type
2017-04-02 18:19:59 -04:00
Josh Wolfe
0594487a2e
fix else-if parsing
...
implicit semicolon rules apply recursively to the "else" clause of if and try
if (a) {} else {} // implicit semicolon
if (a) {} else if (a) {} // implicit semicolon
if (a) {} else while (a) {} // implicit semicolon
2017-04-02 15:15:48 -07:00
Josh Wolfe
a33be6fc99
defer without a block body requires a following semicolon
2017-04-02 13:47:23 -07:00
Josh Wolfe
8d03d666af
add secret void expression after defer statement if it's the last statement in a block
2017-04-02 13:18:12 -07:00
Josh Wolfe
e3c796258c
allow implicit semicolon after defer {}
2017-04-02 13:01:23 -07:00
Josh Wolfe
136a9a9d6b
variable declarations must be followed by semicolon
2017-04-02 12:46:18 -07:00
Josh Wolfe
4b9e782d37
fix confusion in block expression parsing
...
closes #292
* if, try, while, for, comptime, defer are "greedy" with {} blocks,
meaning if their bodies are blocks, then no suffix operator is allowed
after the block. The {} block gets "built into" the containing statement,
like the body of a switch statement.
* the Expression syntactic element is no longer "greedy" with {} blocks,
meaning it's possible to have suffix operators after {} blocks without
needing the {} block to be an rhs operand first.
2017-04-02 11:50:34 -07:00
Josh Wolfe
9968879261
Require top-level-declaration comptime use {}
...
This forbids `comptime 1 comptime 1` at top-level scope.
2017-04-02 11:02:47 -07:00
Josh Wolfe
36a015741d
clean up analysis of {blocks}
...
* Don't insert void statements all over the place. {} now stays as
{} instead of {{}}, and {;} becomes {} instead of {{};{}}.
* Ensure final statement is always the return value statement, or
the block is empty. This means {label:} becomes {label:{}}.
2017-03-31 08:54:03 -07:00
Andrew Kelley
f8e63c4584
change @bitcast
to @ptrcast
...
See #290
2017-03-31 06:18:20 -04:00
Andrew Kelley
3ca027ca82
first pass at zig build system
...
* `zig build --export [obj|lib|exe]` changed to `zig build_obj`,
`zig build_lib` and `zig build_exe` respectively.
* `--name` parameter is optional when it can be inferred from the
root source filename. closes #207
* `zig build` now looks for `build.zig` which interacts with
`std.build.Builder` to describe the targets, and then the zig
build system prints TODO: build these targets. See #204
* add `@bitcast` which is mainly used for pointer reinterpret
casting and make explicit casting not do pointer reinterpretation.
Closes #290
* fix debug info for byval parameters
* sort command line help options
* `std.debug.panic` supports format string printing
* add `std.mem.IncrementingAllocator`
* fix const ptr to a variable with data changing at runtime.
closes #289
2017-03-31 05:55:41 -04:00
Andrew Kelley
a32b5929cc
add stack protector safety when linking libc
...
* introduce zigrt file. it contains only weak symbols so that
multiple instances can be merged. it contains __zig_panic
so that multiple .o files can call the same panic function.
* remove `@setFnVisible` builtin and add @setGlobalLinkage builtin
which is more powerful
* add `@panic` builtin function.
* fix collision of symbols with extern prototypes and internal
function names
* add stack protector safety when linking against libc. To add
the safety mechanism without libc requires implementing
Thread Local Storage. See #276
2017-03-26 21:07:07 -04:00
Andrew Kelley
8aeea72654
add debug safety checks for remainder division
...
See #217
2017-03-26 15:06:43 -04:00
Andrew Kelley
3103355805
add comptime eval for some uint comparisons with 0
...
closes #55
2017-03-26 14:41:17 -04:00
Andrew Kelley
5bc9feb5cb
organize std and make import relative to current file
...
closes #216
2017-03-26 06:39:28 -04:00
Andrew Kelley
7ce753a16b
replace "&&" and "||" with "and" and "or"
...
closes #272
2017-03-26 05:21:28 -04:00
Andrew Kelley
451ce09067
new unreachable syntax
...
* `noreturn` is the primitive type.
* `unreachable` is a control flow keyword.
* `@unreachable()` builtin function is deleted.
closes #214
2017-03-26 04:58:48 -04:00
Andrew Kelley
22e6bfca96
add comptime top level declaration
...
closes #255
2017-03-26 04:32:13 -04:00
Andrew Kelley
7c53230a61
introduce copyable concept
...
closes #103
2017-03-26 03:39:18 -04:00
Andrew Kelley
5c04730534
use intel dialect for inline assembly
...
closes #242
2017-03-23 18:59:43 -04:00
Andrew Kelley
fd634f3db3
don't mangle symbols with underscores
...
closes #275
2017-03-23 18:28:10 -04:00
Andrew Kelley
d6856859d3
improvements for windows and libc integration
...
* standard library knows if it is linking against libc and will
sometimes call libc functions in that case instead of providing
redundant definitions
* fix infinite loop bug when resolving use declarations
* allow calling the same C function from different C imports.
closes #277
* push more logic from compiler to std/bootstrap.zig
* standard library provides way to access errno
closes #274
* fix compile error in standard library for windows
* add implementation of getRandomBytes for windows
2017-03-23 02:59:58 -04:00
Andrew Kelley
01b2bf4a44
on Darwin/MacOS/iOS, add c to link libs implicitly
2017-03-22 11:55:41 -04:00
Andrew Kelley
87bc97daef
unify main entry point regardless of whether linking libc
...
closes #248
2017-03-22 11:26:30 -04:00
Andrew Kelley
e1c47d6fe8
fix test regression regarding shadowing names
...
closes #271
2017-03-20 15:32:13 -04:00
Andrew Kelley
fa7c64ccd5
lazy analysis of top level declarations
...
previously, we had lazy analysis of top level declarations,
but if a declaration was referenced within a compile-time
if or switch statement, that would still add the top
level declaration to the resolution queue.
now we have a declref ir instruction, which is only resolved
if we analyze the instruction. this takes into account comptime
branching.
closes #270
2017-03-18 11:28:43 -04:00
Andrew Kelley
af536ac343
introduce new test syntax
...
* remove setFnTest builtin
* add test "name" { ... } syntax
* remove --check-unused argument. functions are always lazy now.
2017-03-16 16:02:35 -04:00
Andrew Kelley
329457bb4f
Merge branch 'master' into lld
2017-03-14 21:39:04 -04:00
Andrew Kelley
a76558db26
fix behavior with reinterpreting constant memory
2017-03-14 21:38:27 -04:00
Andrew Kelley
7efa2cd81c
add --each-lib-rpath option and corresponding config option
...
This adds an rpath entry for each used dynamic library directory.
This is necessary on some systems such as NixOS.
2017-03-13 13:11:55 -04:00
Andrew Kelley
d10bbd28e9
use lld instead of system linker
2017-03-13 11:54:56 -04:00
Andrew Kelley
7bc0145b80
types with zero bits do not have a pointer handle
2017-03-10 11:30:30 -05:00
Andrew Kelley
434f017aee
codegen nullable void the same way as bool
...
See #104
2017-03-10 11:21:41 -05:00
Andrew Kelley
c78dc5043b
add default value for macosx version min when compiling natively
...
closes #264
2017-03-10 02:58:23 -05:00
Andrew Kelley
c91dbdb27c
fix not allocating enough memory for passing args
...
fixes a bug introduced in c62db5721c
2017-03-10 02:50:53 -05:00
Andrew Kelley
cd31f875a6
update to llvm 4.0
2017-03-10 02:29:01 -05:00
Andrew Kelley
c62db5721c
support passing var args directly
...
See #77
2017-03-09 16:13:38 -05:00
Andrew Kelley
558ae2f21a
fix a case of invalid ptr const-ness
2017-03-08 17:02:18 -05:00
Andrew Kelley
ddd9624e2d
fix assertion error, trying to dereference to array
...
thanks to hoppetosse on IRC for reporting the issue
2017-03-07 19:08:02 -05:00
Andrew Kelley
6d0afc2bd2
add compile error for assigning number literal to non-comptime var
2017-03-02 18:51:19 -05:00