Commit Graph

7683 Commits (877f39d2270a648fac2dda048bf972b7cc9a1430)

Author SHA1 Message Date
Andrew Kelley 877f39d227
fix async function call resolves target fn frame 2020-02-07 22:48:31 -05:00
Andrew Kelley 39ee1f4b97
fix invalid behavior tests from prev commit
and fix "no-op casts" from incorrectly spilling
2020-02-07 16:31:52 -05:00
Andrew Kelley 4a60689309
more carefully calculate llvm field indexes
more correctly solves #4403
2020-02-07 14:54:58 -05:00
Andrew Kelley 3fce8008cc
skip self-hosted for now as we work towards async I/O
1. behavior tests with --test-evented-io
 2. std lib tests with --test-evented-io
 3. fuzz test evented I/O a bit, make it robust
 4. make sure it works on all platforms (kqueue, Windows IOCP,
    epoll/other)
 5. restart efforts on self-hosted
2020-02-07 12:30:16 -05:00
Andrew Kelley 7f4cce3345 add fcntl support on darwin 2020-02-07 12:11:15 -05:00
Andrew Kelley 71873e7133
implement os.pipe2 for darwin 2020-02-07 11:28:42 -05:00
Andrew Kelley 0b5bcd2f56
more std lib async I/O integration
* `zig test` gainst `--test-evented-io` parameter and gains the ability
   to seamlessly run async tests.
 * `std.ChildProcess` opens its child process pipe with O_NONBLOCK when
   using evented I/O
 * `std.io.getStdErr()` gives a File that is blocking even in evented
   I/O mode.
 * Delete `std.event.fs`. The functionality is now merged into `std.fs`
   and async file system access (using a dedicated thread) is
   automatically handled.
 * `std.fs.File` can be configured to specify whether its handle is
   expected to block, and whether that is OK to block even when in
   async I/O mode. This makes async I/O work correctly for e.g. the
   file system as well as network.
 * `std.fs.File` has some deprecated functions removed.
 * Missing readv,writev,pread,pwrite,preadv,pwritev functions are added
   to `std.os` and `std.fs.File`. They are all integrated with async
   I/O.
 * `std.fs.Watch` is still bit rotted and needs to be audited in light
   of the new async/await syntax.
 * `std.io.OutStream` integrates with async I/O
 * linked list nodes in the std lib have default `null` values for
   `prev` and `next`.
 * Windows async I/O integration is enabled for reading/writing file
   handles.
 * Added `std.os.mode_t`. Integer sizes need to be audited.
 * Fixed #4403 which was causing compiler to crash.

This is working towards:

./zig test ../test/stage1/behavior.zig --test-evented-io

Which does not successfully build yet. I'd like to enable behavioral
tests and std lib tests with --test-evented-io in the test matrix in the
future, to prevent regressions.
2020-02-06 18:05:50 -05:00
Andrew Kelley 704cd977bd
ability to run tests in evented I/O mode
This adds `--test-evented-io` as a CLI parameter.

see #3117
2020-02-05 16:53:29 -05:00
Andrew Kelley 84323504ac
std.fmt.format: comptime output parameter 2020-02-05 16:52:18 -05:00
Andrew Kelley 378d733439
Merge pull request #4345 from Rocknest/open-di
Fix double close in openElfDebugInfo
2020-02-05 15:56:56 -05:00
Andrew Kelley 40b1fecace
Merge pull request #4363 from Vexu/trans-std-c
Use std.c.tokenizer in translate-c
2020-02-05 14:29:39 -05:00
Vexu f196ddd251
translate c type names 2020-02-05 17:52:46 +02:00
Rocknest f30feab1b9 Link the issue in doc comment 2020-02-05 17:19:00 +02:00
Rocknest a56183197d Fix double close in openElfDebugInfo 2020-02-05 17:18:30 +02:00
Michael Dusan b022db16ec
Merge pull request #4394 from mikdusan/fix-cmake-regression
stage1: fix cmake regression
2020-02-05 10:01:16 -05:00
Michael Dusan d0a9da74ef
stage1: fix cmake regression
- add `None` as a valid CMAKE_BUILD_TYPE
- this is a legitimate setting used by packagers

regression was caused by c6df5deb34
2020-02-05 08:24:50 -05:00
Vexu 1f49460dcb
fix regressions in comments and string prefixes 2020-02-05 08:35:30 +02:00
Michael Dusan 25cbee0b84
Merge pull request #4390 from mikdusan/cherry-pick
stage1: guard against case-mismatched build types
2020-02-04 22:34:46 -05:00
Michael Dusan c6df5deb34
stage1: guard against case-mismatched build types
- zig CMakeLists.txt CMAKE_BUILD_TYPE string comparisons are case-sensitive
- cmake itself is unclear about how tolerant it is for case-mismatches
- add CMAKE_BUILD_TYPE guard in CMakeLists.txt to force exact matches
2020-02-04 20:39:05 -05:00
LemonBoy 3e7c02edc1 std: Fix edge case in isAbsolute fn family
* Empty strings are not considered absolute paths.
* Refactor some common code.

