Commit Graph

1759 Commits (0a280b6062c0b0a3c7a460499c72be40acfcac46)

Author SHA1 Message Date
emekoi 25d7f5b654 switching back to EnterCriticalSection 2019-01-11 09:56:34 -06:00
emekoi aaae2f5705 switching from EnterCriticalSection to TryEnterCriticalSection 2019-01-11 09:56:33 -06:00
emekoi 99f44219bc updated structs 2019-01-11 09:56:33 -06:00
emekoi b61bce254c added mutex for windows 2019-01-11 09:56:32 -06:00
Marcio 5f26d1dddb freebsd: fix wrong call to clock_getres (#1871)
Reported-by: daurnimator
2019-01-05 13:34:47 -05:00
Marcio Giaxa 5c2a1055a0 freebsd: add sockaddr structs 2019-01-04 16:31:57 -05:00
Marcio Giaxa 4d9547ff2e freebsd: implement clock related functions
- clock_gettime
 - clock_getres
2019-01-04 16:31:57 -05:00
Marcio Giaxa 1e781a30f6 freebsd: add clock const definitions 2019-01-04 16:31:57 -05:00
Andrew Kelley d8b6fa9134
Merge pull request #1859 from mgxm/fbsd2
Progress towards tier 1 support for FreeBSD x86_64
2018-12-29 12:49:23 -05:00
Andrew Kelley a918ce26b8
fixups 2018-12-26 15:25:54 -05:00
Marcio Giaxa 52be7d7404 freebsd: fix flags for opening files
Prior to this fix, the compare-outputs test suite was showing a strange
behavior, the tests always stopped between tests 6-8 and had a stack track
similar to each other.

```
Test 8/68 compare-output multiple files with private function (ReleaseSmall)...OK
/usr/home/mgxm/dev/zig/zig-cache/source.zig:7:2: error: invalid token: '&'
}&(getStdOut() catch unreachable).outStream().stream;
 ^
The following command exited with error code 1:

```

With the wrong O_* flags, the source code was being written in append mode which
resulted in an invalid file

```zig
use @import("foo.zig");
use @import("bar.zig");

pub fn main() void {
	foo_function();
	bar_function();
}&(getStdOut() catch unreachable).outStream().stream;
	stdout.print("OK 2\n") catch unreachable;
}

fn privateFunction() void {
	printText();
}
```
2018-12-24 11:45:55 -02:00
Marcio Giaxa de473d4423
freebsd: implement std.os.time.sleep 2018-12-24 10:27:08 -02:00
nebulaeonline fdea12b2d9 msvc subsystem option handling; added uefi os type 2018-12-23 22:44:02 -05:00
Marcio Giaxa 682815f6e9
freebsd: remove syscall and use libc
Use libc interface for:
 - getdents
 - kill
 - openat
 - setgid
 - setuid
2018-12-23 23:30:31 -02:00
Marcio Giaxa 773bf80133 Merge branch 'master' into fbsd2 2018-12-23 23:21:59 -02:00
Andrew Kelley 0eba5b6744
I observed open() return EBUSY on linux
when trying to open for writing a tty fd that is already opened with
screen
2018-12-21 19:50:21 -05:00
Marcio Giaxa c26f543970
freebsd: fix Stat mode type 2018-12-21 15:04:55 -02:00
Marcio Giaxa a6f33e3dc5
freebsd: add realpath to freebsd/index.zig 2018-12-20 21:05:31 -02:00
Marcio Giaxa 46a0f60e4c
freebsd: use realpath() to resolve symbolic links 2018-12-20 20:57:58 -02:00
Greg V 76efc462e7 Add preadv/pwritev on FreeBSD 2018-12-20 23:55:44 +03:00
Greg V 054c7ab18a Fix stat/timespec definitions for FreeBSD 2018-12-20 23:54:09 +03:00
tgschultz f35ba34a88 Removed allocator from Linux version DynLib. Added dynamic_library.zig to std test list. 2018-12-20 14:49:34 -05:00
kristopher tate fb81b1978b
tests: re: 79db394;
ref: ziglang/zig#1832
2018-12-20 22:53:54 +09:00
Andrew Kelley 8768816d69
std.io: call the idiomatic std.mem.readInt functions
I originally called the Slice variants to work around
comptime code not supporting `@ptrCast`, but I fixed that
in 757d0665 so now the workaround is no longer needed.
2018-12-19 17:48:21 -05:00
Marcio Giaxa e5b4748101 freebsd: initial stack trace
Stack trace is partially working, with only a few symbols missing. Uses
the same functions that we use in Linux to get the necessary debug info.
2018-12-19 18:42:00 -02:00
Marcio Giaxa 9900f94afe freebsd: use sysctl to get the current executable path
FreeBSD doesn't mount procfs as default on the base system, so we can't
depend on it to get the current path, In this case, we use sysctl(3) to
retrieves the system information and get the same information.

 - CTL_KERN: High kernel limits

 - KERN_PROC: Return selected information about specific running
   processes.

 - KERN_PROC_PATHNAME: The path of the process

 - Process ID: a process ID of -1 implies the current process.
2018-12-19 18:42:00 -02:00
Marcio Giaxa 1811e7e6c9 freebsd: remove getrandom dependency from libc
The system call getrandom(2) just landed on FreeBSD 12, so if we want to
support some earlier version or at least FreeBSD 11, we can't depend on
the system call.
2018-12-19 18:42:00 -02:00
Marcio Giaxa 11ced4f99d freebsd: use libc interface instead system calls
Remove all syscalls references

 * dup2()
 * chdir()
 * execve()
 * fork()
 * getcwd()
 * isatty()
 * readlink()
 * mkdir()
 * mmap()
 * munmap()
 * read()
 * rmdir()
 * symlink()
 * pread()
 * write()
 * pwrite()
 * rename()
 * open()
 * close()
 * lseek()
 * exit()
 * unlink()
 * waitpid()
 * nanosleep()
 * setreuid()
 * setregid()
 * raise()
 * fstat()
 * pipe()
 * added pipe2() extern c fn
2018-12-19 18:42:00 -02:00
Marcio Giaxa 1fc56b82ad freebsd: link against libc
Since the stable kernel ABI is through libc #1759
2018-12-19 18:42:00 -02:00
Marcio Giaxa 0273fbf710 freebsd: add access 2018-12-19 18:42:00 -02:00
Marcio Giaxa 5ea37f6e8c freebsd: add getdirentries 2018-12-19 18:41:59 -02:00
Marcio Giaxa 666b153144 freebsd: remove syscall files 2018-12-19 18:41:40 -02:00
Jimmi Holst Christensen a7670e80a4 Added formatting of function pointers (#1843) 2018-12-19 10:07:35 -05:00
Jimmi Holst Christensen 260c3d9cc0 formatType can now format comptime_int 2018-12-19 11:50:29 +01:00
Andrew Kelley f75262b79f
fix comptime pointer reinterpretation array index offset
closes #1835
2018-12-17 11:05:50 -05:00
Andrew Kelley 757d0665ae
implement comptime pointer cast
closes #955
closes #1835
2018-12-16 12:08:14 -05:00
Josh Wolfe 7533d1b14c mem foreign functions call the native ones
this reduces the amount of implementation to change for #1835
2018-12-16 11:59:29 -05:00
Andrew Kelley fff6e47125
fixups 2018-12-13 17:13:10 -05:00
Andrew Kelley 457f03e37d
Merge branch 'windows-wide-imports' of https://github.com/suirad/zig into suirad-windows-wide-imports 2018-12-13 15:57:24 -05:00
Andrew Kelley e98ba5fc40
add mem.readVarInt, fix InStream.readVarInt, fix stack traces
fixes a regression from b883bc8
2018-12-13 06:38:14 -05:00
Andrew Kelley 6395cf8d6b
fix mistakes introduced in b883bc8 2018-12-13 06:07:39 -05:00
Andrew Kelley 7417f2e4b3
freebsd: fix issues with syscalls 2018-12-13 00:33:13 -05:00
Andrew Kelley d770333827
freebsd: fix os_self_exe_path function and update std lib 2018-12-12 22:28:15 -05:00
Andrew Kelley b883bc873d
breaking API changes to all readInt/writeInt functions & more
* add `@bswap` builtin function. See #767
 * comptime evaluation facilities are improved to be able to
   handle a `@ptrCast` with a backing array.
 * `@truncate` allows "truncating" a u0 value to any integer
   type, and the result is always comptime known to be `0`.
 * when specifying pointer alignment in a type expression,
   the alignment value of pointers which do not have addresses
   at runtime is ignored, and always has the default/ABI alignment
 * threw in a fix to freebsd/x86_64.zig to update syntax from
   language changes
 * some improvements are pending #863

closes #638
closes #1733

std lib API changes
 * io.InStream().readIntNe renamed to readIntNative
 * io.InStream().readIntLe renamed to readIntLittle
 * io.InStream().readIntBe renamed to readIntBig
 * introduced io.InStream().readIntForeign
 * io.InStream().readInt has parameter order changed
 * io.InStream().readVarInt has parameter order changed
 * io.InStream().writeIntNe renamed to writeIntNative
 * introduced io.InStream().writeIntForeign
 * io.InStream().writeIntLe renamed to writeIntLittle
 * io.InStream().writeIntBe renamed to writeIntBig
 * io.InStream().writeInt has parameter order changed
 * mem.readInt has different parameters and semantics
 * introduced mem.readIntNative
 * introduced mem.readIntForeign
 * mem.readIntBE renamed to mem.readIntBig and different API
 * mem.readIntLE renamed to mem.readIntLittle and different API
 * introduced mem.readIntSliceNative
 * introduced mem.readIntSliceForeign
 * introduced mem.readIntSliceLittle
 * introduced mem.readIntSliceBig
 * introduced mem.readIntSlice
 * mem.writeInt has different parameters and semantics
 * introduced mem.writeIntNative
 * introduced mem.writeIntForeign
 * mem.writeIntBE renamed to mem.readIntBig and different semantics
 * mem.writeIntLE renamed to mem.readIntLittle and different semantics
 * introduced mem.writeIntSliceForeign
 * introduced mem.writeIntSliceNative
 * introduced mem.writeIntSliceBig
 * introduced mem.writeIntSliceLittle
 * introduced mem.writeIntSlice
 * removed mem.endianSwapIfLe
 * removed mem.endianSwapIfBe
 * removed mem.endianSwapIf
 * added mem.littleToNative
 * added mem.bigToNative
 * added mem.toNative
 * added mem.nativeTo
 * added mem.nativeToLittle
 * added mem.nativeToBig
2018-12-12 20:35:04 -05:00
Wink Saville 634d11ab28 Add add compiler_rt routines for float to signed integer conversion
And add std.math.f128_* constants.

The routines are:

  __fixdfdi, __fixdfsi, __fixdfti,
  __fixsfdi, __fixsfsi, __fixsfti,
  __fixtfdi, __fixtfsi, __fixtfti.

These all call fixint which is a generic zig function that does the
conversion:

  pub fn fixint(comptime fp_t: type, comptime fixint_t: type, a: fp_t) fixint_t

There are also a set tests:

  __fixdfdi_test, __fixdfsi_test, __fixdfti_test,
  __fixsfdi_test, __fixsfsi_test, __fixsfti_test,
  __fixtfdi_test, __fixtfsi_test, __fixtfti_test.
2018-12-12 00:21:42 -05:00
tgschultz 1a8570403f Minor doc-comment fix. 2018-12-09 20:59:51 -06:00
tgschultz 1188da926f Minor change to custom (de)serializer to allow them to be defined outside of the struct and aliased inside it. This will enable alternate generic serializers (i.e. one that follows pointers) on a struct-by-struct basis. 2018-12-09 20:52:16 -06:00
Jimmi Holst Christensen 518ff33e64 Allow packages in TestStep 2018-12-05 14:10:09 +01:00
Andrew Kelley 3a1612a0f5
std.debug: fix some issues with freestanding debug info 2018-12-02 23:46:45 -05:00
Andrew Kelley 5c3b8cb365
expose std.debug.DwarfInfo and delete unused function 2018-12-02 20:08:06 -05:00
Andrew Kelley a436d2ab8c
std.debug.printSourceAtAddressDwarf
which works in freestanding mode
2018-12-02 19:34:11 -05:00
Andrew Kelley 4292ed9571
std.debug.StackIterator 2018-12-02 18:54:04 -05:00
Andrew Kelley a40d160a5c
introduce std.io.SeekableStream
Relevant #764

dwarf debug info is modified to use this instead of std.os.File
directly to make it easier for bare metal projects to take advantage
of debug info parsing
2018-12-02 18:36:18 -05:00
Andrew Kelley 6f5e7ee09c
make std.unicode.Utf8Iterator public 2018-12-01 02:14:17 -05:00
Andrew Kelley a9eab69b58
zig build: addStaticExecutable 2018-12-01 01:21:59 -05:00
tgschultz 8423bd423b Added explicit test for #1810 issue to io_test.zig. 2018-11-30 15:02:10 -06:00
tgschultz 5936bdf8a4 Fixed readBits to cast errors to the correct errorset. See #1810 for why this wasn't caught earlier. 2018-11-30 14:50:17 -06:00
tgschultz b6489ff90a Increased range of bitwidths tested by "serialize/deserialize Int" tests. Added tests for float inf and NaN. 2018-11-30 14:50:17 -06:00
tgschultz 1ab66f3b55 Added serialization, bitstreams, traits for integer sign, TagPayloadType 2018-11-30 14:50:17 -06:00
Suirad cf266ff80a Update tests 2018-11-30 02:15:33 -06:00
Suirad e8e6ae57d4 Find CI env variables 2018-11-30 02:08:34 -06:00
Suirad 1fa2217c10 Simplify implementation 2018-11-30 02:08:34 -06:00
Suirad 24592d0216 Add more padding to parse buffer 2018-11-30 02:08:34 -06:00
Suirad 0abd5520bd Platform specific tests 2018-11-30 02:08:34 -06:00
Suirad 5dfca87a65 Update windows imports 2018-11-30 02:08:33 -06:00
Jimmi Holst Christensen 823969a5a4
Implemented new more flexible readLineFrom (#1801) 2018-11-29 22:38:39 +01:00
kristopher tate 2b78a90424
std.os.path: remove dependance on std.mem.join;
std/os/child_process.zig: windows

test/cli.zig: godbolt;

doc/docgen.zig
2018-11-30 03:52:27 +09:00
kristopher tate ff1b2889f3
std.mem: split: test for multiple seperator bytes; 2018-11-30 02:17:15 +09:00
kristopher tate 6a1a2898b1
std.mem: remove varargs on join to stop excessive inlined code;
join was preducing inline code for every unique call causing code bloat
2018-11-30 00:53:52 +09:00
dbandstra 53766e7a3a make parseUnsigned handle types <8 bits wide 2018-11-29 09:53:43 -05:00
daurnimator 4ecb3ceafb Add std.LinkedList.concat 2018-11-29 09:44:24 -05:00
Andrew Kelley 7005ec5efe
Revert "Add math min/max for Float and Value"
This reverts commit 078a0a6999.

On closer inspection, I'm not sure these values for float min/max
make sense. Why is it max instead of true_max? Why isn't it positive
and negative infinity?

Let's discuss further before committing to these changes.
2018-11-29 09:33:47 -05:00
Jimmi Holst Christensen f74320d56d Implemented getOrPutValue which wraps getOrPut 2018-11-29 09:10:15 +01:00
Wink Saville 078a0a6999 Add math min/max for Float and Value 2018-11-28 23:13:12 -05:00
Josh Wolfe 11e8afb37c fix child_process piped streams not getting closed 2018-11-28 18:33:55 -05:00
Andrew Kelley dd2450b1b2
tier 2 support for freebsd 2018-11-27 20:56:43 -05:00
Andrew Kelley e3bf40742d
Merge branch 'master' into freebsd2 2018-11-27 20:36:44 -05:00
Sahnvour 1fb15be05f stack traces: fix for windows 2018-11-27 20:34:55 -05:00
daurnimator 2baf0e2ffc add std.math.IntFittingRange 2018-11-27 10:19:06 -05:00
Andrew Kelley a5b79017a3
fix regression from d5648d26
thanks Wink Saville for the test case.
2018-11-27 00:52:32 -05:00
Andrew Kelley 7818550edc
Merge branch 'Fix-pushToParent-to-work-for-arrays-of-Objects' of https://github.com/winksaville/zig into winksaville-Fix-pushToParent-to-work-for-arrays-of-Objects 2018-11-27 00:45:46 -05:00
kristopher tate 0f7de58b64
std.mem: add new separate method and rework SplitIterator; 2018-11-26 02:02:17 +09:00
daurnimator f6cd02be65 add std.meta.stringToEnum 2018-11-25 11:48:11 -05:00
Josh Wolfe 9ae5200bd2 factor out and expose biased range limiting function 2018-11-24 22:25:21 -05:00
Josh Wolfe eed7b48fe3 test lots of types 2018-11-24 22:25:21 -05:00
Josh Wolfe 49b49618d2 add biased random range api 2018-11-24 22:25:21 -05:00
Josh Wolfe 1924ffa67d better debiased random range implementation 2018-11-24 22:25:21 -05:00
Andrew Kelley 4d747d452f
update zen os std lib for latest zig changes 2018-11-24 16:51:52 -05:00
Andrew Kelley 56a8f2b018
fix @intCast not catching negative numbers to unsigned 2018-11-24 14:36:16 -05:00
Andrew Kelley b953e322a8
std.os.path.realC: make overflow more clearly impossible 2018-11-21 13:41:10 -05:00
Andrew Kelley bb3ac177a8
fix incorrect buf len 2018-11-20 12:37:42 -05:00
kristopher tate a69695a28c std/mem: writeIntLE: buf.* to buf; 2018-11-20 11:11:07 -05:00
Wink Saville a05716bd20 Allow json tests to be easily filtered 2018-11-19 18:08:38 -05:00
Andrew Kelley 4dafdc00d5
zig fmt 2018-11-19 17:28:18 -05:00
Andrew Kelley 9493738e54
Merge branch 'freebsd-up' of https://github.com/myfreeweb/zig into freebsd2 2018-11-19 17:24:41 -05:00
Andrew Kelley 89e82281be
fix incorrect --help text 2018-11-19 13:26:35 -05:00
Wink Saville 81d9403dce Add SegmentedList.shrink
I was exploring std.zig.Tokenizer and wanted to compare performance of
arrays, SegmentedList and ArrayList and needed SegmentedList.shrink
to make the comparison "fair".
2018-11-19 10:53:25 -05:00
Marc Tiehuis 4c0163b69b std/rand: fix ziggurat next_f64 call 2018-11-19 21:56:45 +13:00
Andrew Kelley 921d9c9bcb
add std.meta.intToEnum 2018-11-18 20:18:24 -05:00
Josh Wolfe 3c05ad4012 atomic.Int.set 2018-11-18 19:43:13 -05:00
Wink Saville 8d54cbb834
Fix pushToParent to work for arrays of Objects
The reference `*array` is a copy of the value on the stack. Instead use
a reference to top of stack. This is the same technique used above for
`var object` in `Value.String`.

Added two simple tests.
2018-11-18 10:14:37 -08:00
Duncan e9b47d960b Fix setsockopt syscall on linux 2018-11-18 10:45:38 -05:00
Andrew Kelley 085d049a08
aarch64 improvements
* support C ABI for all return types
 * don't include __aeabi_uldivmod & co on aarch64 since
   it's 64 bit
2018-11-17 11:21:00 -05:00
Andrew Kelley 704374e512
rename `section` keyword to `linksection`
add zig fmt support for this syntax

closes #1152
2018-11-17 01:38:35 -05:00
Vallentin 398914eb71 Fixed typos 2018-11-16 14:03:39 -05:00
Matthew O'Connor fbd6a66ae7 camelCase std.rb.set_child to std.rb.setChild 2018-11-16 13:03:13 -05:00
kristopher tate e198417687 std/fmt/index.zig: support printing hex bytes on slices; 2018-11-16 10:22:33 -05:00
Matthew O'Connor 007783753e Change rb functions to use snakeCase. 2018-11-16 09:21:48 -05:00
Andrew Kelley ba361f31c6
more fixes related to readStruct API 2018-11-15 16:16:08 -05:00
Jimmi HC 3090f83800 Fixed failure using readStruct and gave async readStruct the same sig 2018-11-15 21:59:17 +01:00
Jimmi HC f4606842d2 Have readStruct in stream return a value instead of taking a pointer 2018-11-15 21:03:27 +01:00
Jimmi Holst Christensen 2a9843de95
Added NullOutStream and CountingOutStream (#1722) 2018-11-15 09:37:39 -08:00
Andrew Kelley b8b36f3cce
disable windows test until coroutines rewrite lands
See #1363
2018-11-15 10:02:12 -05:00
Andrew Kelley 0c3bd0c3d1
zig fmt: add --check flag
closes #1558
closes #1555
2018-11-15 00:26:43 -05:00
Josh Wolfe 65cddc5a19 test for readIntBE/LE 2018-11-14 21:40:53 -05:00
Josh Wolfe 8008ae470e io read/write int be/le optimizations 2018-11-14 20:57:51 -05:00
Josh Wolfe 772876b2f0 implement mem.writeIntLE, mem.writeIntBE 2018-11-14 20:57:46 -05:00
Josh Wolfe 8d8836c2d1 address port getter 2018-11-14 20:28:19 -05:00
Jimmi Holst Christensen 8139c5a516
New Zig formal grammar (#1685)
Reverted #1628 and changed the grammar+parser of the language to not allow certain expr where types are expected
2018-11-13 05:08:37 -08:00
emekoi 8e69a18d8c made colored output more consistent (#1706)
* made colored output more consistent
* added os.supportsAnsiEscapeCodes
2018-11-08 00:36:36 -05:00
Andrew Kelley ac8898e681
std.build.Builder: mutable env_map 2018-11-07 21:23:09 -05:00
kristopher tate 5d014d4b37 os.crypto: support for HmacBlake2s256 variety; 2018-11-03 15:03:48 -04:00
Andrew Kelley 1554dd9697
support building static self hosted compiler on macos
* add a --system-linker-hack command line parameter to work around
   poor LLD macho code. See #1535
 * build.zig correctly handles static as well as dynamic dependencies
   when building the self hosted compiler.
   - no more unnecessary libxml2 dependency
   - a static build on macos produces a completely static self-hosted
     compiler for macos (except for libSystem as intended).
2018-11-02 00:54:34 -04:00
Andrew Kelley 0f3e7387bf
cleanups 2018-10-31 10:44:05 -04:00
Andrew Kelley b04c6cee60
Merge branch 'add-test-for-atomic-Queue-dump' of https://github.com/winksaville/zig into winksaville-add-test-for-atomic-Queue-dump 2018-10-31 10:29:49 -04:00
emekoi c7799ff2b2 fixed comments 2018-10-27 12:58:40 -05:00
Andrew Kelley 2b395d4ede
remove @minValue,@maxValue; add std.math.minInt,maxInt
closes #1466
closes #1476
2018-10-26 15:01:51 -04:00
tgschultz 63f9769e80 fix "std" not found error in meta/trait 2018-10-24 01:47:52 -04:00
tgschultz 65b9fae4f8 fix error where "std" isn't found in meta/trait 2018-10-24 01:47:52 -04:00
Jimmi Holst Christensen 65b7d85524 Fixed code still using old ptr syntax 2018-10-20 17:59:06 +02:00
Greg V f3bc1c38bf Specify 16-byte stack alignment in _start on FreeBSD 2018-10-20 15:21:35 +03:00
Greg V e5627f8e63 Support more of std on FreeBSD 2018-10-20 15:21:35 +03:00
Greg V a983a0a59b Add /usr/local/lib path for libxml2 and link libc++ on FreeBSD 2018-10-20 15:21:32 +03:00
Greg V d6cab0d4b6 Various fcntl flags are also machine-independent on FreeBSD 2018-10-20 15:15:01 +03:00
Greg V afe26bbcbd System call numbers on FreeBSD are machine-independent
But e.g. sbrk is only removed in new architectures (aarch64, riscv),
so keep it in x86_64
2018-10-20 15:15:01 +03:00
Greg V 7a3f0a55d9 Add freebsd to more things 2018-10-20 15:15:01 +03:00
Greg V 1829c09303 Fix os/freebsd files 2018-10-20 15:15:01 +03:00
Marc Tiehuis 19659c3bd3 freebsd: Fix argc resolution in _start
FreeBSD appears to use rdi instead of rsp as in other posix systems.
According to some loose documentation, x86 passes values on the stack,
so amd64 freebsd may be the only exception.
2018-10-20 15:15:01 +03:00
Marc Tiehuis 102cb61e40 Get freebsd std compiling again 2018-10-20 15:15:01 +03:00
Marc Tiehuis e2b9c153bd Add initial freebsd stdlib functionality
Trivial program now compiles with now warnings.
2018-10-20 15:15:01 +03:00
Jimmi Holst Christensen db3b768eab Ran fmt on last PR 2018-10-19 23:27:16 +02:00
tgschultz 2a3fdd52ce Add std.meta (#1662)
Implement std.meta
2018-10-19 17:19:22 -04:00
Andrew Kelley eeb4f376a3
std.io: fix compile error when InStream has empty error set 2018-10-16 12:48:38 -04:00
Andrew Kelley 49bc33efe1 fix windows 2018-10-15 21:38:01 -04:00
Andrew Kelley d5648d2640
remove implicit cast from T to *const T
closes #1465
2018-10-15 18:23:47 -04:00
Jimmi Holst Christensen 378d3e4403
Solve the return type ambiguity (#1628)
Changed container and initializer syntax
* <container> { ... } -> <container> . { ... }
* <exrp> { ... } -> <expr> . { ...}
2018-10-15 09:51:15 -04:00
Andrew Kelley 3e72411db0
C ABI and compiler rt improvements for ARM
* add __multi3 compiler rt function. See #1290
* compiler rt includes ARM functions for thumb and aarch64 and
  other sub-arches left out. See #1526
* support C ABI for returning structs on ARM. see #1481
2018-10-13 15:18:00 -04:00
Marc Tiehuis 67fb4d1359 Improve time.sleep api 2018-10-11 11:57:59 -04:00
emekoi a22d9daaec added math.pow support for integer types. resolves #1637 (#1642)
added math.powi for integers; pow now handles ints
2018-10-10 10:50:23 -04:00
Andrew Kelley 84690ee05e
std/special/bootstrap: inline some functions to improve stack traces 2018-10-09 13:16:50 -04:00
Andrew Kelley 5a3c02137e
support building static libraries
closes #1493
closes #54
2018-10-09 13:15:14 -04:00
Andrew Kelley d40c4e7c89
Merge pull request #1429 from shawnl/arm64
initial arm64 support
2018-10-06 00:11:39 -04:00
Shawn Landden 2d27341724 arm64: respond to code review 2018-10-06 03:31:52 +00:00
emekoi 31469daca3 removed unneeded dll extension 2018-10-04 11:43:53 -04:00
Andrew Kelley 3f13a59cbc
better mutex implementation
based on Ulrich Drepper's "Futexes are tricky" paper, Mutex, Take 3

also includes tests
2018-10-03 14:55:12 -04:00
Andrew Kelley 66cb75d114
std.Mutex: implement blocking mutexes on linux
closes #1463

Thanks to Shawn Landden for the original pull request.
This commit is based on that code.
2018-10-03 13:19:10 -04:00
Andrew Kelley acefcdbca5
add std.os.linux.vfork and std.os.linux.exit_group 2018-10-02 14:08:32 -04:00
Wink Saville cd211bcc20 Add doc comment for tokenLocationPtr (#1618)
The algorithm seemed unusual and I had spent some effort understanding
it, so I thought I'd add a comment.
2018-10-02 00:51:53 -04:00
Andrew Kelley af229c1fdc
std lib (breaking): posixRead can return less than buffer size
closes #1414

std.io.InStream.read now can return less than buffer size
introduce std.io.InStream.readFull for previous behavior

add std.os.File.openWriteNoClobberC
rename std.os.deleteFileWindows to std.os.deleteFileW
remove std.os.deleteFilePosix
add std.os.deleteFileC

std.os.copyFile no longer takes an allocator
std.os.copyFileMode no longer takes an allocator
std.os.AtomicFile no longer takes an allocator

add std.os.renameW
add windows support for std.os.renameC

add a test for std.os.AtomicFile
2018-10-01 13:50:55 -04:00
Andrew Kelley d1ec8377d1
std lib: flesh out the async I/O streaming API a bit 2018-10-01 10:53:39 -04:00
Andrew Kelley 9d4eaf1e07
update std lib API for I/O
std.io.FileInStream -> std.os.File.InStream
std.io.FileInStream.init(file) -> file.inStream()
std.io.FileOutStream -> std.os.File.OutStream
std.io.FileOutStream.init(file) -> file.outStream()

remove a lot of error code possibilities from os functions

std.event.net.socketRead -> std.event.net.read
std.event.net.socketWrite -> std.event.net.write
add std.event.net.readv
add std.event.net.writev
add std.event.net.readvPosix
add std.event.net.writevPosix
add std.event.net.OutStream
add std.event.net.InStream

add std.event.io.InStream
add std.event.io.OutStream
2018-09-30 17:28:35 -04:00
Andrew Kelley 57c4d38c55
rename std.event.tcp to std.event.net 2018-09-30 10:37:58 -04:00
emekoi 623f5085f1 merged windows dll apis 2018-09-30 01:05:13 -05:00
emekoi d3bf267136 added dynamic library loading for windows 2018-09-30 01:05:13 -05:00
Jimmi Holst Christensen 1428ef3b07 Expose failing_allocator as *Allocator instead of const FailingAllocator 2018-09-30 01:23:05 +02:00
Josh Wolfe e7d9d00ac8 overhaul api for getting random integers (#1578)
* rand api overhaul
* no retry limits. instead documented a recommendation
  to call int(T) % len directly.
2018-09-27 00:35:38 -04:00
Andrew Kelley 9485043b3c
fix implicit casting to *c_void
closes #1588

also some small std lib changes regarding posix sockets
and one doc typo fix
2018-09-26 11:06:09 -04:00
Wink Saville 0e6c18c820 Remove StrLitKind enum
I was looking at the tokenizer specifically fn testTokenize and the
this statement looked odd:

  if (@TagType(Token.Id)(token.id) != @TagType(Token.Id)(expected_token_id)) {

I then saw the TODO and thought I'd remove StrLitKind figuring that
would make testTokenize simpler. It did so I thought I'd prepare this PR.

The tests are still working and stage2 zig seems to work, it compiles and
I was able to use the fmt command.
2018-09-24 19:28:46 -04:00
Wink Saville a170a64776 Fix typo in argsAlloc comment
Changed freeArgs to argsFree.
2018-09-23 13:12:57 -04:00
Andrew Kelley 7c5e3e1f8e
fixups 2018-09-21 14:15:58 -04:00
Andrew Kelley 073f7ebb0e
fix formatInt to handle upcasting to base int size 2018-09-20 13:46:20 -04:00
Andrew Kelley 15301504e2
Merge remote-tracking branch 'origin/llvm7' 2018-09-19 12:57:58 -04:00
Christian Wesselhoeft 5eeef1f5ed std/index.zig: Fix import
BufferOutStream is defined in io.zig
2018-09-18 19:01:35 -04:00
Andrew Kelley 6dd93ee5d9
fix regression from previous commit 2018-09-18 18:56:29 -04:00
Andrew Kelley 21328e0036
zig fmt: handle shebang lines
closes #1546
2018-09-18 18:36:39 -04:00
Andrew Kelley 275b4100c0
remove unnecessary setFloatMode calls
Now that Strict is the default, these calls only add noise.
2018-09-18 15:15:03 -04:00
Andrew Kelley 4b2719b51d
Merge remote-tracking branch 'origin/master' into llvm7 2018-09-18 15:05:47 -04:00
Andrew Kelley 15e59eb142
remove deprecated, unused windows functions
* `CryptAcquireContextA`
 * `CryptReleaseContext`
 * `CryptGenRandom`

See https://github.com/ziglang/zig/issues/534#issuecomment-422208368
2018-09-17 20:07:48 -04:00
Andrew Kelley 4c6f1e614a
remove `zig build --init`. add `zig init-lib` and `zig init-exe`
init-lib creates a working static library with tests, and
init-exe creates a working hello world with a `run` target.

both now have test coverage with the new "cli tests" file.

closes #1035
2018-09-17 17:11:18 -04:00
Andrew Kelley a2abdb185f
Merge remote-tracking branch 'origin/master' into llvm7 2018-09-16 10:51:58 -04:00
Andrew Kelley 3f776af3fa
fix alignment of structs
closes #1248
closes #1052
closes #1154
2018-09-14 19:08:59 -04:00
Wink Saville d9ed3d186d
Add test for Queue.dump
To make dump testable added dumpToSteam which takes a stream as input
and added the stream as a paraemter to dumpRecursive.

Added test "std.atomic.Queue dump"

And to make the test more robust SliceOutStream.pos is now public. This
allows the user of SliceOutStream to know the length of the data captured.
2018-09-14 14:14:58 -07:00
Wink Saville 82af31ce36 Fix additional regressions calling FileOutStream/FileInStream init()
This is caused by change 686663239a and not
fixed in 832caefc2a.
2018-09-14 12:07:21 -04:00
Andrew Kelley c06a61e9bf
remove `this`. add `@This()`.
closes #1283
2018-09-13 16:34:33 -04:00
Marc Tiehuis e70c543bc4 math/complex: cexp test correction and ldexp usage fix 2018-09-13 20:33:05 +12:00
Andrew Kelley a757533386 fix zig fmt on windows
closes #1069
2018-09-12 14:26:21 -04:00
Andrew Kelley 178d69191b windows: std.fs functions support concurrent ops
when reading and writing the same file descriptors
2018-09-12 13:55:35 -04:00
Andrew Kelley 0cfd019377
Merge pull request #1494 from ziglang/stage1-caching
stage1 caching
2018-09-12 12:40:16 -04:00
emekoi 54f7d58722 fixed WriteFile segfault 2018-09-12 07:01:48 -05:00
Andrew Kelley 04dc5cdaca
zig build: make the cache root dir before building 2018-09-11 18:15:08 -04:00
Andrew Kelley 9227315bf2
zig build: better placement of test exe artifact 2018-09-11 17:23:36 -04:00
Andrew Kelley 7dd3c3814d
fix incorrect error union const value generation
closes #1442

zig needed to insert explicit padding into this structure before
it got bitcasted.
2018-09-11 15:16:50 -04:00
Andrew Kelley c9474faa4e
Merge remote-tracking branch 'origin/master' into llvm7 2018-09-10 12:30:57 -04:00
Bas van den Berg 7c9f7b72c5 Add capacity and appendAssumeCapacity to ArrayList 2018-09-09 10:28:07 -04:00
Shawn Landden 17cb69cebc fix elf auxv handling
Auxillery vectors are not guaranteed to be in any order, this
just happens to work on x86_64.
2018-09-08 14:47:21 +00:00
Shawn Landden 7d6d1d1f60 NaNs do not have signedness.
From IEEE-754 standard:

Conversion of a quiet NaN in a supported format to an external character sequence
shall produce a language-defined one of “nan” or a sequence that is equivalent except
for case (e.g., “NaN”), with an optional preceding sign. (This standard does not interpret
the sign of a NaN.)
2018-09-08 03:52:28 +00:00
Shawn Landden cba0d76fbc clone() on arm64 2018-09-08 03:52:28 +00:00
Shawn Landden f8808edff4 simplify f64_min to equivilent value
arm64 complains about the old value (I added a test)
2018-09-08 03:52:28 +00:00
Shawn Landden 342cff28f5 initial arm64 support 2018-09-08 03:52:28 +00:00
Shawn Landden 4a8c992ef1 os: use less syscalls
these don't exist on new platforms (such as arm64)

also switch from the deprecated dirent to dirent64
2018-09-08 03:52:28 +00:00
Shawn Landden d956d30167 this is not arch-specific 2018-09-08 03:52:28 +00:00
Andrew Kelley a9a925e500
add C ABI tests 2018-09-06 16:29:35 -04:00
kristopher tate 15d30b967a std/crypto/x25519.zig: add test for `createPublicKey`; 2018-09-06 12:24:53 +09:00
kristopher tate d1855a0e93 std/crypto/x25519.zig: fix signature for `createPublicKey`; 2018-09-06 12:24:12 +09:00
Andrew Kelley b00007056d
update throughput test to new File API
closes #1468
2018-09-04 15:33:44 -04:00
Andrew Kelley dbde8254d0
Merge remote-tracking branch 'origin/master' into llvm7 2018-09-04 11:58:31 -04:00
Andrew Kelley 2bd2a8ea34
Merge pull request #1441 from ziglang/poly1305-x25519
Add poly1305 and x25519 crypto primitives
2018-09-04 10:34:46 -04:00
Marc Tiehuis 8b50d10a84 std/crypto: Clean up poly1305/x25519 2018-09-04 20:16:12 +12:00
Andrew Kelley 92f7474359 switch most windows calls to use W versions instead of A
See #534
2018-09-02 23:25:04 -04:00
Andrew Kelley 3eb89ee4db
fixups
* zig fmt
 * use canonical parameter order. memcpy has dest first and
   the base64 code follows the pattern.
 * pass correct radix to charToDigit
2018-09-02 19:23:30 -04:00
Andrew Kelley 0d8412d9f0
Merge branch 'std-fmt-hexToBytes' of https://github.com/kristate/zig into kristate-std-fmt-hexToBytes 2018-09-02 19:08:54 -04:00
Andrew Kelley ab387bb4c7
Merge pull request #1460 from ziglang/Sahnvour-windows-coff-issue721
Stack traces for Windows
2018-09-02 18:47:48 -04:00
Andrew Kelley 832caefc2a fix regressions 2018-09-02 18:35:32 -04:00
Andrew Kelley 4cd50865bf fix source file lookup 2018-09-02 17:58:50 -04:00
Andrew Kelley 98dc943c07 rework code to avoid duplicate operations 2018-09-02 15:58:08 -04:00
kristopher tate fbd9bac5e7 std/fmt/index.zig: add hexToBytes function under std.fmt;
Depends on #1454 being implemented;
2018-09-03 01:12:52 +09:00
Andrew Kelley 86e55567b4
Merge pull request #1454 from kristate/str-hexbytes-issue1453
std.fmt: print zeroed high-order bytes correctly in hex
2018-09-02 11:31:05 -04:00
Andrew Kelley 78a110cda5
Merge pull request #1452 from shawnl/patch-1
std/rb.zig: fix comment
2018-09-02 11:17:54 -04:00
Shawn Landden 528e3b43a6 these all use futex() (inaccurate comments) 2018-09-01 23:52:52 -07:00
kristopher tate d1752fbdc0 std/fmt/index.zig: test for printing double width hex bytes with zeros;
Co-Authored-By: Shawn Landden <shawn@git.icu>
2018-09-02 15:04:57 +09:00
kristopher tate 48d3fbef5c std/fmt/index.zig: set width from 0 to 2;
\x00 was printed as 0 and \x0E was printed as E;
\x00 now correctly prints 00 and \x0E correctly prints 0E;
2018-09-02 15:04:20 +09:00
Shawn Landden 4bf54f3010
std/rb.zig: fix comment 2018-09-01 22:23:34 -07:00
kristopher tate 7a633f472d std/fmt/index.zig: #1358: test bytes printed-out as hex; 2018-09-01 19:53:11 +09:00
kristopher tate 454b2362ee std/fmt/index.zig: #1358 allow bytes to be printed-out as hex;
Supports {x} for lowercase and {X} for uppercase;
2018-09-01 19:40:05 +09:00
Andrew Kelley 6ddbd345aa figuring out where /names stream is 2018-08-31 19:50:03 -04:00
Andrew Kelley b36b93fb3e awareness of debug subsections 2018-08-31 15:02:41 -04:00
Marc Tiehuis 763845f95c std/crypto: zig fmt 2018-08-31 18:45:45 +12:00
Marc Tiehuis 38399941d4 std/crypto: Update throughput_test.zig to include all hash functions
This avoids the need to recompile to test specific hash functions. This
also adds mac/key exchange performance tests as well.
2018-08-31 18:45:07 +12:00
Marc Tiehuis a7527389cc Make poly1305 and x25519 more idiomatic zig
This also adjusts the current hash/hmac functions to have a consistent
interface allowing easier switching/testing.
2018-08-31 18:40:09 +12:00
Andrew Kelley 99170aa13d finding source file, line, and column info 2018-08-31 01:01:37 -04:00
Andrew Kelley 72185e7dd3 finding the function that an address is in 2018-08-30 16:57:55 -04:00
Andrew Kelley 44f908d2e6 figuring out which module an address belongs in 2018-08-30 15:33:50 -04:00
Andrew Kelley 96117e20cc reading the module information substream 2018-08-30 03:44:34 -04:00
Marc Tiehuis 65b89f598c Add poly1305 and x25519 crypto primitives
These are translated from [monocypher](https://monocypher.org/) which
has fairly competitive performance while remaining quite simple.

Initial performance comparision:

Zig:
 Poly1305: 1423 MiB/s
 X25519:   8671 exchanges per second

Monocypher:
 Poly1305: 1567 MiB/s
 X25519:   10539 exchanges per second

There is room for improvement and no real effort has been made at all in
optimization beyond a direct translation.
2018-08-30 18:02:19 +12:00
Andrew Kelley 686663239a printing info from the ModuleInfo substream of DebugInfo 2018-08-29 19:00:24 -04:00
Andrew Kelley f1b71053de use RtlCaptureStackBackTrace on windows 2018-08-29 16:35:51 -04:00
Andrew Kelley 833477abf5 fix unresolved path preventing PDB loading 2018-08-28 18:55:51 -04:00
Andrew Kelley 41723f842c Merge branch 'windows-coff-issue721' of https://github.com/Sahnvour/zig into Sahnvour-windows-coff-issue721 2018-08-28 17:32:32 -04:00
Andrew Kelley 9de0f900e1
Merge pull request #1369 from shawnl/crypto
std/crypto: add chacha20
2018-08-28 16:07:58 -04:00
Marc Tiehuis 87eb95f816 speed up chacha20
The main changes are:

    Unrolling the inner rounds of salsa20_wordtobyte which doubles the speed.
    Passing the slice explicitly instead of returning the array saves a copy (can optimize out in future with copy elision) and gives ~10% improvement.
    Inlining the outer loop gives ~15-20% improvement but it costs an extra 4Kb of code space. I think the tradeoff is worthwhile here.
    The other inline loops are small and can be done by the compiler if it is worthwhile.
    The rotate function replacement doesn't alter the performance from the former.

The modified throughput test I've used to benchmark is as follows. Interestingly we need to allocate memory instead of using a fixed buffer else Zig optimizes the whole thing out.

https://github.com/ziglang/zig/pull/1369#issuecomment-416456628
2018-08-27 22:55:53 -07:00
Shawn Landden 444edd9aed std.crypto: add chaCha20
v3
2018-08-27 19:44:11 -07:00
Andrew Kelley fb6d3859e8
zig fmt 2018-08-27 19:25:40 -04:00
Andrew Kelley 4f2d49fd13
std.zig.parse: fix parsing of doc comments after fields
closes #1404
2018-08-27 19:21:38 -04:00
tgschultz ecc5464024 Handle unions differently in std.fmt (#1432)
* Handle unions differently in std.fmt

Print the active tag's value in tagged unions. Untagged unions considered unsafe to print and treated like a pointer or an array.
2018-08-27 17:25:33 -04:00
Andrew Kelley 7109035b78 Merge remote-tracking branch 'origin/master' into llvm7 2018-08-25 21:57:28 -04:00
Andrew Kelley 2cce171448 add test for previous commit 2018-08-25 17:28:30 -04:00
tgschultz 61c0c6d502
Fixed compile error when passing enum to fmt
Caused by struct printing behavior. Enums are different enough from structs and unions that the field iteration behavior doesn't do what we want even if @memberName didn't error on enums.
2018-08-25 10:51:49 -05:00
Andrew Kelley 815950996d Merge remote-tracking branch 'origin/master' into macos-stack-traces 2018-08-25 04:48:58 -04:00
Andrew Kelley ac36f98e72 fix stack traces on linux 2018-08-25 03:07:37 -04:00
Andrew Kelley 32901926f0 compilation unit cwd dir appears to be unnecessary on macos 2018-08-24 15:43:48 -04:00