Commit Graph

2477 Commits

Author SHA1 Message Date
Andrew Kelley 5eaead6a56 implement allowzero pointer attribute
closes #1953

only needed for freestanding targets.

also adds safety for `@intToPtr` when the address is zero.
2019-03-25 12:55:45 -04:00
Andrew Kelley 3306e43984 add compile error test for invalid enum literal implicit cast
See #683
2019-03-24 18:51:24 -04:00
Andrew Kelley da9d8a6ecf implement peer type resolution for enum literals
See #683
2019-03-24 18:47:36 -04:00
Andrew Kelley aff7b38838 make switch expressions allow enum literal types
See #683
2019-03-24 01:15:21 -04:00
Andrew Kelley a736dfe6a1 implement implicit cast from enum literal to enum
See #683
2019-03-24 00:55:55 -04:00
Andrew Kelley d0551db5cd introduce the enum literal type
see #683
2019-03-24 00:44:18 -04:00
Andrew Kelley 64dddd7afe add compile error for ignoring error
closes #772
2019-03-23 19:33:00 -04:00
Andrew Kelley 4d50bc3f8d add peer type resolution for *const T and ?*T
closes #1298
2019-03-23 18:48:12 -04:00
Andrew Kelley 89953ec83d character literals: allow unicode escapes
also make the documentation for character literals more clear.
closes #2089

see #2097
2019-03-23 17:35:21 -04:00
Andrew Kelley 3e9697bb35 remove octal and hex floats from the language
closes #2093

This is technically a breaking change but I would be
surprised if anyone was actually using this feature.
2019-03-23 14:04:52 -04:00
Andrew Kelley 14d416f83b parse_f128.c: fix whitespace 2019-03-23 13:46:50 -04:00
Andrew Kelley 324cbb9864 stage1: implement get_dynamic_linker for riscv 2019-03-22 17:12:41 -04:00
Andrew Kelley e9f066acae fix macos build instructions in readme and fix warning 2019-03-22 16:57:41 -04:00
Andrew Kelley 02767690e0 get rid of restrict; it's not supported by MSVC 2019-03-22 16:08:19 -04:00
Andrew Kelley 71c78cc9cf avoid quad float literal syntax for MSVC 2019-03-22 16:06:18 -04:00
Andrew Kelley 4615ed5ea0 float literals now parse using musl's 128 bit float code
fixes float literals not having 128 bit precision
2019-03-22 14:56:03 -04:00
Andrew Kelley 127bb124a0 Merge pull request #2091 from ziglang/bigint-print-fix
Fix bigint_append_buf
2019-03-22 10:23:18 -04:00
Marc Tiehuis 6f90d2c209 Fix bigint_append_buf
All current usages use base 10 and have a limb length of 1, hence why
we weren't hitting this error in practice.
2019-03-22 22:10:51 +13:00
Marc Tiehuis e3b70fe4ba Simplify hex-float parsing code 2019-03-22 17:11:57 +13:00
Andrew Kelley d04a1456df hex float parsing: solve another case
this works now: 0x1.edcb34a235253948765432134674fp-1
2019-03-21 16:35:18 -04:00
Andrew Kelley af509c68b0 fix parsing of large hex float literals
closes #2083
2019-03-21 16:17:29 -04:00
Andrew Kelley 15c316b0d8 add docs for assembly and fix global assembly parsing
Previously, global assembly was parsed expecting it to have
the template syntax. However global assembly has no inputs,
outputs, or clobbers, and thus does not have template syntax.
This is now fixed.

This commit also adds a compile error for using volatile
on global assembly, since it is meaningless.