Closes #4382
2020-02-04 15:52:38 -05:00
nofmal a697de3eac Add basic linux termios implementation 2020-02-04 14:09:57 -05:00
Andrew Kelley 0fdcd5c4cb
Merge pull request #4337 from LemonBoy/stdlib-bsearch
stdlib: Add binary search function
2020-02-03 16:53:00 -05:00
LemonBoy 1658becb62 fmt: Fix one more edge case in container formatting 2020-02-03 16:03:48 -05:00
LemonBoy db3aea3a0b Change API for binarySearch fn 2020-02-03 21:51:03 +01:00
Andrew Kelley 5504f155aa
Merge pull request #4366 from jayschwa/blake3
crypto: Add BLAKE3 hashing algorithm
2020-02-03 15:13:50 -05:00
Michaël Larouche 9b11e5e1f1 Add InstallRawStep to Zig build system that does a similar job to llvm-objcopy. To use it, do 'exe.installRaw("kernel.bin");' where exe is a LibExeObjStep
Part of #2826
2020-02-03 15:07:34 -05:00
Jay Petacat cb2c14e03f blake3: Workaround issue #4373 with named types 2020-02-02 18:44:50 -05:00
LemonBoy 958f00f1c7 Don't generate any type info for void return types
Closely matches what the LLVM debug emitter expects, the generated DWARF
infos are now standard-compliant.
2020-02-02 15:30:12 -05:00
Andrew Kelley a795c36d7b
Merge pull request #4352 from LemonBoy/fix-4349
fmt: Respect trailing commas in field declarations
2020-02-02 15:27:53 -05:00
frmdstryr 32291ab702 Add support for dependent packages when using build.zig 2020-02-02 15:21:27 -05:00
Jay Petacat 923e567c6d blake3: Replace `&arr` with `arr[0..]` for slice args 2020-02-02 14:59:36 -05:00
Jay Petacat b143fc0d32 blake3: Name and const pointer refinements 2020-02-02 14:42:57 -05:00
Jay Petacat d098e212ad blake3: Convert `*const [n]u8` types to `[n]u8`
I do not see many cases of constant pointers to arrays in the stdlib.
In fact, this makes the code run a little faster, probably because Zig
automatically converts to pointers where it makes sense.
2020-02-02 14:08:10 -05:00
Vexu 35c40f0a70
fix regressions 2020-02-02 10:49:51 +02:00
Jay Petacat 4b86c1e3bb crypto: Add BLAKE3 hashing algorithm
This is a translation of the [official reference implementation][1] with
few other changes. The bad news is that the reference implementation is
designed for simplicity and not speed, so there's a lot of room for
performance improvement. The good news is that, according to the crypto
benchmark, the implementation is still fast relative to the other
hashing algorithms:

```
         md5: 430 MiB/s
        sha1: 386 MiB/s
      sha256: 191 MiB/s
      sha512: 275 MiB/s
    sha3-256: 233 MiB/s
    sha3-512: 137 MiB/s
     blake2s: 464 MiB/s
     blake2b: 526 MiB/s
      blake3: 576 MiB/s
    poly1305: 1479 MiB/s
    hmac-md5: 653 MiB/s
   hmac-sha1: 553 MiB/s
 hmac-sha256: 222 MiB/s
      x25519: 8685 exchanges/s
```

[1]: https://github.com/BLAKE3-team/BLAKE3
2020-02-01 23:03:23 -05:00
Vexu 3b23929be5
use std.c.tokenizer in translate-c 2020-02-02 01:40:46 +02:00
daurnimator 4f2652d504 Winsock errors can be an enum 2020-02-01 14:29:16 -05:00
LemonBoy 0bf91cce58 windows: Minor changes to psapi prototypes 2020-02-01 13:43:46 -05:00
LemonBoy e548195fd5 fmt: Use left brace position instead of the right one
Fix a typo and add a test case.
2020-02-01 15:28:23 +01:00
LemonBoy f34abbf260 fmt: Handle declarations in line with the opening brace 2020-02-01 14:43:31 +01:00
LemonBoy 3640c682a2 Run `zig fmt` 2020-02-01 11:32:53 +01:00
LemonBoy 8309ee8752 fmt: Respect trailing comma for field declarations
Closes #4349
2020-02-01 11:28:21 +01:00
Andrew Kelley e6a812c827
Merge pull request #4340 from daurnimator/ntstatus-as-enum
Windows error codes as non-exhaustive enums
2020-01-31 18:27:17 -05:00
LemonBoy dee7804a81 fmt: Fix logic to find the argument list closing )
Closes #4341
2020-01-31 18:25:58 -05:00
Andrew Kelley a62b4f268a
Merge pull request #4347 from LemonBoy/psapi
windows: Add psapi API
2020-01-31 18:25:25 -05:00
LemonBoy c910aa8555 windows: Add GetCurrentProcess definition 2020-02-01 00:01:09 +01:00
LemonBoy 9ffc13b6c4 windows: Add psapi API
Export both the "old-style" definitions from psapi and the "new-style"
ones from kernel32.
2020-01-31 23:50:26 +01:00
daurnimator ab46713fa6 std: update for linux 5.5 release 2020-01-31 10:18:17 -05:00
daurnimator a351350b88
std: format non-exhaustive enums 2020-01-31 22:33:56 +11:00
daurnimator b9f720365c
Turn win32 errors into a non-exhaustive enum 2020-01-31 22:33:55 +11:00