5820 Commits

Author SHA1 Message Date
Andrew Kelley
fa6c20a02d
hook up unions with lazy values
this case works now:

```zig
const Expr = union(enum) {
    Literal: u8,
    Question: *Expr,
};
```
2019-08-25 11:34:07 -04:00
Andrew Kelley
d277a1196b
tracking these issues on github now 2019-08-23 17:54:01 -04:00
Andrew Kelley
e8bad1e12a
fix regression on @ptrCast
this case regressed and now fixed:

```zig
const a: ?*i32 = undefined;
const b: ?*f32 = @ptrCast(?*f32, a);
```
2019-08-23 17:39:56 -04:00
Andrew Kelley
101440c199
add lazy value support for optional types
this case works now:

```zig
const Node = struct {
    node: ?*Node,
};
```
2019-08-23 17:14:51 -04:00
Andrew Kelley
f0034495fa
fix regression with simple pointer to self 2019-08-23 15:59:37 -04:00
Andrew Kelley
ac4dd9d665
better handling of lazy structs
this case works now:

```zig
const A = struct {
    b_list_pointer: *const []B,
};
const B = struct {
    a_pointer: *const A,
};

const b_list: []B = [_]B{};
const a = A{ .b_list_pointer = &b_list };
const obj = B{ .a_pointer = &a };
```
2019-08-23 15:54:51 -04:00
Andrew Kelley
be0a9a7277
pointer types lazily evaluate their element type 2019-08-23 15:05:15 -04:00
Andrew Kelley
1dd658d1d0
allow top level declarations to be lazy
this case now works:

```zig
const A = struct {
    b: B,
};
const B = fn (A) void;
```
2019-08-23 14:07:34 -04:00
Andrew Kelley
20049caaba
add lazy value for fn prototypes
this case now works:

```zig
const Node = struct {
    field: fn (*Node) *Node,
};
```
2019-08-23 13:28:26 -04:00
Andrew Kelley
3865b6ad8f
Merge remote-tracking branch 'origin/master' into fix-field-alignment-kludge 2019-08-23 11:43:37 -04:00
Andrew Kelley
ec2f9ef4e8
Merge pull request #3114 from Tetralux/align-on-struct-fields
parsing and rendering of align(N) on struct fields
2019-08-23 11:19:27 -04:00
Jonathan Marler
9322eee80a Encapsulate bigint representation, assert on cast data loss 2019-08-23 11:14:08 -04:00
Tetralux
43587af01a
rendering of align(N) on struct fields 2019-08-22 22:58:38 +00:00
Tetralux
3ec10ea174
parsing of align(N) on struct fields 2019-08-22 22:58:02 +00:00
Andrew Kelley
79a4b7a236
fix regressions 2019-08-22 18:24:15 -04:00
Andrew Kelley
26b79ac90e
simple self-referential struct is working now 2019-08-22 14:46:26 -04:00
Andrew Kelley
0d6a6c76ea
add missing "referenced here" notes for lazy values 2019-08-22 12:56:35 -04:00
Andrew Kelley
8460d5617c
introduce lazy values
see #2174
2019-08-22 12:08:04 -04:00
Marc Tiehuis
0e75fef1de
Merge pull request #3106 from ziglang/hash-tooling-changes
Hash tooling changes
2019-08-21 21:54:12 -10:00
Andrew Kelley
efdbede7ab
breaking: remove field alignment kludge
This breaks behavior tests as well as compile error notes for generic
function calls. However it introduces better circular dependency compile
errors.

The next step is to add Lazy Values to fix the regressions.
2019-08-21 19:27:51 -04:00
Andrew Kelley
ec7d7a5b14
Merge pull request #2991 from emekoi/mingw-ci
mingw improvements
2019-08-21 12:29:42 -04:00
Marc Tiehuis
16fa255f48 Inline full slice hashing
This gives moderate speed improvements when hashing small keys.
The crc/adler/fnv inlining did not provide enough speed up to warrant
the change.

OLD:

wyhash
  small keys: 2277 MiB/s [c14617a1e3800000]
siphash(1,3)
  small keys:  937 MiB/s [b2919222ed400000]
siphash(2,4)
  small keys:  722 MiB/s [3c3d974cc2800000]
fnv1a
  small keys: 1580 MiB/s [70155e1cb7000000]
adler32
  small keys: 1898 MiB/s [00013883ef800000]
crc32-slicing-by-8
  small keys: 2323 MiB/s [0035bf3dcac00000]
crc32-half-byte-lookup
  small keys:  218 MiB/s [0035bf3dcac00000]

NEW:

wyhash
  small keys: 2775 MiB/s [c14617a1e3800000]
siphash(1,3)
  small keys: 1086 MiB/s [b2919222ed400000]
siphash(2,4)
  small keys:  789 MiB/s [3c3d974cc2800000]
fnv1a
  small keys: 1604 MiB/s [70155e1cb7000000]
adler32
  small keys: 1856 MiB/s [00013883ef800000]