closes #1515
2019-03-20 19:00:23 -04:00
Andrew Kelley 3c7555cb67 Merge remote-tracking branch 'origin/llvm8' 2019-03-20 13:34:07 -04:00
Andrew Kelley 2fdf69bc40 Merge pull request #2079 from Sahnvour/issue-2050
Fixes c_ABI tests on windows
2019-03-20 00:11:11 -04:00
Sahnvour c17b1635ca c_abi: when compiling for x86_64, differenciate between system V and windows ABI 2019-03-19 22:08:19 +01:00
Andrew Kelley 9801a1df6a disable all C warnings when building musl 2019-03-19 15:04:39 -04:00
Andrew Kelley 3c36929603 zig targets prints the available libcs 2019-03-19 15:04:29 -04:00
Jimmi Holst Christensen e508b85746 Updated parser to newest grammar 2019-03-19 10:36:37 +01:00
Andrew Kelley fca83876d8 workaround for Ubuntu/Debian bug
see #2076
2019-03-18 20:56:46 -04:00
Andrew Kelley 85256521ba fix translate-c regression 2019-03-18 20:09:27 -04:00
Andrew Kelley a581f4f0e2 Merge remote-tracking branch 'origin/master' into llvm8 2019-03-18 20:03:23 -04:00
Andrew Kelley 1b801bdbae pass explicit frame pointer args when compiling C code 2019-03-18 16:59:48 -04:00
Andrew Kelley a17bf219c6 Merge pull request #2069 from ziglang/glibc-assert-translation
Implemented enough of translate-c to translate assert
2019-03-18 14:43:17 -04:00
Andrew Kelley 7dfbeca13e libc: separate linux headers from musl/glibc 2019-03-18 13:47:59 -04:00
Jimmi Holst Christensen 9171e7a7c1 More work on ignoring values correctly 2019-03-18 14:55:57 +01:00
Andrew Kelley 6acabd6b57 when linking msvcrt, also link ntdll.lib
See #2073
2019-03-17 14:14:05 -04:00
Andrew Kelley c40448eb9a add compile error for wrong type with use
closes #1557
2019-03-16 00:18:10 -04:00
Andrew Kelley 4a5cd0b895 fix while continue block not checking for ignored expression
closes #957
2019-03-15 23:52:11 -04:00
Andrew Kelley 9c13e9b7ed breaking changes to std.mem.Allocator interface API
Before, allocator implementations had to provide `allocFn`,
`reallocFn`, and `freeFn`.

Now, they must provide only `reallocFn` and `shrinkFn`.
Reallocating from a zero length slice is allocation, and
shrinking to a zero length slice is freeing.

When the new memory size is less than or equal to the
previous allocation size, `reallocFn` now has the option
to return `error.OutOfMemory` to indicate that the allocator
would not be able to take advantage of the new size.

For more details see #1306. This commit closes #1306.

This commit paves the way to solving #2009.

This commit also introduces a memory leak to all coroutines.
There is an issue where a coroutine calls the function and it
frees its own stack frame, but then the return value of `shrinkFn`
is a slice, which is implemented as an sret struct. Writing to
the return pointer causes invalid memory write. We could work
around it by having a global helper function which has a void
return type and calling that instead. But instead this hack will
suffice until I rework coroutines to be non-allocating. Basically
coroutines are not supported right now until they are reworked as
in #1194.
2019-03-15 17:57:21 -04:00
Jimmi HC 5ae400fb39 fixed void cast and added the last tests 2019-03-15 19:11:46 +01:00
Andrew Kelley 4090fe81f6 Merge pull request #2068 from ziglang/workaround-for-2043
workaround for #2043
2019-03-15 11:19:21 -04:00
Jimmi Holst Christensen a77b2a0810 Implemented enough of translate-c to translate assert
This required the following
* __extention__
* ({})
* Fixing if (0) ; else ;
2019-03-15 16:12:41 +01:00
Jimmi Holst Christensen 3ef9b899e4 workaround for #2043 2019-03-15 11:17:21 +01:00
Andrew Kelley 080dd27157 breaking: fix @typeInfo handling of global error set type
`builtin.TypeInfo.ErrorSet` is now `?[]Error`
instead of `struct{errors:[]Error}`.

closes #1936
2019-03-14 11:57:56 -04:00
Andrew Kelley e861da03f9 macho linking: always -dynamic for non-static-libs 2019-03-14 00:07:05 -04:00
Andrew Kelley 862ac42a6e ignore -lm on darwin because it's handled by libSystem 2019-03-13 23:44:38 -04:00
Andrew Kelley 927efe5f42 force windows to link against dynamic msvcrt
See #2064
2019-03-13 23:35:58 -04:00
Andrew Kelley 20c36949e1 fix target_requires_pic and reloc_mode
disable failing thread local variable test.
see #2063
2019-03-13 23:15:34 -04:00
Andrew Kelley 5d2edac12d breaking: remove --static; add -dynamic
`--static` is no longer an option. Instead, Zig makes things as static
as possible by default. `-dynamic` can be used to choose a dynamic
library rather than a static one.

`--enable-pic` is a new option. Usually it will be enabled
automatically, but in the case of build-exe with no dynamic libraries
on Linux or freestanding, Zig chooses off by default.

closes #1703
closes #1828
2019-03-13 19:50:41 -04:00
Andrew Kelley 85d0f0d45b fix @setRuntimeSafety not able to override release modes 2019-03-13 14:46:53 -04:00