Andrew Kelley
dd3437d5ba
fix build on windows
2017-12-04 02:08:26 -05:00
Andrew Kelley
0ad1239522
rework enums and unions and their relationship to each other
...
* @enumTagName renamed to @tagName and it works on enums and
union-enums
* Remove the EnumTag type. Now there is only enum and union,
and the tag type of a union is always an enum.
* unions support specifying the tag enum type, and they support
inferring an enum tag type.
* Enums no longer support field types but they do support
setting the tag values. Likewise union-enums when inferring
an enum tag type support setting the tag values.
* It is now an error for enums and unions to have 0 fields.
* switch statements support union-enums
closes #618
2017-12-03 20:43:56 -05:00
Andrew Kelley
137c8f5e8a
ability to set tag values of enums
...
also remove support for enums with 0 values
closes #305
2017-12-02 22:32:39 -05:00
Josh Wolfe
54a0db0daf
todo: fix #639
2017-12-01 19:54:01 -07:00
Josh Wolfe
67b8b00c44
implement insertion sort. something's broken
2017-12-01 16:11:39 -07:00
Josh Wolfe
5786df933d
add mem.readIntLE and readIntBE
2017-11-30 11:20:50 -07:00
Andrew Kelley
ccea8dcbf6
better error code for File.getEndPos failure
2017-11-29 21:34:17 -05:00
Josh Wolfe
88a7f203f9
add Buffer.appendFormat()
2017-11-29 19:31:09 -07:00
Josh Wolfe
418b0967fc
fix os.Dir compile errors
2017-11-29 17:52:58 -07:00
Andrew Kelley
91ef68f9b1
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-29 16:34:50 -05:00
Josh Wolfe
afbbdb2c67
move base64 functions into structs
2017-11-20 23:26:45 -07:00
Josh Wolfe
a44283b0b2
rework std.base64 api
...
* rename decode to decodeExactUnsafe.
* add decodeExact, which checks for invalid chars and padding.
* add decodeWithIgnore, which also allows ignoring chars.
* alphabets are supplied to the decoders with their
char-to-index mapping already built, which enables it to be
done at comptime.
* all decode/encode apis except decodeWithIgnore require dest
to be the exactly correct length. This is calculated by a
calc function corresponding to each api. These apis no longer
return the dest parameter.
* for decodeWithIgnore, an exact size cannot be known a priori.
Instead, a calc function gives an upperbound, and a runtime
error is returned in case of overflow. decodeWithIgnore
returns the number of bytes written to dest.
closes #611
2017-11-20 23:26:45 -07:00
dimenus
a7d07d412c
Added DLL loading capability in windows to the std lib.
2017-11-16 21:49:05 -06:00
Andrew Kelley
9a4da6c8d8
Merge branch 'master' into llvm6
2017-11-15 22:24:42 -05:00
Andrew Kelley
7a74dbadd7
add docs for std.base64
2017-11-14 17:58:58 -05:00
Ryan Saunderson
371e578151
Merge remote-tracking branch 'upstream/master' into llvm6
2017-11-14 07:00:27 -06:00
Andrew Kelley
a890380b6a
fix windows trying to run linux-only tests
2017-11-10 18:29:49 -05:00
Andrew Kelley
5ae53dacfb
rename test
2017-11-10 18:24:52 -05:00
Andrew Kelley
5895204c99
Merge branch 'linux_timer' of https://github.com/bscheinman/zig into bscheinman-linux_timer
2017-11-10 18:18:03 -05:00
Brendon Scheinman
87407b54b6
add epoll and timerfd support on linux
2017-11-10 15:12:46 -08:00
Andrew Kelley
1403748fd8
disable broken 32 bit windows test
...
See #537
2017-11-10 17:08:11 -05:00
Andrew Kelley
df89291d1c
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-10 16:45:01 -05:00
Andrew Kelley
403a46abcc
fix test failure on 32 bit windows
2017-11-10 16:03:14 -05:00
Andrew Kelley
20c2dbdbd3
add windows implementation of io.File.getEndPos
2017-11-10 14:36:03 -05:00
Andrew Kelley
1ac46fac15
add a std lib test for reading and writing files
...
* fix fstat wrong on darwin
* move std.debug.global_allocator to std.debug.global_allocator_state and make it private
* add std.debug.global_allocator as a pointer (to upgrade your zig code remove
the '&')
2017-11-10 14:17:23 -05:00
dimenus
e9d7623e1f
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-10 09:49:45 -06:00
Jeff Fowler
336d81894d
Fix Stat include in darwin land ( #605 )
2017-11-09 13:46:53 -05:00
Jeff Fowler
52521d5f67
fix typo on darwin lseek ( #602 )
2017-11-09 11:35:35 -05:00
Andrew Kelley
4543413491
std.io: introduce buffered I/O and change API
...
I started working on #465 and made some corresponding std.io
API changes.
New structs:
* std.io.FileInStream
* std.io.FileOutStream
* std.io.BufferedOutStream
* std.io.BufferedInStream
Removed:
* std.io.File.in_stream
* std.io.File.out_stream
Now instead of &file.out_stream or &file.in_stream to get access to
the stream API for a file, you get it like this:
var file_in_stream = io.FileInStream.init(&file);
const in_stream = &file_in_stream.stream;
var file_out_stream = io.FileOutStream.init(&file);
const out_stream = &file_out_stream.stream;
This is evidence that we might not need any OOP features -
See #130 .
2017-11-07 03:22:27 -05:00
Andrew Kelley
3a600297ca
Merge remote-tracking branch 'origin/master' into llvm6
2017-11-06 22:41:12 -05:00
scurest
f0dafd3f20
fix typos in std.io ( #589 )
...
Fixes a bug that prevented InStream.realAllAlloc from compiling.
2017-11-06 11:40:58 -05:00
scurest
48c8181886
fix redeclaration of mem ( #585 )
2017-11-05 15:46:54 -06:00
scurest
bd6f8d99c5
add test for c_allocator
2017-11-05 15:46:10 -06:00
Andrew Kelley
94ec2190f8
update to llvm master
2017-11-02 21:54:24 -04:00
Andrew Kelley
f7837f445e
bump build_runner allocator to use 30 MB
2017-11-01 16:46:10 -04:00
Andrew Kelley
25972be45c
fix windows build from previous commit
2017-10-31 22:24:02 -04:00
Andrew Kelley
9e234d4208
breaking change to std.io API
...
* Merge io.InStream and io.OutStream into io.File
* Introduce io.OutStream and io.InStream interfaces
- io.File implements both of these
* Move mem.IncrementingAllocator to heap.IncrementingAllocator
Instead of:
```
%return std.io.stderr.printf("hello\n");
```
now do:
```
std.debug.warn("hello\n");
```
To print to stdout, see `io.getStdOut()`.
* Rename std.ArrayList.resizeDown to std.ArrayList.shrink.
2017-10-31 04:47:55 -04:00
Andrew Kelley
5f28a9d238
cleaner verbose flags and zig build prints failed command
2017-10-25 23:10:41 -04:00
Andrew Kelley
73fe5f63c6
add some sanity tests for float printing
2017-10-24 21:57:58 -04:00
Andrew Kelley
1e784839f1
Merge branch 'float-printing' of https://github.com/scurest/zig into better-float-printing
2017-10-24 21:44:49 -04:00
Andrew Kelley
1828f8eb8e
fix missing compiler_rt in release modes
...
the optimizer was deleting compiler_rt symbols, so I changed
the linkage type from LinkOnce to Weak
also changed LinkOnce to mean linkonce_odr in llvm and
Weak to mean weak_odr in llvm.
See #563
2017-10-24 21:31:47 -04:00
scurest
262b7428cf
More corrections to float printing
...
Testing suggests all f32s are now printed accurately.
2017-10-24 14:18:50 -05:00
scurest
03a0dfbeca
Print better floats
2017-10-23 15:40:49 -05:00
Andrew Kelley
9b91c76088
std.fmt.format supports ints smaller than u8
...
closes #546
thanks to @Dimenus for the fix
2017-10-21 13:03:08 -04:00
Andrew Kelley
b3d12d2c9e
zig build: fix system libraries not respected for C artifacts
...
closes #550
2017-10-21 12:58:47 -04:00
Marc Tiehuis
09c0cf2dcf
Add c allocator ( #542 )
2017-10-17 08:13:04 -04:00
Andrew Kelley
8cfb0cfbce
std.os.ChildProcess: on windows cwd affects exe search path
...
to match posix semantics
disabling non-passing build-examples tests. See #538
2017-10-16 02:30:03 -04:00
Andrew Kelley
4e2a5e6b13
fix regression on posix from previous commit
2017-10-16 01:16:51 -04:00
Andrew Kelley
d08c57741a
ability to make a DLL
...
See #302
2017-10-16 01:14:28 -04:00
Andrew Kelley
e3ad13e054
fix windows argument parsing
2017-10-15 20:19:15 -04:00
Andrew Kelley
fca1d53625
std.io: fix bug when writing large buffer
2017-10-15 17:10:06 -04:00
Andrew Kelley
faf64b5d0f
fix posix from previous commit
2017-10-15 16:47:29 -04:00
Andrew Kelley
fcef7c4bb2
fix std.io.InStream for windows
...
now we handle PIPE_BROKEN as an EOF
also set up framework for debugging unexpected posix/windows errors
2017-10-15 16:45:43 -04:00
Andrew Kelley
bb169a7b36
fix child process stdio piping behavior on windows
2017-10-15 16:03:32 -04:00
Andrew Kelley
a98373f144
use correct integer type for windows BOOL
2017-10-15 14:01:55 -04:00
Andrew Kelley
6fe1c3186f
disable some of the failing tests
...
See #537
2017-10-15 02:04:21 -04:00
Andrew Kelley
3b0fe534bc
fix regression on posix from previous commit
2017-10-15 01:24:58 -04:00
Andrew Kelley
8ab5313043
implement environment variables for windows
2017-10-15 01:23:10 -04:00
Andrew Kelley
55e8bbd167
std.mem.IncrementingAllocator: check for errors
2017-10-15 01:22:36 -04:00
Andrew Kelley
f54aff4672
implement io.OutStream.openMode for windows
2017-10-14 18:23:16 -04:00
Andrew Kelley
46352f6bfe
std.io: remove unused constants
2017-10-14 18:12:14 -04:00
Andrew Kelley
531f3344dc
implement std.os.rename for windows
2017-10-14 17:56:18 -04:00
Andrew Kelley
61d715d784
implement std.os.symLink for windows
2017-10-14 17:39:44 -04:00
Andrew Kelley
ad6eec9480
fix regressions from previous commit on windows
2017-10-14 17:10:53 -04:00
Andrew Kelley
0307dc0b77
organize windows utility functions
2017-10-14 16:59:43 -04:00
Andrew Kelley
a68dc65327
fix os.makeDir for posix
2017-10-14 15:39:31 -04:00
Andrew Kelley
0bc80411f6
implement os.makeDir for windows
2017-10-14 15:32:29 -04:00
Andrew Kelley
8d3eaab871
implement std.os.ChildProcess for windows
2017-10-14 15:32:18 -04:00
Andrew Kelley
7f9dc4ebc1
fix std.os.getRandomBytes for windows
2017-10-11 23:14:48 -04:00
Andrew Kelley
b61a6ec8a6
implement command line argument parsing for windows
...
See #302
2017-10-11 22:50:16 -04:00
Andrew Kelley
717e791db2
better abort() implementation for windows
...
in debug mode, it spawns the debugger
2017-10-10 20:34:12 -04:00
Andrew Kelley
1f28d641c0
fix std.io.OutStream.close for windows
2017-10-10 19:36:35 -04:00
Andrew Kelley
1c28631738
use allocator.shrink instead of realloc in os.path.real
2017-10-10 11:31:53 -04:00
Andrew Kelley
e6334fe46d
implement std.io.InStream for windows
...
See #302
2017-10-09 15:59:10 -04:00
Andrew Kelley
055b856f13
fix build on non-windows
...
broken by previous commit
2017-10-09 14:27:14 -04:00
Andrew Kelley
c4262da8de
implement os.path.real for windows and update allocator interface
2017-10-09 14:21:35 -04:00
Andrew Kelley
a4310cf8b4
implement std.os.deleteFile for windows
2017-10-08 23:06:56 -04:00
Andrew Kelley
7f56744320
fix os.path.resolveWindows on non-windows
2017-10-08 21:52:26 -04:00
Andrew Kelley
9d5f15fe3d
implement os.getCwd for windows
2017-10-08 21:44:24 -04:00
Andrew Kelley
7cfab2fb5f
implement std.os.relative for windows
2017-10-08 21:44:24 -04:00
Andrew Kelley
e15e1e09f0
os.path.basename implementation for windows
2017-10-08 21:44:17 -04:00
Andrew Kelley
dcf5c9074e
more std.os.path work for windows
2017-10-08 21:43:58 -04:00
Andrew Kelley
08ee69dac3
implement os.path.dirname for windows
2017-10-08 21:43:43 -04:00
Snorre
522b431057
fix isatty for macOS and libc ( #523 )
2017-10-03 09:33:30 -04:00
Andrew Kelley
f86684f410
fix duplicated symbols in compiler-rt tests
2017-10-03 01:26:07 -04:00
Andrew Kelley
6a0c428997
use __chkstk_ms compiler-rt functions for __chkstk
...
I had to revert the target native features thing because there
is still some incorrect behavior with f128.
Reopens #508
partially reverts b505462509
See #302
2017-10-03 00:57:02 -04:00
Andrew Kelley
b505462509
replace __chkstk function with a stub that does not crash
...
Closes #508
See #302
2017-10-03 00:29:41 -04:00
Andrew Kelley
f1bd02e6f4
add @setAlignStack builtin
2017-10-03 00:29:27 -04:00
Andrew Kelley
b3f3db46be
compiler-rt: strong linkage for __chkstk
...
otherwise we get undefined symbol errors
2017-10-02 00:22:24 -04:00
Andrew Kelley
25ea8f7dbb
fix typo in compiler-rt
2017-10-02 00:13:56 -04:00
Andrew Kelley
5cbae7b671
better compiler-rt linkage logic
...
now the compiler-rt tests are passing on windows. See #302
2017-10-02 00:11:45 -04:00
Andrew Kelley
e3ea0b652c
still build compiler-rt when linking msvc CRT
...
because it's missing some things
2017-10-01 21:19:58 -04:00
Andrew Kelley
6ae631d1a7
add windows 32 bit to test matrix
...
See #302
2017-10-01 11:11:38 -04:00
Andrew Kelley
844e05f619
improve bit shift API in std.math
...
* `shl` moved to `shlExact`
* added `shl` and `shr` which are truncating like `<<` and `>>`.
closes #403
2017-09-30 21:09:58 -04:00
Andrew Kelley
c6295fe9ab
remove zigrt
...
adds test case for #394
partially reverts a32b5929cc
2017-09-30 20:21:57 -04:00
Andrew Kelley
9c6e12ac29
compiler-rt: add _aulldiv and _aullrem for i386 windows
2017-09-30 13:58:05 -04:00
Andrew Kelley
b7a4f16cc4
fix previous commit
2017-09-30 13:40:55 -04:00
Andrew Kelley
53aa72b58a
add ___chkstk_ms compiler-rt function
2017-09-30 13:39:37 -04:00
Marc Tiehuis
9dfe217be3
Allow 128-bit hex float literals
...
Closes #499 .
2017-09-28 23:33:36 +13:00
Andrew Kelley
fd5a5db400
implement IncrementingAllocator for Windows
2017-09-27 22:59:58 -04:00
Andrew Kelley
9ae66b4c67
add test for std.mem.IncrementingAllocator
...
See #501
2017-09-27 22:04:38 -04:00
Josh Wolfe
583ca36e62
add reset() method to IncrementingAllocator ( #501 )
2017-09-27 21:54:43 -04:00
Andrew Kelley
224cd8a01e
add fmt.parseInt
2017-09-26 19:40:51 -04:00
Andrew Kelley
768af66977
implement setreuid, setregid for darwin
2017-09-26 03:35:33 -04:00
Andrew Kelley
4f0f3a7d45
std.os.ChildProcess: setgid before setuid
...
otherwise we thwart our permissions to setuid
2017-09-26 03:17:58 -04:00
Andrew Kelley
5c2db5a942
add std.fmt.trim
2017-09-26 03:03:12 -04:00
Andrew Kelley
fd2d502e41
std.os.ChildProcess: ability to set both uid and gid
2017-09-26 02:42:06 -04:00
Andrew Kelley
cba4a9ad4a
update std.os.ChildProcess API
...
* add std.os.ChildProcess.setUserName
* add std.os.getUserId
2017-09-26 01:01:49 -04:00
Andrew Kelley
8f0dfcbcfb
Revert "windows API functions are not stdcalls"
...
This reverts commit 59410a2f13
.
yes they are
2017-09-24 04:18:13 -04:00
Andrew Kelley
59410a2f13
windows API functions are not stdcalls
2017-09-24 04:09:13 -04:00
Andrew Kelley
ba41be67f0
windows gui hello world
2017-09-24 03:55:45 -04:00
Andrew Kelley
7fd164f196
zig build: add linkFramework API
2017-09-23 17:59:30 -04:00
Andrew Kelley
2f98676bbe
std.build: fix -install_name for darwin dynamic C linking
2017-09-23 13:32:17 -04:00
Andrew Kelley
eb0867d3f0
std.build: fix building C dynamic libraries on darwin
2017-09-23 13:27:36 -04:00
Andrea Orru
e7a01c24a3
LinkedList helper functions ( #493 )
...
* Restore LinkedList helper functions
* mem.Allocator
2017-09-21 10:28:44 -04:00
Marc Tiehuis
c4a54377e3
Stop debug allocator ever panicking ( #492 )
2017-09-19 09:47:41 -04:00
Andrew Kelley
751ab72a82
std: fix os.sleep on darwin and windows
2017-09-19 09:46:41 -04:00
Andrew Kelley
10ad3253de
std.build: catch mistake of setting output path to build dir
...
closes #464
2017-09-18 18:01:58 -04:00
Andrew Kelley
24b6dcc507
std.build: explicitly disable stack protector when nostdlib
2017-09-18 15:30:07 -04:00
Andrew Kelley
385da95eb4
std.build: simpler API
...
merge LibExeObj and CLibExeObj
also make it so that you can disable libc when compiling C
2017-09-18 02:51:09 -04:00
Andrew Kelley
c5ca8b51f9
zig build: use stack protector for C code in debug mode
2017-09-17 19:20:48 -04:00
Andrew Kelley
7ee00730ac
add option to run tests in LLDB and turn it on for macos travis
2017-09-17 14:43:51 -04:00
Andrew Kelley
a9ecb26c34
std.os.ChildProcess: fix fd leak
2017-09-16 21:07:02 -04:00
Marc Tiehuis
71342f8249
Add dash arguments for cli
2017-09-17 12:26:13 +12:00
Andrew Kelley
766547dbfe
bump incrementing allocator memory in build system to 20MB
...
See #467
2017-09-14 20:28:38 -04:00
Andrew Kelley
14cda27b64
depend on embedded SoftFloat-3d instead of __float128
...
See #302
See #467
2017-09-14 01:46:47 -04:00
Andrew Kelley
d9eabde319
add Child property of slice type
...
also rename child field to Child for pointer and array
2017-09-13 14:30:57 -04:00
Jonathan Marler
3f8b26c06a
Allow INVALID_HANDLE_VALUE for windows to work on 32-bit and 64-bit. ( #457 )
2017-09-10 11:16:27 -04:00
jean-dao
0f7544cfca
std.io.InStream: add readLine function ( #458 )
2017-09-10 11:10:55 -04:00
Andrew Kelley
5fdf3fa195
std.fmt knows how to format &[N]u8
2017-09-09 19:42:31 -04:00
Marc Tiehuis
f725b20de6
Add appendSlice function ( #448 )
2017-09-09 13:49:40 -04:00
Marc Tiehuis
67a31befa6
Add exit function ( #450 )
2017-09-09 13:48:44 -04:00
Andrew Kelley
d244deb59e
fix std.Buffer.endsWith
...
thanks for the report by jean-dao
closes #443
2017-09-08 09:19:02 -04:00
Andrew Kelley
2c8ff1d47b
std.ChildProcess.spawn: handle 0 from waitpid correctly
2017-09-08 01:23:48 -04:00
Andrew Kelley
838d52a8be
std.os.ChildProcess: don't expect all SIGCHLD to come from spawn
2017-09-08 00:45:45 -04:00
Andrew Kelley
a81e516174
fix ChildProcess.spawn on darwin
2017-09-08 00:04:43 -04:00
Andrew Kelley
9fb4d1fd6c
std: os.ChildProcess knows when its child died
...
using signal handlers
2017-09-07 23:10:51 -04:00
Andrew Kelley
9f7e62b95b
std: add ChildProcess.kill
2017-09-06 18:30:45 -04:00
Andrew Kelley
7e59f4ff69
std: add os.sleep
2017-09-06 16:59:22 -04:00
Andrew Kelley
1f2548ec5f
better build.zig template
2017-09-06 14:18:14 -04:00
Andrew Kelley
ee9d1d0414
c-to-zig: return statement
2017-09-01 03:16:35 -04:00
Josh Wolfe
848504117f
Revert "fix return types of min amd max"
...
This reverts commit 180fe8d506
.
2017-08-31 17:56:06 -07:00
Josh Wolfe
180fe8d506
fix return types of min amd max
2017-08-31 17:45:34 -07:00
Andrew Kelley
06b64d82bf
only export __chkstk for windows
...
it's a windows only function anyway
2017-08-31 20:10:24 -04:00
Andrew Kelley
eb0979189b
add windows to test targets
...
cross-compiling hello world with no libc for windows is working
2017-08-31 11:41:58 -04:00
Andrew Kelley
156a84e80f
compiler-rt: add __aeabi_uldivmod
2017-08-31 01:39:20 -04:00
Andrew Kelley
021155db5b
successfully cross-building behavior tests for windows
2017-08-30 17:01:14 -04:00
Andrew Kelley
0e9bdb44a6
test suite cross-compile builds tests for other targets
2017-08-30 14:55:26 -04:00
Andrew Kelley
052b4ae941
align syntax: align(4) instead of align 4
...
closes #37
2017-08-30 04:54:33 -04:00
Andrew Kelley
3f5dd08ca8
codegen: all stores specify align value
...
See #37
2017-08-30 04:23:52 -04:00
Andrew Kelley
898d65baa9
more alignment improvements
...
* add alignment capability for fn protos
* add @alignCast
* fix some ast rendering code
* fix some ir rendering code
* add error for pointer cast increasing alignment
* update allocators in std to correctly align
See #37
2017-08-29 23:33:25 -04:00
Andrew Kelley
816689a3b1
ptrCast gives compile error for increasing alignment
...
See #37
2017-08-29 16:52:31 -04:00
Andrew Kelley
c5c9d98065
introduce align keyword
...
* remove `@setGlobalAlign`
* add align keyword for setting alignment on functions and
variables.
* loads and stores use alignment from pointer
* memcpy, memset use alignment from pointer
* add syntax for pointer alignment
* slices can have volatile
* add u2, i2 primitives
* ignore preferred align and use abi align everywhere
* back to only having alignOf builtin.
preferredAlignOf is too tricky to be useful.
See #432 . Partial revert of
e726925e80
.
See #37
2017-08-29 07:51:34 -04:00
Andrew Kelley
b8ed0cb374
remove workaround for LLVM not respecting "nobuiltin"
...
now that we depend on LLVM 5.0.0 we can remove the
workaround.
closes #393
2017-08-28 04:28:42 -04:00
Andrew Kelley
ebdc6b594d
all tests passing in MacOS
...
depends on LLD 5.0.0 with 3 patches
See #273
2017-08-27 17:16:42 -04:00
Andrew Kelley
5fd579a51c
macos passing all tests except for building a shared library
...
see #273
2017-08-27 05:44:03 -04:00
Andrew Kelley
ff2c794612
all behavior tests passing for macos
...
See #273
2017-08-27 05:15:24 -04:00
Andrew Kelley
91536813ec
macos updates
...
* try some macos travis stuff
* put c in the link libs for macos since we always link with libSystem
* for non-native targets on macos, allow runtime symbol resolution
- it's causing an infinite loop in LLD.
* for macos, always build compiler_rt and turn on LinkOnce because
compiler_rt on darwin is missing some stuff.
2017-08-27 02:51:25 -04:00
Andrew Kelley
b59aa7b906
fixups to linux build
2017-08-27 00:28:17 -04:00
Andrew Kelley
29a418c9d5
progress toward tests passing on MacOS
2017-08-27 00:11:09 -04:00
Andrew Kelley
2bd6c60752
update for llvm 5.0.0rc1
2017-08-26 00:34:40 -04:00
Andrew Kelley
629aa10c56
unreachable still codegens to unreachable in ReleaseFast test mode
...
closes #430
2017-08-25 10:20:06 -04:00
Andrew Kelley
be16034275
std.math: remove constants that can be derived
...
from others at compile time
2017-08-20 05:43:40 -04:00
Andrew Kelley
d9dd50d74c
fix not propagating parseh aliases through pub use decls
2017-08-20 04:03:36 -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
c73a0c92d0
fix floating point printing
2017-08-19 19:11:43 -04:00
Andrew Kelley
eb26aeb1e5
std: better int log2 implementation for number literals
2017-08-19 02:29:18 -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
558ece8f6f
slightly nicer floating point printing
2017-08-18 18:05:28 -04:00
Andrew Kelley
33c592e981
make udivmod generic and add tests
2017-08-18 17:20:03 -04:00
Andrew Kelley
51bde26842
add compiler-rt fns: udivmodti4, udivti3, umodti3
2017-08-18 16:26:09 -04:00
Andrew Kelley
ea9e1639ca
include compiler-rt tests in main testing suite
2017-08-18 13:51:16 -04:00
Andrew Kelley
1b5d61bee9
fix bitCast for big integers
...
and make bigfloat use __float128
2017-08-17 22:52:12 -04:00
Andrew Kelley
2173e1f457
fix big integer shifting by large number
2017-08-17 22:01:19 -04:00
Andrew Kelley
e63d864c1e
add compiler_rt functions for f128
...
* __letf2
* __cmptf2
* __getf2
* __unordtf2
* __eqtf2
* __lttf2
* __netf2
* __gttf2
2017-08-17 19:10:15 -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
6a98bf3dba
compiler_rt implementations for __fixuns* functions
...
* add u128 and i128 integer types
* add f128 floating point type
* implement big integer multiplication (See #405 )
2017-08-16 19:07:35 -04:00
Andrew Kelley
cf46cd5f2b
organize file path of compiler_rt
2017-08-15 07:16:22 -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
f78ee53484
fix printing floating point compile errors
...
now we just need compiler_rt implementations for:
undefined symbol '__fixunsdfti'
undefined symbol '__umodti3'
undefined symbol '__udivti3'
2017-08-07 18:11:24 -04:00
Andrew Kelley
2234788fa8
add ability to explicitly cast float to integer
...
closes #414
2017-08-07 15:57:41 -04:00
Andrew Kelley
57fb8efde2
add missing stdcallcc to ExitProcess decl
2017-08-06 16:13:52 -04:00
Andrew Kelley
d1e68c3ca8
better bigint/bigfloat implementation
2017-07-08 17:59:10 -04:00
Andrew Kelley
3e8af78895
Merge branch 'math'
...
This merges the standard library math functions that
Marc Tiehuis (@tiehuis) has been working on. Marc has
joined the Zig organization and now has commit access.
Thank you for this huge contribution to Zig.
Closes #374 .
2017-06-27 17:15:41 -04:00
Marc Tiehuis
e81bf1c38c
Return undefined in frexp instead of 0 on nan input
...
This is more in line what usual C implementations do.
2017-06-22 19:29:57 +12:00
Marc Tiehuis
5aff641f4b
Fix pow tests
...
See #393 .
2017-06-21 23:24:00 +12:00
Marc Tiehuis
994f4da8d4
Fix scalbn constant multiplier
2017-06-21 18:53:33 +12:00
Marc Tiehuis
14a324a0fa
Fixes for release mode tests
2017-06-21 18:21:11 +12:00
Marc Tiehuis
5bbec42a4e
Add math special case tests and general fixes
...
- Should cover special case inputs for most functions
- Fixed a number of runtime panicking behaviour reliant on shift
overflow/division by zero etc.
2017-06-20 23:10:22 +12:00
Andrew Kelley
221286433a
don't call c.getrandom because older libcs don't have it
...
See #397
2017-06-19 21:39:44 -04:00
Andrew Kelley
c9fc8bd802
workaround for llvm bug
...
See #393 for details
2017-06-19 14:36:33 -04:00
Marc Tiehuis
4efb9ae2e5
Get tests passing under release mode
...
This does not fix the underlying issue in pow at this stage, but we may
be able to narrow down the cause after adding tests for specific edge
cases in functions.
2017-06-18 14:16:04 +12:00
Andrew Kelley
62323eeb75
std: refactor pow to be generic
2017-06-17 20:39:45 -04:00
Marc Tiehuis
4c16f9a3c3
Add math library
...
This covers the majority of the functions as covered by the C99
specification for a math library.
Code is adapted primarily from musl libc, with the pow and standard
trigonometric functions adapted from the Go stdlib.
Changes:
- Remove assert expose in index and import as needed.
- Add float log function and merge with existing base 2 integer
implementation.
See https://github.com/tiehuis/zig-fmath .
See #374 .
2017-06-16 20:32:31 +12: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
199bbb6292
progress toward hello world without libc in windows
2017-06-04 10:08:55 -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
1e301b03a9
change std.rand.Rand.rangeUnsigned to std.rand.Rand.range
...
and make it support signed integers
2017-05-31 18:23:56 -04:00
Andrea Orru
8d6ecfeffe
Updated comment.
2017-05-28 15:56:35 +02:00
Andrea Orru
6a87aa4d2e
Generalize join.
2017-05-28 15:54:53 +02:00
Andrew Kelley
0065eb7c80
std.fmt can print nullables, errors, and error unions
2017-05-23 18:38:41 -04:00
Andrew Kelley
d8d45908fa
building with mingw for windows
2017-05-23 00:26:12 -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
051ee8e626
change slicing syntax from ... to ..
...
See #359
2017-05-19 10:39:59 -04:00
Andrew Kelley
b483db4868
typeId builtin instead of isInteger, isFloat, etc
...
closes #373
2017-05-17 12:26:35 -04:00
Andrew Kelley
99f077baf9
zig build: allow calling b.standardReleaseOptions...
...
...multiple times. See #368
2017-05-09 21:20:09 -04:00
Andrew Kelley
8abcd94ece
std.fmt.format prints bool values
2017-05-07 23:25:02 -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
5c094d7390
std: rename List to ArrayList and re-organize...
...
...the exports of std.
closes #356
2017-05-04 14:05:06 -04:00
Andrew Kelley
0454e610bf
std: take advantage of new while syntax
2017-05-04 10:37:19 -04:00
Andrew Kelley
20b1491e6b
implement while for nullables and error unions
...
See #357
2017-05-04 10:28:00 -04:00
Andrew Kelley
698829b772
change while syntax
...
Old:
```
while (condition; expression) {}
```
New:
```
while (condition) : (expression) {}
```
This is in preparation to allow nullable and
error union types as the condition. See #357
2017-05-03 18:12:07 -04:00
Andrew Kelley
644ea2dde9
remove test and try expressions in favor of if expressions
...
See #357
2017-05-03 17:23:11 -04:00
Andrew Kelley
6756c27ca4
zig build: cache_root is relative to build_root
2017-05-03 16:13:57 -04:00
Andrea Orru
6f66691214
Generic doubly linked list. ( #361 )
...
Standard linked list
2017-05-03 14:28:06 -04:00
Andrew Kelley
cceaa73ff2
zig build: inherit stdin for running commands
2017-05-03 11:27:42 -04:00
Andrew Kelley
3b921afc69
slightly better memset/memcpy implementation
2017-05-02 19:20:23 -04:00
Andrew Kelley
f87be94f6a
zig build: copy args for addCommand
...
avoids making it easy to accidentally use a dangling pointer
2017-05-02 18:22:08 -04:00
Andrew Kelley
24a9a42966
add safe release build mode
...
closes #288
2017-05-02 17:34:21 -04:00
Andrew Kelley
9f92042da9
allow undefined to be resolved with other types
...
closes #295
2017-05-01 22:37:34 -04:00
Andrew Kelley
cff5358f60
make debug safety stuff lazy
2017-05-01 19:16:48 -04:00
Andrew Kelley
3cbd0065fa
basic support for specifying packages at the command line
...
See #226
2017-05-01 16:35:10 -04:00
Andrew Kelley
17b935325e
@import("builtin")
instead of @compileVar
...
See #226
Closes #220
2017-05-01 13:12:38 -04:00
Andrew Kelley
c5dd536845
zig build: support install for zig artifacts
...
also make os.copyFile atomic
closes #332
2017-04-30 22:09:44 -04:00
Andrew Kelley
943dbe5b50
zig build: improved API for installing C build artifacts
...
see #332
2017-04-30 21:03:23 -04:00
Andrew Kelley
97f6b6093c
zig build can build and install static C libraries
...
See #332
2017-04-30 20:29:33 -04:00
Andrew Kelley
2c6827064c
fix regression from previous commit
2017-04-30 20:11:35 -04:00
Andrew Kelley
1ec89b0286
zig build: refactor CLibrary and CExecutable into same struct
2017-04-30 19:48:45 -04:00
Andrew Kelley
363d9038c9
zig build: organize build artifacts
...
closes #328
2017-04-30 18:56:24 -04:00
Andrew Kelley
38a04a267c
zig build: when compiling C files put .o files in cache dir
...
See #328
2017-04-30 13:01:35 -04:00
Andrew Kelley
29defd705d
back to AT&T syntax for assembly
...
this reverts 5c04730534
.
sadly the quality of the intel dialect in llvm's assembly
parser has many frustrating bugs, and generally has unfortunate
syntax.
the plan is to use AT&T for now since it at least works,
and eventually zig will have its own assembly parser for
x86 and it will be as close to NASM as possible.
2017-04-30 11:28:11 -04:00
Andrew Kelley
cbfe4b4bae
add implicit cast from [0]T to %[]T
...
closes #347
also add std.os.path.relative
2017-04-29 19:23:33 -04:00
Andrew Kelley
d04d3ec775
build system: remove setLinkerScriptContents
2017-04-28 10:46:01 -04:00
Andrew Kelley
a147f06585
zig puts temporary object files in zig-cache folder
...
See #298
2017-04-28 02:22:12 -04:00
Andrew Kelley
2e512a0e6e
add compile error for returning local variable address
...
closes #344
2017-04-27 19:40:35 -04:00
Andrew Kelley
7e11ef79d6
zig test no longer requires a separate test_runner.o file
...
See #298
2017-04-27 16:19:20 -04:00
Andrew Kelley
7b0542d08b
build system: consolidate duplicate code and more
...
* add ability to add assembly files when building an exe, obj, or lib
* add implicit cast from `[N]T` to `?[]const T` (closes #343 )
* remove link_exe and link_lib in favor of allowing build_exe and
build_lib support no root zig source file
2017-04-26 19:17:05 -04:00
Andrew Kelley
09bc4d6ba3
build system: addAssembly and addObject functions
...
for building executables
2017-04-26 12:56:10 -04:00
Andrew Kelley
d72fb2abad
update README
2017-04-24 16:17:28 -04:00
Andrew Kelley
6cd725c24b
stack traces support compile units with no pc range
2017-04-24 13:03:32 -04:00
Andrew Kelley
245eed8afe
better stack traces for ELF x86_64
2017-04-24 12:14:45 -04:00
Josh Wolfe
ac7971122d
fix check-statement-is-void. add tests
...
see #291
2017-04-23 21:50:34 -07:00
Josh Wolfe
c6605cba83
blocks check that their statements are void
...
closes #291
This changes the error message "return value ignored" to "expression value is ignored".
This is because this error also applies to {1;}, which has no function calls.
Also fix ignored expression values in std and test.
This caught a bug in debug.readAllocBytes where an early Eof error would have been missed.
See #219 .
2017-04-23 21:15:15 -07:00
Andrew Kelley
f9fa768dca
zig build system: installFile and installClibrary
...
See #332
2017-04-23 11:09:26 -04:00
Andrew Kelley
e0b635e825
std.os.ChildProcess: fix closing wrong file descriptors
2017-04-22 11:36:42 -04:00
Andrew Kelley
0cce115476
update syntax for try and nullable unwrapping
...
closes #285
2017-04-21 16:46:33 -04:00
Andrew Kelley
bee1ae68ef
std: fix PATH resolution when spawning child
2017-04-21 13:27:11 -04:00
Andrew Kelley
e3c524c1d4
rename @ptrcast
to @ptrCast
to follow convention
2017-04-21 10:39:13 -04:00