crc32-slicing-by-8
  small keys: 2336 MiB/s [0035bf3dcac00000]
crc32-half-byte-lookup
  small keys:  218 MiB/s [0035bf3dcac00000]
2019-08-21 21:38:02 +12:00
Marc Tiehuis
7854a52a6b Add iterative-only filter to hash benchmark 2019-08-21 21:02:24 +12:00
Marc Tiehuis
48410943cb Add more hash functions to benchmark scripts
Changed CRC api so the polynomial is specified as an enum for simpler
construction.
2019-08-21 20:46:15 +12:00
Marc Tiehuis
c050ec4e57 Update hash/crypto benchmark scripts 2019-08-21 20:34:12 +12:00
Andrew Kelley
81c441f885
remove incorrect assert regarding 128-bit integers
LLVM incorrectly reports 8 as the alignment of i128 on x86_64 but it
correctly reports 16 as the alignment of i128 on aarch64.

closes #3101
2019-08-20 21:17:57 -04:00
Andrew Kelley
3b5a8858c2
Merge branch 'euantorano-fix/3012-os-getrandom-fill-buffer'
Closes #3016
Closes #3012

Thanks @euantorano!
2019-08-20 15:54:09 -04:00
Andrew Kelley
9bf283c085
fixups
* getrandom libc prototypes had the wrong return type
 * `total_read` local variable was unnecessary since the sub-slice
   buffer has a length
 * I was able to get rid of all the integer casts
 * the err == 0 check can be a switch case
 * add missing `return` statement
2019-08-20 15:25:30 -04:00
Euan Torano
79354243e3
fix os.getrandom logic to fill the entire buffer 2019-08-20 14:52:38 -04:00
Euan Torano
8c32c09807
Fix InStream.readNoEof 2019-08-20 14:52:10 -04:00
Andrew Kelley
c175e53564
add std.c.printf 2019-08-20 14:42:39 -04:00
Andrew Kelley
f0a141f799
Merge branch 'FireFox317-fix-issue-3030'
closes #3084
closes #3030
2019-08-20 14:42:02 -04:00
Andrew Kelley
276eb4402b
specify the target for the newest test case 2019-08-20 14:40:57 -04:00
Timon Kruiper
2addec8ea1
compiler error when variable in asm template cannot be found 2019-08-20 14:11:03 -04:00
Marc Tiehuis
2aa18b9097
Merge pull request #3090 from ziglang/fmt-internal
fmt changes
2019-08-19 19:48:05 -10:00
Andrew Kelley
3dbed54294
fix @bitCast of packed struct literal
closes #3042
2019-08-19 17:50:37 -04:00
Andrew Kelley
07c5e90601
Merge branch 'mikdusan-issue.3010'
closes #3022
closes #3010

thanks @mikdusan
2019-08-19 17:36:35 -04:00
Andrew Kelley
6bc520ab95
solve it a slightly different way
the error handling of result locations is a bit awkward but it should
basically be the same everywhere
2019-08-19 17:35:19 -04:00
Michael Dusan
24deb1a7fe
fix @bitCast segfault with literal array param
closes #3010
2019-08-19 17:24:14 -04:00
Aaron Klapatch
efc2237e5a added documentation for field access to C pointers (#3088) 2019-08-19 16:47:16 -04:00
Andrew Kelley
d067a037cc
fix void array as a local variable initializer
Related: #1767
2019-08-19 15:58:31 -04:00
Andrew Kelley
44fb5275c1
fix array multiplication not setting parent value info
closes #3095
2019-08-19 14:46:12 -04:00
Andrew Kelley
3f7f520036
don't put libc on the elf linker line for objects
closes #3093
2019-08-19 12:33:36 -04:00
Marc Tiehuis
e0447c6ddd std/fmt: Make FormatOptions arguments non-comptime
No need and should help avoid exessive function monomorphizaton.
2019-08-19 22:28:13 +12:00
Marc Tiehuis
98859c885e std/fmt.zig: Pass full options struct to all internal functions
The fill specifier is now handled in some cases. The default fill of '0'
is now ' ' for integers and non-byte sequences.
2019-08-19 22:15:15 +12:00
Nick Erdmann
5a0275c247 fix error message when dependency requires position independent code 2019-08-18 19:33:25 -04:00
Andrew Kelley
ea1734773b
add compile error for async frames depending on themselves 2019-08-17 19:47:49 -04:00
Marc Tiehuis
6844dafeca std/fmt: Move pointer parsing out of main state machine
This allows us to format a pointer with alignment/padding as we would
with any other format specifier.

e.g. {*:5}
2019-08-18 11:06:54 +12:00
Andrew Kelley
57b90d2d98
allow implicit cast of fn to async fn
it forces the fn to be async. closes #3079
2019-08-17 17:22:20 -04:00
Andrew Kelley
66a490c27c
detect non-async function pointer of inferred async function
closes #3075
2019-08-17 16:49:23 -04:00