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
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
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
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
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
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
ad9f48b74b
fix initializing undefined and crash when casting to invalid type
...
closes #408
2017-08-05 16:54:50 -04:00
Andrew Kelley
d1e68c3ca8
better bigint/bigfloat implementation
2017-07-08 17:59:10 -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
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
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
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
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
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
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
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
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
6756c27ca4
zig build: cache_root is relative to build_root
2017-05-03 16:13:57 -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