Marc Tiehuis
fbcdf78cbd
Simplify wyhash and improve speed
...
This removes the exposed stateless variant since the standard variant
has similar speed now.
Using `./benchmark --filter wyhash --count 1024`, the speed change has
changed from:
wyhash
iterative: 4093 MiB/s [6f76b0d5db7db34c]
small keys: 3132 MiB/s [28c2f43c70000000]
to
wyhash
iterative: 6515 MiB/s [673e9bb86da93ea4]
small keys: 10487 MiB/s [28c2f43c70000000]
2019-08-27 19:42:37 +02:00
Sahnvour
90e921f7a7
wyhash: readd the stateful streaming version so that both are available
...
and rename the stateless one so that's it is not the default option
2019-08-24 15:37:47 +02:00
Sahnvour
4c882e731f
hash_map: adding a StringHashMap for convenience
2019-08-24 15:30:23 +02:00
Sahnvour
1498ccac2a
auto_hash: better generic hashing implementation
...
autoHash forbids slices as input
hash was added to handle all types from autoHash plus slices, with a specified strategy
2019-08-24 15:30:23 +02:00
Marc Tiehuis
a610352271
std/hash: Revert crc32 api change
...
This is user specified and the user doesn't necessarily have to use one
of the provided polynomials declared hence we can't use an enum.
Thanks @daurnimator for catching this.
2019-08-24 19:05:05 +12: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
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
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
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
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
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
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
456a244d62
fix event loop regression on macos
2019-08-17 11:40:48 -04:00
Andrew Kelley
e24cc2e77b
std.event.Loop: fix not waking up after file system I/O
...
for single threaded event loops
2019-08-16 23:19:13 -04:00
Andrew Kelley
3dce41b61a
improvements to std lib for event-based I/O
2019-08-16 21:29:29 -04:00
Andrew Kelley
13c584d325
add compile error for casting const frame to anyframe
...
See #3063
2019-08-16 11:38:41 -04:00
Andrew Kelley
7874d5a40b
zig fmt: add more test cases
2019-08-16 10:11:53 -04:00
Vexu
2151f84d59
implement new async syntax in self-hosted compiler
2019-08-16 06:17:28 -07:00
Andrew Kelley
7e75e1075e
zig fmt
2019-08-15 18:19:04 -04:00
Andrew Kelley
13b5a4bf8c
remove cancel
2019-08-15 14:05:12 -04:00
Andrew Kelley
5092634103
avoid the word "coroutine", they're "async functions"
2019-08-13 14:14:19 -04:00
Andrew Kelley
12ff91c1c9
alignment of structs no longer depends on LLVM
...
fixes async function tests in optimized builds
2019-08-13 12:44:30 -04:00
Andrew Kelley
8a9289996a
Merge remote-tracking branch 'origin/master' into rewrite-coroutines
2019-08-13 11:39:32 -04:00
Andrew Kelley
24d5ec0783
fix async function frames not aligned enough
2019-08-11 22:35:12 -04:00
Andrew Kelley
4d8d513e16
all tests passing
2019-08-11 19:53:10 -04:00
Andrew Kelley
1b83ee78a4
allow comptime_int to implicit cast to comptime_float
2019-08-11 12:01:02 -04:00
data-man
4bd4c5e06d
Fixed tiny typo in the math module (shr's description)
2019-08-11 08:15:42 -07:00
Andrew Kelley
0bf6796b76
fix regression in std.math.min
...
closes #3035
2019-08-09 10:22:02 -04:00
Andrew Kelley
da56959a9a
closer to std lib event stuff working
2019-08-08 16:41:38 -04:00
Andrew Kelley
93840f8610
fix var args call on non-generic function
2019-08-08 15:34:41 -04:00
Andrew Kelley
cfe84423c9
fix segfault with var args
2019-08-08 15:13:05 -04:00
Andrew Kelley
e6ef00233e
Merge pull request #3025 from euantorano/fix/3015-std-os-window-rtlgenrandom
...
Fix #3015 - fix RtlGenRandom function signature
2019-08-07 14:21:54 -07:00
Euan Torano
f2bef0447a
Remove unneeded casts.
2019-08-07 22:19:25 +01:00
Andrew Kelley
2cd5e55581
std.math.min: return a more restrictive type sometimes
2019-08-07 16:28:23 -04:00
Euan Torano
2d25348f63
Fix function signature and use a loop to ensure buffer is filled.
2019-08-06 19:32:22 +01:00
Euan Torano
7b8c96612f
Fix #2993 - use getrandom on freebsd
2019-08-05 09:31:38 -07:00
Euan T
8aa87ec441
Add misisng newline
2019-08-05 09:23:15 -07:00
Euan Torano
0157365872
Add missing S_IS* for NetBSD
2019-08-05 09:23:15 -07:00
Andrew Kelley
b7c94be688
Merge remote-tracking branch 'origin/master' into rewrite-coroutines
2019-08-04 19:10:36 -04:00
Sahnvour
8c99a51993
Merge pull request #2797 from Sahnvour/hashing
...
hash algorithm improvements
2019-08-04 21:02:00 +02:00
Sahnvour
54255ee32e
autohash: force inlining of integer hashing so that the optimizer can see the fast path based on key's size which is known at comptime
...
otherwise it will always outline the call to hasher.update, resulting in much worse performance
2019-08-04 12:34:37 +02:00