Andrew Kelley
30c5f3c441
Merge pull request #915 from zig-lang/self-hosted-cli
...
Revise self-hosted command line interface
2018-04-13 11:16:06 -04:00
Marc Tiehuis
fe9489ad63
Fix windows access check
2018-04-13 22:50:57 +12:00
Marc Tiehuis
03bec631bd
Replace File.exists with File.access
2018-04-13 21:27:09 +12:00
Jimmi Holst Christensen
a498993fd1
Merged with master
2018-04-13 10:40:37 +02:00
Jimmi Holst Christensen
44c53c9979
std.zig.parser: Refactor round 2
...
* More work on ensuring that each state only eat one token
* VarDecl parsing now constructs its node
* Handling all fn parsing in the same case
* Using eatToken instead of getNextToken where possible
* All tokenIdTo* now takes @TagType(Token.Id)
* Added a createToCtxLiteral function
2018-04-13 10:15:12 +02:00
Andrea Orru
c5f088e52c
Pass up to 5 arguments in Zen IPC
2018-04-12 22:24:57 -07:00
Andrew Kelley
0f652b4d80
zig fmt: switch cases on new lines
...
See #911
2018-04-12 21:56:12 -04:00
Andrew Kelley
9e701e951b
zig fmt includes trailing commas
...
See #911
2018-04-12 21:40:15 -04:00
Andrew Kelley
d4572d1140
zig fmt: container init fields each on own line
...
See #911
2018-04-12 21:23:18 -04:00
Jimmi Holst Christensen
fad54e62bb
std.zig.ast: Fixed build failures
2018-04-12 18:56:58 +02:00
Jimmi Holst Christensen
d35a6655e0
std.zig.parser: Refactored `commaOrEnd` to `expectCommaOrEnd`
...
* Now it returns end when found, or null if comma was found.
* State should now be appended outside the function
2018-04-12 18:13:09 +02:00
Andrew Kelley
29e0e4088e
Merge remote-tracking branch 'origin/master' into self-hosted-cli
2018-04-12 11:20:38 -04:00
Andrew Kelley
c43f77f109
fix invalid implicit cast on macos
2018-04-12 10:38:32 -04:00
Jimmi Holst Christensen
206c0b8bdb
std.zig.parser: Refactor, round 1:
...
* Removed the Optional state
* We now have an OptionalCtx instead of DestPtr
* OptionalCtx simulated return, instead of reverting states
* OptionalCtx is a lot less hacky, but is still a small footgun
* Trying to avoid consuming more than one token per state
* This is required, because of comments
* The C++ compiler allows comments between all tokens
* We therefor have to consume comment tokens between each state
* Reordered states so they are grouped in some logical fasion
2018-04-12 16:08:23 +02:00
Marc Tiehuis
803f0a295b
Revise self-hosted command line interface
...
Commands are now separated more precisely from one another. Arguments
are parsed mostly using a custom argument parser instead of manually.
This should be on parity feature-wise with the previous main.zig but
adds a few extra code-paths as well that were not yet implemented.
Subcommands are much more prominent and consistent. The first argument
is always a sub-command and then all following arguments refer to that
command. Different commands display there own usage messages and options
based on what they can do instead of a one-for-all usage message that
was only applicable for the build commands previously.
The `cc` command is added and is intended for driving a c compiler. See #490 .
This is currently a wrapper over the system cc and assumes that it
exists, but it should suffice as a starting point.
2018-04-12 22:28:47 +12:00
Jimmi Holst Christensen
0d8646d262
std.zig.parser now parses alignment of functions
...
Related #909
This allows it to parse `std/special/compiler_rt/index.zig`
2018-04-12 08:46:26 +02:00
Andrea Orru
70f2bb03fd
outb syscall
2018-04-11 23:11:26 -07:00
Jimmi Holst Christensen
5b584e06e3
std.zig.parser special cased error in return.
...
Related #909
This allows parsing of `std/special/build_runner.zig`
2018-04-11 20:56:05 +02:00
Jimmi Holst Christensen
a7f77d7c6a
std.zig.parser: requireSemiColon now matches the C++ behavior
...
Related #909
Allowes parsing of `std/os/child_process.zig`
2018-04-11 15:26:00 +02:00
Jimmi Holst Christensen
df4c575525
std.zig.parser now parses inline fn proto
...
Related #909
Allows parsing of `std/os/zen.zig`.
2018-04-11 15:17:51 +02:00
Jimmi Holst Christensen
fe7146277d
std.zig.parser now accept both string and multiline string for strings
...
Related #909
Allows it to parse `std/special/compiler_rt/aullrem.zig`,
`std/special/compiler_rt/aulldiv.zig` and `std/math/x86_64/sqrt.zig`
2018-04-11 14:43:53 +02:00
Jimmi Holst Christensen
28ea364e5e
std.zig.parser now handle `try`'s precedence correctly
...
This allows parsing of `std/zig/parser.zig`. Related: #909
2018-04-11 13:56:39 +02:00
Jimmi Holst Christensen
841ac0f4e1
std.zig.parser now allows assignment expr in switch cases.
...
This makes `std/os/index.zig` parse
related: #909
2018-04-11 13:46:35 +02:00
Jimmi Holst Christensen
4b0556ebd4
std.zig.parser can now parse `std/heap.zig`:
...
related: #909
* Struct fields can now be pub
* Parsing of double deref now works
* Block expressions now have the right precedence
2018-04-11 13:38:06 +02:00
Jimmi Holst Christensen
6fb5ab1b52
std.zig.parser: Redid parsing of error set delc
...
related: #909
2018-04-11 13:05:42 +02:00
Jimmi Holst Christensen
5f3ec023cd
std.zig.parser: Fixed parsing of field access rhs
...
related: #909
2018-04-11 12:53:01 +02:00
Jimmi Holst Christensen
281c17f6ae
std.zig.parser:
...
* Renamed eatToken to expectToken
* A new eatToken fn, which only eats the token, if the id match
* Inlined initNode, as it is not suppose to be used outside createNode
2018-04-11 12:05:10 +02:00
Jimmi Holst Christensen
dae287524d
std.zig: Major refactor
...
* There now exists a few function to allocate all nodes in parser.zig
* ast.zig now have a table of Ids and their corrisponding type
2018-04-11 10:37:04 +02:00
Andrea Orru
135a335ce1
Merge branch 'master' into zen_stdlib
2018-04-11 00:33:19 -07:00
Andrea Orru
b01c5a95c4
Update zen library
2018-04-11 00:31:32 -07:00
Andrew Kelley
58c6424d4f
simplify and fix BufMap logic
2018-04-11 00:32:42 -04:00
Andrew Kelley
19e0ed5d3e
Merge branch 'fix879' of https://github.com/bnoordhuis/zig into bnoordhuis-fix879
2018-04-10 23:37:08 -04:00
Andrew Kelley
2ec1cec92d
add more linux syscalls and constants
...
Based on #904 by tgshultz
2018-04-10 23:29:24 -04:00
Josh Wolfe
405a2390f0
zig fmt while-else with no blocks
2018-04-10 22:44:55 -04:00
Andrew Kelley
f6c77746d6
add memmove to builtin.o
...
related: #514
2018-04-10 22:24:01 -04:00
Andrew Kelley
27e881c2d7
fix another undefined deref
...
see 0ba85ea6ff
2018-04-10 21:58:04 -04:00
Josh Wolfe
b553b7ab83
Merge branch 'master' into self-hosted-parser
2018-04-10 21:46:13 -04:00
Jimmi Holst Christensen
0ba85ea6ff
std.zig.parser fixed segfault when parsing cc for fn decl
2018-04-10 17:46:17 +02:00
Jimmi Holst Christensen
c6aa637146
std.zig.parser: removed dublicate "zig fmt: coroutines" test
2018-04-10 16:33:43 +02:00
Jimmi Holst Christensen
b9cccce26d
std.zig.ast: fixed none compiling code
2018-04-10 15:56:37 +02:00
Jimmi Holst Christensen
db9a9f3a6c
std.zig.parser now parses the `var` type
...
* I parse it as a type in all contexts. This is not how the
C++ compiler does it, but I think typechecking should catch this
2018-04-10 15:16:31 +02:00
Jimmi Holst Christensen
aa09e7b639
std.zig.tokinizer now treats string identifiers as identifiers
2018-04-10 15:01:21 +02:00
Jimmi Holst Christensen
3b80e66507
std.zig.parser now parses toplevel use
2018-04-10 14:52:47 +02:00
Jimmi Holst Christensen
db0812d4b7
std.zig.parser: changed block exprs from primary expr to expr
2018-04-10 14:22:01 +02:00
Jimmi Holst Christensen
706e0d739e
std.zig.parser readded all tests
...
* Ops!
2018-04-10 13:49:52 +02:00
Jimmi Holst Christensen
1b81e406f0
std.zig: fixed compiler errors
2018-04-10 13:43:20 +02:00
Jimmi Holst Christensen
34af38e09b
std.zig.tokinizer: fixed failing tests
2018-04-10 11:35:41 +02:00
Jimmi Holst Christensen
f85b9f2bf3
std.zig.parser now parses coroutine code
2018-04-10 11:25:58 +02:00
Jimmi Holst Christensen
5cd69ee6a4
std.zig.parser changed assign expr to only be allowed in some contexts
...
* Only allowed in while continue expr and statement expr
2018-04-10 09:37:29 +02:00
Jimmi Holst Christensen
2c7996f400
std.zig.parser can now render asm expressions
2018-04-10 09:27:11 +02:00
Andrew Kelley
4545be360a
fix std.io.readline to work on windows
...
closes #882
2018-04-09 21:14:55 -04:00
Jimmi Holst Christensen
a09bb408a2
std.zig.parser now parses asm expressions
...
* We cannot render asm expressions yet
2018-04-09 15:40:16 +02:00
Jimmi Holst Christensen
aa552633cc
std.zig.parser now parses fn types
2018-04-09 14:02:03 +02:00
Jimmi Holst Christensen
7d32c9521f
std.zig.parser now parses comptime
2018-04-09 13:24:47 +02:00
Jimmi Holst Christensen
d04346d2ac
ast.zig.parser now parses defer statements
2018-04-09 13:07:46 +02:00
Jimmi Holst Christensen
c19f5a2356
std.zig.parser now parses if statements
2018-04-09 12:51:18 +02:00
Jimmi Holst Christensen
7dd55a8007
std.zig.parser now parses for loops
2018-04-09 11:48:25 +02:00
Jimmi Holst Christensen
e24409ebe0
std.zig.parser unified code for rendering and parsing semicolon in statements
2018-04-09 11:17:57 +02:00
Jimmi Holst Christensen
e260c8ca63
std.zig.parser now parses while loops and labeled break and continue
2018-04-09 11:11:18 +02:00
Andrew Kelley
e85a10e9f5
async tcp server proof of concept
2018-04-09 00:52:45 -04:00
Andrew Kelley
cbda0fa78c
basic tcp server working when used with netcat
2018-04-08 20:08:40 -04:00
Andrew Kelley
8f4ad95777
update what std tests to run
2018-04-08 18:30:54 -04:00
Andrew Kelley
b85ef656ca
running into the llvm corosplit error again
2018-04-08 18:30:54 -04:00
Andrew Kelley
0d22a00f6f
*WIP* async/await TCP server
2018-04-08 18:26:24 -04:00
Jimmi Holst Christensen
e4d0b46c0c
std.zig.parser WIP generalizing parsing of payloads
...
* Note, it doesn't work :)
2018-04-08 17:05:08 +02:00
Jimmi Holst Christensen
bdff5bfa3e
std.zig.parser now parses switch
2018-04-07 01:38:38 +02:00
Jimmi Holst Christensen
820de1716b
std.zig.parser now parses labeled blocks.
...
* There is also some code for switch range parsing
2018-04-06 15:37:49 +02:00
Marc Tiehuis
c34ce2cbc6
Add common hash/checksum functions
...
- SipHash64, SipHash128
- Crc32 (fast + small variants)
- Adler32
- Fnv1a (32, 64 and 128 bit variants)
2018-04-06 23:10:54 +12:00
Jimmi Holst Christensen
f667744d44
std.zig.parser Fixed:
...
* Parsing of the optional expression in contrl flow expr
* Rendering of catch expressions
2018-04-06 09:36:11 +02:00
Jimmi Holst Christensen
e45de607d6
std.zig.parser: Initializers are now parsed and fmt correctly
2018-04-06 08:56:28 +02:00
Ben Noordhuis
9e8519b7a2
fix use-after-free in BufMap.set()
...
closes #879
2018-04-05 23:32:49 +02:00
Jimmi Holst Christensen
779247ba11
std.zig Major Refactor
...
* parser now parses expression like the C++ compiler does
* This makes initializers work
* Added control flow expression (only return is parsed)
* Added catch parsing (It doesn't quite work)
* The parse can now specify states as optional.
* The parse will roll back on error if states are optional
* This can be overriden by State.Required
2018-04-04 23:36:55 +02:00
Marc Tiehuis
8938429ea1
Add Hmac function ( #890 )
2018-04-04 10:31:10 -04:00
Jimmi Holst Christensen
744416ce0c
std.zig.parser should now parse operators with precedence.
...
* This haven't been tested yet
2018-04-04 14:58:51 +02:00
Marc Tiehuis
f68c2e0a14
Fix off-by-one error in all crypto functions
2018-04-04 21:32:23 +12:00
Jimmi Holst Christensen
ca0085c46d
std.zig.parser now parses error set declarations
2018-04-04 10:54:48 +02:00
Jimmi Holst Christensen
020724cfa0
std.zig.tokenizer Tokens now don't contain a line and column field.
...
* Instead, this information is optained by asking the tokenizer.
* getTokenLocation takes a start_index, so relative loc can be optained
2018-04-04 10:27:38 +02:00
Jimmi Holst Christensen
09cf823619
std.zig.parser now parses container decls
2018-04-04 09:57:37 +02:00
Andrew Kelley
abd389209b
fix up logic for macos std.os.deleteTree
2018-04-04 00:08:10 -04:00
Andrew Kelley
e1e536e03d
Merge branch 'wip-macos-dirent' of https://github.com/hellerve/zig into hellerve-wip-macos-dirent
2018-04-03 23:33:18 -04:00
Andrew Kelley
9dfd1a7c8a
remove more signal handling stuff from std.os.ChildProcess
...
439621e44a
failed to remove
everything. this finishes the job
2018-04-03 18:26:49 -04:00
Jimmi Holst Christensen
ec611bf8b4
std.zig.parser now parses regular enums, unions and struct
...
* Still missing packed, and extern
2018-04-03 20:00:02 +02:00
Jimmi Holst Christensen
d602f12df8
std.zig.ast Added ContainerDecl
2018-04-03 15:59:14 +02:00
Jimmi Holst Christensen
4fae452684
std.zig.parser Refactored top level decl parsing
...
* Now, the arraylist from the root node is passed through the states.
* This allows us to reuse the code for enums, unions and structs
2018-04-03 15:33:22 +02:00
Jimmi Holst Christensen
40f35e997a
std.zig.parser moved container initializer tests down
2018-04-03 15:17:26 +02:00
Jimmi Holst Christensen
9d69e94bba
std.zig.parser now parses grouped expressions
...
* I also moved some tests down, as they fail in ways I can't fix yet
2018-04-03 15:16:32 +02:00
Jimmi Holst Christensen
5c82ed2ea9
std.zig.parser now parses initializers... Or, it would, if it worked
2018-04-03 14:53:27 +02:00
Jimmi Holst Christensen
0b9247fb63
std.zig.parser Refactor:
...
* Slice/Array access is now not parsed in the expr contruction loop
* State.ExprListItemOrEnd now takes a token id for the end token
2018-04-03 14:20:34 +02:00
Jimmi Holst Christensen
b424cd75ab
std.zig.parser refactored call, slice and array access to be suffix op
2018-04-03 12:33:06 +02:00
Jimmi Holst Christensen
22e38ffb54
std.zig.tokenizer fixed tokens having wrong column and line
2018-04-03 11:18:18 +02:00
Jimmi Holst Christensen
a2330d0ea3
std.zig.parser now parses slice and array types
2018-04-03 10:54:19 +02:00
Andrew Kelley
4eb68987d8
std.io.readLine function
...
this provides a better input for guess number example.
see #882
2018-04-02 11:34:31 -04:00
Jimmi Holst Christensen
b9093185f7
std.zig.parser now parses slicing and array access
2018-04-01 22:02:51 +02:00
Jimmi Holst Christensen
df09c01f7f
std.zig.parser now parses error, this and unreachable
2018-03-31 22:48:12 +02:00
Jimmi Holst Christensen
aabf7cf57e
std.zig.parser now parses null and bool literals
2018-03-31 22:10:49 +02:00
Jimmi Holst Christensen
975dc5a390
std.zig.parser now parses char literals
2018-03-31 21:28:40 +02:00
Jimmi Holst Christensen
4d8f9e2295
std.zig.parser now parses multi line strings
2018-03-31 21:04:54 +02:00
Raul Leal
eb6ff796c1
Fix undeclared identifier error in readUntilDelimiterBuffer and incorrect number of parameters in readUntilDelimiterAlloc ( #877 )
2018-03-31 12:21:19 -04:00
Jimmi Holst Christensen
4793c3397e
std.zig.parser now handles lib name for extern var and fn
2018-03-31 17:46:29 +02:00
Jimmi Holst Christensen
cda3509353
Added test cases to cover all of zigs syntax
2018-03-31 15:39:51 +02:00
Jimmi Holst Christensen
26e56f2fab
Each test now have it's own test name
2018-03-31 14:18:09 +02:00
Jimmi Holst Christensen
596f4b6002
Fixed review commented code
2018-03-31 14:00:49 +02:00
Jimmi Holst Christensen
5118caf5ab
Added a lot of test cases
2018-03-31 00:53:00 +02:00
Jimmi Holst Christensen
24071c6803
std.zig.parser parses all prefix operators
2018-03-30 21:45:42 +02:00
Jimmi Holst Christensen
1dfa927a67
std.zig.parser now treats call expr as a suffix operator
2018-03-30 20:47:09 +02:00
Jimmi Holst Christensen
edca173997
std.zig.parser now parses call expr
2018-03-29 23:40:46 +02:00
Jimmi Holst Christensen
8ada030971
Fixed self hosted compiler compiler error from prev commit
2018-03-29 22:37:54 +02:00
Jimmi Holst Christensen
530f795769
std.zig.parser now supports all infix operators
2018-03-29 22:31:17 +02:00
Andrew Kelley
b80398b355
Merge pull request #867 from zig-lang/rand-overhaul
...
Rewrite Rand functions
2018-03-29 14:14:35 -04:00
Andrew Kelley
ccadcbc715
fix examples and rename std.rand.Rand to std.rand.Random
2018-03-29 12:33:29 -04:00
Marc Tiehuis
0fd0f6fd1f
Rewrite Rand functions
...
We now use a generic Rand structure which abstracts the core functions
from the backing engine.
The old Mersenne Twister engine is removed and replaced instead with
three alternatives:
- Pcg32
- Xoroshiro128+
- Isaac64
These should provide sufficient coverage for most purposes, including a
CSPRNG using Isaac64. Consumers of the library that do not care about
the actual engine implementation should use DefaultPrng and DefaultCsprng.
2018-03-30 01:50:58 +13:00
Jimmi Holst Christensen
9df2a6a502
std.zig.parser can now parse top level test declarations
2018-03-29 13:43:17 +02:00
hellerve
7e951e5043
st/os: address @andrewrk concerns
2018-03-29 10:23:44 +02:00
Andrew Kelley
f5b43ada46
std/os: getting dir entries works on OS X
2018-03-28 12:06:48 +02:00
Andrew Kelley
5b00dee0c2
std.math.cast handles signed integers
2018-03-27 15:20:07 -04:00
Andrew Kelley
0b7b3190fd
fix bitrotted code in unexpected error tracing
2018-03-27 10:44:13 -04:00
Andrew Kelley
2cff31937f
std.os.linux exposes syscall functions and syscall numbers
2018-03-24 15:57:36 -04:00
Marc Tiehuis
7350181a4a
Fix os.File.mode function
2018-03-23 22:41:08 +13:00
Marc Tiehuis
53588f4f12
Add missing pub specifier to atan2
2018-03-22 19:18:51 +13:00
Andrew Kelley
66fec3a3d7
Merge pull request #851 from zig-lang/zen_stdlib
...
Zen specific hacks
2018-03-20 16:16:08 -04:00
Andrea Orru
43cdfa275a
Zen specific hacks
2018-03-20 16:09:30 -04:00
Andrew Kelley
71b4ee931e
Merge pull request #849 from zig-lang/zen_stdlib
...
Updates to the Zen standard library
2018-03-20 11:47:19 -04:00
Andrea Orru
0082ed0ef1
Public SplitIterator
2018-03-20 11:40:33 -04:00
Andrea Orru
935f10502f
Message type, Undefined mailbox, read syscall, more constructors
2018-03-18 14:45:23 -04:00
Marc Tiehuis
bea9e9c7f8
Add addIncludeDir to TestStep + fix build template
...
Closes #794 .
2018-03-17 18:15:35 -04:00
Andrea Orru
df3d2115b5
Service -> Server
2018-03-16 20:27:13 -07:00
Andrea Orru
81941f9161
Add Thread option for Mailboxes
2018-03-16 01:41:45 -07:00
Andrea Orru
4c16deed3e
Some POSIX stuff, including a primitive write
2018-03-15 17:57:56 -07:00
Andrea Orru
681c62941e
subscribeIRQ support
2018-03-15 04:28:45 -07:00
Andrea Orru
9b7e4b535c
More precise naming
2018-03-15 02:22:03 -07:00
Andrea Orru
4fcf01adc5
IPC structure updates
2018-03-14 22:07:17 -07:00
Andrew Kelley
bcce77700f
some return types disqualify comptime fn call caching
...
closes #828
2018-03-12 12:56:25 -04:00
Andrea Orru
d0621391bc
zen-specific: main -> _start
2018-03-10 16:59:28 -08:00
Andrea Orru
152b408934
Simplify intrusive linked list test
2018-03-10 12:20:29 -08:00
Andrew Kelley
3b3649b86f
refactor stack trace code to remove global state
2018-03-10 01:38:40 -05:00
Andrew Kelley
60b2031831
improvements to stack traces
...
* @panic generates an error return trace
* printing an error return trace no longer interferes with
normal stack traces.
* instead of ignore_frame_count, we look at the return address
when you call panic, and that's the first stack trace function
makes stack traces much cleaner - the error return trace
flows gracefully into the stack trace
2018-03-10 01:38:40 -05:00
Andrew Kelley
61a02d9d1e
omit pad zeroes in debug stack traces
2018-03-10 01:38:40 -05:00
Andrea Orru
f25c1c6858
Fixed syntax errors in linux-i386 syscalls
2018-03-09 22:25:21 -08:00
Andrea Orru
70c3008a00
Added 6 parameters syscalls for zen
2018-03-09 22:24:52 -08:00
Marc Tiehuis
7a893691c0
Unroll Sha3 inner loop
...
Issue #699 since fixed. Nearly a x3 perf improvement.
Using --release-fast.
Sha3_256 (before): 96 Mb/s
Sha3_256 (after): 267 Mb/s
Sha3_512 (before): 53 Mb/s
Sha3_512 (after): 142 Mb/s
No real gains from unrolling other initialization loops in crypto
functions so have been left as is.
2018-03-10 10:00:07 +13:00
Andrew Kelley
6db9be8900
don't memoize comptime functions if they can mutate state via parameters
...
closes #639
2018-03-09 14:20:44 -05:00
Andrew Kelley
b57cb04afc
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-08 10:59:24 -05:00
Andrew Kelley
07e47c058c
ptrCast builtin now gives an error for removing const qualifier
...
closes #384
2018-03-06 16:37:03 -05:00
Andrew Kelley
c3807dfb34
remove value judgement from std lib API docs
...
documentation should be purely technical, and not contain opinions about
how easy or hard something is.
2018-03-06 10:41:07 -05:00
Andrew Kelley
d34d36619e
Merge pull request #814 from jacobdufault/utf8-view
...
Make Utf8View public, add comments, and make iterator lowercase.
2018-03-06 01:42:04 -05:00
Jacob Dufault
8fd7e9115c
Make Utf8View public, add comments, and make iterator lowercase.
2018-03-05 21:42:01 -08:00
Andrew Kelley
56645c1701
std.debug.dwarf supports line number version 4
...
fixes stack traces for llvm6 generated zig programs
2018-03-02 16:26:22 -05:00
Andrew Kelley
a217c764db
Merge remote-tracking branch 'origin/master' into llvm6
2018-03-01 22:25:15 -05:00
Andrew Kelley
de5c0c9f40
Merge remote-tracking branch 'origin/master' into async
2018-03-01 20:47:35 -05:00
Andrew Kelley
807a5e94e9
add atomicrmw builtin function
2018-02-28 21:19:51 -05:00
Andrew Kelley
439621e44a
remove signal hanlding stuff from std.os.ChildProcess
2018-02-27 11:14:14 -05:00
Andrew Kelley
4ac6c4d6bf
workaround llvm coro transformations
...
by making alloc and free functions be parameters to async
functions instead of using getelementptr in the DynAlloc block
See #727
2018-02-26 21:14:15 -05:00
Marc Tiehuis
08d595b472
Add utf8 string view
2018-02-24 11:32:01 -07:00
Andrew Kelley
9cfd7dea19
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-23 12:56:41 -05:00
Andrew Kelley
40dbcd09da
fix type_is_codegen_pointer being used incorrectly
...
The names of these functions should probably change, but at least
the semantics are correct now:
* type_is_codegen_pointer - the type is either a fn, ptr, or promise
* get_codegen_ptr_type -
- ?&T and &T returns &T
- ?promise and promise returns promise
- ?fn()void and fn()void returns fn()void
- otherwise returns nullptr
2018-02-23 12:49:21 -05:00
Ben Noordhuis
0845cbe277
name types inside functions after variable
...
Before this commit:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "f()", unexpected.
}
And now:
fn f() []const u8 {
const S = struct {};
return @typeName(S); // "S", expected.
}
Fixes #675 .
2018-02-22 19:54:02 +01:00
Andrew Kelley
623466762e
clean up mach-o stack trace code
2018-02-21 02:00:33 -05:00
Andrew Kelley
a06f3c74fd
parse async fn definitions
...
See #727
2018-02-20 00:31:52 -05:00
Andrew Kelley
3d58d7232a
parse async fn calls and cancel expressions
2018-02-20 00:05:38 -05:00
Ben Noordhuis
2b35615ffb
fix memory leak in std.debug.openSelfDebugInfo()
2018-02-19 23:11:11 +01:00
Ben Noordhuis
ab48934e9c
add support for stack traces on macosx
...
Add basic address->symbol resolution support. Uses symtab data from the
MachO image, not external dSYM data; that's left as a future exercise.
The net effect is that we can now map addresses to function names but
not much more. File names and line number data will have to wait until
a future pull request.
Partially fixes #434 .
2018-02-19 23:11:11 +01:00
Andrew Kelley
bde15cf080
improve std lib linux epoll API
2018-02-17 17:53:07 -05:00
Andrew Kelley
72ca2b214d
ability to slice an undefined pointer at compile time if the len is 0
2018-02-16 15:22:29 -05:00
Andrew Kelley
5f5880979e
zig fmt supports simple line comments
2018-02-15 12:30:29 -05:00
Andrew Kelley
ca597e2bfb
std.zig.parser understands try. zig fmt respects a double line break.
2018-02-14 23:00:53 -05:00
Andrew Kelley
629f134d38
std.zig.parser understands inferred return type and error inference
2018-02-14 15:50:40 -05:00
Andrew Kelley
e8d81c5acf
fix build broken by previous commit
2018-02-14 13:55:06 -05:00
Andrew Kelley
d790670f4c
self hosted parser: support string literals
2018-02-14 13:43:05 -05:00
Andrew Kelley
1a53c648ed
self hosted parser supports builtin fn call with no args
2018-02-14 09:45:10 -05:00
Andrew Kelley
e7ab2bc553
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-13 11:53:20 -05:00
Andrew Kelley
c721354b73
correct doc comment in self hosted parser
2018-02-13 11:17:26 -05:00
Andrew Kelley
2dcff95bd2
self hosted: add tokenizer test fix eof handling
2018-02-13 10:28:55 -05:00
Andrew Kelley
dfbb8254ca
fix self hosted tokenizer handling of EOF
2018-02-12 21:26:15 -05:00
Andrew Kelley
7903a758a4
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-12 17:00:02 -05:00
Andrew Kelley
b4e44c4e80
self hosted parser tests every combination of memory allocation failure
2018-02-12 13:31:50 -05:00
Andrew Kelley
491d818f17
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-12 10:48:02 -05:00
Andrew Kelley
ec0846a00f
std.heap.ArenaAllocator: fix incorrectly activating safety check
2018-02-12 03:21:18 -05:00
Andrew Kelley
227ead54be
back to malloc instead of aligned_alloc for c_allocator
...
it seems that a 7 years old standard is still too new for the
libc variants that are ubiquitous
(tests failing on macos for not providing C11 ABI)
2018-02-12 03:15:12 -05:00
Andrew Kelley
4a4ea92cf3
remove std.heap.IncrementingAllocator
...
Use std.heap.FixedBufferAllocator combined with
std.heap.DirectAllocator instead.
std.mem.FixedBufferAllocator is moved to std.heap.FixedBufferAllocator
2018-02-12 02:44:31 -05:00
Andrew Kelley
445b03384a
introduce std.heap.ArenaAllocator and std.heap.DirectAllocator
...
* DirectAllocator does the underlying syscall for every allocation.
* ArenaAllocator takes another allocator as an argument and
allocates bytes up front, falling back to DirectAllocator with
increasingly large allocation sizes, to avoid calling it too often.
Then the entire arena can be freed at once.
The self hosted parser is updated to take advantage of ArenaAllocator
for the AST that it returns. This significantly reduces the complexity
of cleanup code.
docgen and build runner are updated to use the combination of
ArenaAllocator and DirectAllocator instead of IncrementingAllocator,
which is now deprecated in favor of FixedBufferAllocator combined
with DirectAllocator.
The C allocator calls aligned_alloc instead of malloc, in order to
respect the alignment parameter.
Added asserts in Allocator to ensure that implementors of the
interface return slices of the correct size.
Fixed a bug in Allocator when you call realloc to grow the allocation.
2018-02-12 02:14:44 -05:00
Andrew Kelley
ef6260b3a7
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-11 23:49:20 -05:00
Andrew Kelley
e743b30bbf
std: refactor posixOpen to be friendlier to error return traces
2018-02-11 05:26:51 -05:00
Andrew Kelley
46aa416c48
std.os and std.io API update
...
* move std.io.File to std.os.File
* add `zig fmt` to self hosted compiler
* introduce std.io.BufferedAtomicFile API
* introduce std.os.AtomicFile API
* add `std.os.default_file_mode`
* change FileMode on posix from being a usize to a u32
* add std.os.File.mode to return mode of an open file
* std.os.copyFile copies the mode from the source file instead of
using the default file mode for the dest file
* move `std.os.line_sep` to `std.cstr.line_sep`
2018-02-10 21:02:24 -05:00
Andrew Kelley
8c31eaf2a8
std zig tokenizer: don't require 3 newlines at the end of the source
2018-02-10 14:52:39 -05:00
Andrew Kelley
a2bd9f8912
std lib: modify allocator idiom
...
Before we accepted a nullable allocator for some stuff like
opening files. Now we require an allocator.
Use the mem.FixedBufferAllocator pattern if a bound on the amount
to allocate is known.
This also establishes the pattern that usually an allocator is the
first argument to a function (possibly after "self").
fix docs for std.cstr.addNullByte
self hosted compiler:
* only build docs when explicitly asked to
* clean up main
* stub out zig fmt
2018-02-09 18:27:50 -05:00
Andrew Kelley
e7bf8f3f04
fix compiler crash switching on global error with no else
2018-02-09 13:49:58 -05:00
Andrew Kelley
1fb308ceee
self hosted compiler: move tokenization and parsing to std lib
2018-02-09 13:08:02 -05:00
Andrew Kelley
32c988a2d7
fix build runner on windows
2018-02-09 00:24:23 -05:00
Andrew Kelley
8fc6e31567
std: fix return type of std.c.write
2018-02-08 20:46:12 -05:00
Andrew Kelley
f9be970375
Merge remote-tracking branch 'origin/master' into error-sets
2018-02-08 20:45:26 -05:00
Marc Tiehuis
1c236b0766
Add ArrayList functions ( #755 )
...
at - Get the item at the n-th index.
insert - Insert and item into the middle of the list, resizing and copying
existing elements if needed.
insertSlice - Insert a slice into the middle of the list, resizing and
copying existing elements if needed.
2018-02-08 11:22:31 -05:00
Andrew Kelley
0d5ff6f462
error sets - most tests passing
2018-02-08 02:08:45 -05:00
Ben Noordhuis
dd20f558f0
implement openSelfExe() on darwin ( #753 )
2018-02-07 18:14:32 -05:00
Jeff Fowler
c88e6e8aee
improve behavior of `zig build` ( #754 )
...
See #748
2018-02-07 17:45:20 -05:00
Andrew Kelley
aa043a6339
Merge remote-tracking branch 'origin/master' into llvm6
2018-02-07 17:27:30 -05:00
Ben Noordhuis
79ad1d9610
format struct pointers as "<typename>@<address>" ( #752 )
2018-02-07 16:18:48 -05:00
Andrew Kelley
f99b8b006f
error sets - fix most std lib compile errors
2018-02-05 18:09:13 -05:00
Andrew Kelley
6940212ecb
error sets: fix peer resolution of error unions
2018-02-05 17:42:13 -05:00
Andrew Kelley
917e6fe370
handle linux returning EINVAL for large writes
...
See #743
2018-02-05 13:21:08 -05:00
Andrew Kelley
40e4e42a66
handle linux returning EINVAL for large reads
...
see #743
2018-02-05 12:48:29 -05:00
Andrew Kelley
44d8d654a0
fix test failure, organize code, add new compile error
2018-02-05 09:26:39 -05:00
Andrew Kelley
b7bc259093
make OutStream and InStream take an error set param
2018-02-05 07:38:24 -05:00
Andrew Kelley
893f1088df
error sets - peer resolution for error unions
2018-02-05 01:49:14 -05:00
Andrew Kelley
31abef172a
fix accidentally linking against kernel32 on non windows
2018-02-04 22:13:21 -05:00
Ben Noordhuis
73ee434c8c
Use /dev/urandom and sysctl(RANDOM_UUID) on Linux.
...
Add fallback paths for when the getrandom(2) system call is not
available. Try /dev/urandom first and sysctl(RANDOM_UUID) second.
The sysctl issues a warning in the system logs with some kernels but
that seems like an acceptable tradeoff for the fallback of a fallback.
2018-02-04 18:58:36 +01:00
Andrew Kelley
61718742f7
*WIP* error sets - std lib test compile but try to link against windows
2018-02-03 14:42:20 -05:00
Andrew Kelley
ef5e7bb469
*WIP* error sets - an inferred error set can end up being the global one
2018-02-03 14:06:37 -05:00
Andrew Kelley
abf5ae6897
*WIP* error sets - support fns called at comptime
2018-02-03 11:51:29 -05:00
Andrew Kelley
b8f59e14cd
*WIP* error sets - correctly resolve inferred error sets
2018-02-02 18:13:32 -05:00
Andrew Kelley
39d5f44863
*WI* error sets - basic support working
2018-02-02 14:26:14 -05:00
Andrew Kelley
406496ca33
*WIP* error sets - allow peer type resolution to create new error set
2018-02-01 23:32:09 -05:00
Andrew Kelley
13b36d458f
*WIP* error sets - fix implicit cast
2018-02-01 10:23:25 -05:00
Andrew Kelley
5f518dbeb9
*WIP* error sets converting std lib
2018-01-31 22:48:40 -05:00
Andrew Kelley
5161d70620
*WIP* error sets
2018-01-31 01:51:31 -05:00
Andrea Orru
7eea20bc50
Add IntrusiveLinkedList to index.zig
2018-01-29 21:02:57 -08:00
Andrew Kelley
96c9a9bdb3
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-29 13:26:09 -05:00
Andrew Kelley
2b5e0b66a2
std: fix fn return syntax for zen os
2018-01-29 10:57:27 -05:00
Andrew Kelley
47be64af5a
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-25 11:51:41 -05:00
Andrew Kelley
3671582c15
syntax: functions require return type. remove `->`
...
The purpose of this is:
* Only one way to do things
* Changing a function with void return type to return a possible
error becomes a 1 character change, subtly encouraging
people to use errors.
See #632
Here are some imperfect sed commands for performing this update:
remove arrow:
```
sed -i 's/\(\bfn\b.*\)-> /\1/g' $(find . -name "*.zig")
```
add void:
```
sed -i 's/\(\bfn\b.*\))\s*{/\1) void {/g' $(find ../ -name "*.zig")
```
Some cleanup may be necessary, but this should do the bulk of the work.
2018-01-25 04:10:11 -05:00
Andrew Kelley
e5bc5873d7
rename "debug safety" to "runtime safety"
...
closes #437
2018-01-25 01:46:12 -05:00
Andrew Kelley
b3a6faf13e
replace %defer with errdefer
...
See #632
now we have 1 less sigil
2018-01-23 23:08:09 -05:00
Andrew Kelley
cf39819478
add new kind of test: generating .h files. and more
...
* docgen supports obj_err code kind for demonstrating
errors without explicit test cases
* add documentation for `extern enum`. See #367
* remove coldcc keyword and add @setIsCold. See #661
* add compile errors for non-extern struct, enum, unions
in function signatures
* add .h file generation for extern struct, enum, unions
2018-01-22 22:24:07 -05:00
Marc Tiehuis
a7e10565fc
Fix build template to match build runner changes
...
Api changed in 7b57454cc1
.
2018-01-20 13:32:49 +13:00
Jimmi Holst Christensen
d8469e3c7c
usize might be same size as LARGE_INTEGER. If that's the case, then we don't want to compare pos to @maxValue(usize).
2018-01-19 22:08:44 +01:00
Jimmi Holst Christensen
a1a69f24c8
We now make a more correct conversion from windows LARGE_INTEGER type to usize
2018-01-19 22:05:56 +01:00
Jimmi Holst Christensen
61497893d3
Removed bitcast from usize to isize in seekTo
2018-01-19 21:57:13 +01:00
Jimmi Holst Christensen
8be606ec80
Now using the right unexpectedError in seekForward
2018-01-19 21:51:10 +01:00
Jimmi Holst Christensen
a76023bcd8
Removed PLARGE_INTEGER
2018-01-19 21:49:16 +01:00
Jimmi Holst Christensen
90714a3831
Implemented windows versions of seekTo and getPos
2018-01-19 21:30:57 +01:00
Andrew Kelley
48cd808185
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-17 13:11:21 -05:00
Marc Tiehuis
7a3fd89d25
Add Sha3 hashing functions
...
These are on the slower side and could be improved. No performance optimizations
yet have been done.
```
Cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
```
-- Sha3-256
```
Zig --release-fast
93 Mb/s
Zig --release-safe
99 Mb/s
Zig
4 Mb/s
```
-- Sha3-512
```
Zig --release-fast
49 Mb/s
Zig --release-safe
54 Mb/s
Zig
2 Mb/s
```
Interestingly, release-safe is producing slightly better code than
release-fast.
2018-01-17 21:19:45 +13:00
Marc Tiehuis
dfd5363494
Add throughput test program
...
Blake performance numbers for reference:
```
Cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
```
-- Blake2s
```
Zig --release-fast
485 Mb/s
Zig --release-safe
377 Mb/s
Zig
11 Mb/s
```
-- Blake2b
```
Zig --release-fast
616 Mb/s
Zig --release-safe
573 Mb/s
Zig
18 Mb/s
```
2018-01-17 21:19:45 +13:00
Marc Tiehuis
7af53d0826
Fix crypto exports
2018-01-17 21:19:45 +13:00
Andrew Kelley
1eda7e0fde
docgen: support executing exe code examples
...
See #465
2018-01-17 01:50:35 -05:00
Andrew Kelley
5aefabe045
docgen: validate See Also sections
...
See #465
2018-01-17 00:22:53 -05:00
Andrew Kelley
2774fe8a1b
docgen auto generates table of contents
...
See #465
2018-01-17 00:22:53 -05:00
Josh Wolfe
24c2ff5cae
Revert "Buffer.toSliceCopy"
...
This reverts commit c58f5a4742
.
2018-01-16 13:45:34 -07:00
Josh Wolfe
c58f5a4742
Buffer.toSliceCopy
2018-01-16 13:28:53 -07:00
Andrew Kelley
b897e98d30
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-16 12:26:04 -05:00
Marc Tiehuis
73b4f09845
Add crypto internal test functions
2018-01-17 00:20:20 +13:00
Marc Tiehuis
66a24c9c00
Merge branch 'master' into blake2
2018-01-17 00:20:06 +13:00
Marc Tiehuis
fa7b33549e
Change crypto functions to fill a buffer
...
- Rename blake2x -> blake2
- Fix blake2s truncated tests
2018-01-17 00:17:48 +13:00
Andrew Kelley
5a4968484b
Merge branch 'wip-err-ret-trace'
2018-01-15 16:28:30 -05:00
Andrew Kelley
6ec9933fd8
fix getting debug info twice in default panic handler
2018-01-15 16:26:13 -05:00
Marc Tiehuis
4cf86b4a94
Add Blake2X hash functions
...
The truncated output variants currently are dependent on a more complete
bigint implementation in the compiler.
2018-01-15 23:14:13 +13:00
Andrew Kelley
c9ac607bd3
add builtin.have_error_return_tracing
2018-01-15 00:14:14 -05:00
Andrew Kelley
7b57454cc1
clean up error return tracing
...
* error return tracing is disabled in release-fast mode
* add @errorReturnTrace
* zig build API changes build return type from `void` to `%void`
* allow `void`, `noreturn`, and `u8` from main. closes #535
2018-01-15 00:01:02 -05:00
Andrew Kelley
793f031c4c
remove 32-bit windows from supported targets list
...
we still want to support it, but there are too many bugs
to claim that we support it right now.
See #537
2018-01-14 15:17:07 -05:00
Andrew Kelley
971a6fc531
fix duplicate stack trace code
2018-01-14 10:19:21 -05:00
Marc Tiehuis
9be9f1ad20
Disable win32 tests for Sha2 + correct lengths
2018-01-14 09:58:30 +13:00
Marc Tiehuis
1f3ed5cf27
Change indexing variable types for crypto functions
2018-01-13 22:44:58 +13:00
Marc Tiehuis
2659ac01be
Add Sha2 functions
...
We take the fastest time measurement taken across multiple runs. Tested
across multiple compiler flags and the best chosen.
```
Cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
Gcc: 7.2.1 20171224
Clang: 5.0.1
Zig: 0.1.1.304f6f1d
```
See https://www.nayuki.io/page/fast-sha2-hashes-in-x86-assembly .
```
Gcc -O2
219 Mb/s
Clang -O2
213 Mb/s
Zig --release-fast
284 Mb/s
Zig --release-safe
211 Mb/s
Zig
6 Mb/s
```
```
Gcc -O2
350 Mb/s
Clang -O2
354 Mb/s
Zig --release-fast
426 Mb/s
Zig --release-safe
300 Mb/s
Zig
11 Mb/s
```
2018-01-13 22:37:47 +13:00
Marc Tiehuis
51fdbf7f8c
Add Md5 and Sha1 hash functions
...
Some performance comparisons to C.
We take the fastest time measurement taken across multiple runs.
The block hashing functions use the same md5/sha1 methods.
```
Cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
Gcc: 7.2.1 20171224
Clang: 5.0.1
Zig: 0.1.1.304f6f1d
```
See https://www.nayuki.io/page/fast-md5-hash-implementation-in-x86-assembly :
```
gcc -O2
661 Mb/s
clang -O2
490 Mb/s
zig --release-fast and zig --release-safe
570 Mb/s
zig
50 Mb/s
```
See https://www.nayuki.io/page/fast-sha1-hash-implementation-in-x86-assembly :
```
gcc -O2
588 Mb/s
clang -O2
563 Mb/s
zig --release-fast and zig --release-safe
610 Mb/s
zig
21 Mb/s
```
In short, zig provides pretty useful tools for writing this sort of
code. We are in the lead against clang (which uses the same LLVM
backend) with us being slower only against md5 with GCC.
2018-01-13 14:40:21 +13:00
Marc Tiehuis
304f6f1d01
Add integer rotation functions
2018-01-13 13:23:12 +13:00
Andrew Kelley
32ea6f54e5
*WIP* proof of concept error return traces
2018-01-12 02:12:11 -05:00
Andrew Kelley
eb3726c502
Merge branch 'master' into llvm6
2018-01-11 22:26:55 -05:00
Marc Tiehuis
899e36489d
Fix endian swap parameters
2018-01-11 19:50:08 +13:00
Andrew Kelley
891c93c118
Merge pull request #681 from zig-lang/hw-math
...
Add hw sqrt for x86_64
2018-01-10 10:22:40 -05:00
Marc Tiehuis
24cd99160c
Add hw sqrt for x86_64
2018-01-10 19:53:36 +13:00
Andrea Orru
19343db593
Intrusive linked lists
2018-01-10 00:33:07 -05:00
Andrew Kelley
d1d3dbc7b5
Merge branch 'master' into llvm6
2018-01-09 09:56:24 -05:00
Andrew Kelley
3c094116aa
remove %% prefix operator
...
See #632
closes #545
closes #510
this makes #651 higher priority
2018-01-09 00:51:51 -05:00
Andrea Orru
98a95cc698
exit, createThread for zen
2018-01-08 12:16:23 -05:00
Andrew Kelley
5a8d87f504
Merge branch 'master' into llvm6
2018-01-08 10:34:45 -05:00
Andrew Kelley
632d143bff
replace `a %% b` with `a catch b`
...
See #632
better fits the convention of using keywords for control flow
2018-01-07 17:28:20 -05:00
Andrew Kelley
66717db735
replace `%return` with `try`
...
See #632
better fits the convention of using keywords for control flow
2018-01-07 16:53:13 -05:00
Andrea Orru
3182857224
Adding zen support
2018-01-07 04:43:08 -05:00
Andrea Orru
ad438cfd40
Merge branch 'master' of github.com:zig-lang/zig
2018-01-06 23:13:51 -05:00
Andrea Orru
e932919e68
Darwin -> MacOSX, added Zen. See #438
2018-01-06 23:10:53 -05:00
Jimmi Holst Christensen
e91136d61f
Fixed the call to mem.readInt in endian.swap
2018-01-07 00:24:35 +01:00
Jimmi Holst Christensen
6f85c860c6
Fixed the call to mem.readInt in Rand.scalar
2018-01-07 00:24:17 +01:00
Andrew Kelley
38658a597b
Merge branch 'master' into llvm6
2018-01-06 02:59:17 -05:00
Andrew Kelley
dde7cc52d2
fix exp1m implementation
...
in the llvm6 branch with assertions on, it failed the test
this fixes it
2018-01-06 02:58:45 -05:00
Andrew Kelley
5d9a8cbe1a
Merge remote-tracking branch 'origin/master' into llvm6
2018-01-05 13:46:21 -05:00
Andrew Kelley
79d50d9933
appveyor: enable verbose link for self hosted compiler
2018-01-04 23:43:46 -05:00
Andrew Kelley
7e65fe7ac3
fix test regressions on windows from previous commit
2018-01-04 16:36:59 -05:00
Andrew Kelley
d008e209e7
self-hosted compiler works on macos
2018-01-04 15:30:22 -05:00
Andrew Kelley
e1c03d9e8e
self-hosted compiler works on windows
...
* better error message for realpath failing
* fix bug in std.io.readFileAllocExtra incorrectly returning
error.EndOfStream
* implement std.os.selfExePath and std.os.selfExeDirPath for windows
2018-01-04 13:48:45 -05:00
Andrew Kelley
0cd63b28f3
fix self-hosted build on windows
2018-01-03 22:38:13 -05:00
Andrew Kelley
8eae4a0967
Merge branch 'master' into llvm6
2018-01-03 20:53:53 -05:00
Andrew Kelley
36ff26609b
fix self hosted compiler on windows
2018-01-03 04:55:49 -05:00
Andrew Kelley
1d77f8db28
Merge branch 'master' into llvm6
2018-01-03 00:42:00 -05:00
Andrew Kelley
0ea50b3157
ir: new pass iteration strategy
...
Before:
* IR basic blocks are in arbitrary order
* when doing an IR pass, when a block is encountered, code
must look at all the instructions in the old basic block,
determine what blocks are referenced, and queue up those
old basic blocks first.
* This had a bug (See #667 )
Now:
* IR basic blocks are required to be in an order that guarantees
they will be referenced by a branch, before any instructions
within are referenced.
ir pass1 is updated to meet this constraint.
* When doing an IR pass, we iterate over old basic blocks
in the order they appear. Blocks which have not been
referenced are discarded.
* After the pass is complete, we must iterate again to look
for old basic blocks which now point to incomplete new
basic blocks, due to comptime code generation.
* This last part can probably be optimized - most of the time
we don't need to iterate over the basic block again.
closes #667
2018-01-02 21:08:12 -05:00
Peter Rönnquist
d15b02a6b6
Added format for floating point numbers. {.x} where x is the number of decimals.
2017-12-31 00:27:58 +01:00
Josh Wolfe
192a039173
move utf8 parsing to std
...
source files no longer need to end with a newline
2017-12-26 23:17:33 -07:00
Andrew Kelley
6bfaf262d5
Merge branch 'master' into llvm6
2017-12-26 21:44:08 -05:00
Andrew Kelley
6fece14cfb
self-hosted: build against zig_llvm and embedded LLD
...
Now the self-hosted compiler re-uses the same C++ code for interfacing
with LLVM as the C++ code.
It also links against the same LLD library files.
2017-12-26 19:44:08 -05:00
Andrew Kelley
2a25398c86
fix segfault when passing union enum with sub byte...
...
...field to const slice parameter
we use a packed struct internally to represent a const array
of disparate union values, and needed to update the internal
getelementptr instruction to recognize that.
closes #664
2017-12-24 04:11:58 -05:00
Josh Wolfe
fb96c3e73e
debug needs to export FailingAllocator
2017-12-23 21:47:13 -07:00
Andrew Kelley
4183c6f1a5
move std/debug.zig to a subdirectory
...
self hosted compiler parser tests do some fuzz testing
2017-12-23 22:15:48 -05:00
Andrew Kelley
e0a1466bd8
build: add --search-prefix option
2017-12-23 22:14:35 -05:00
Andrew Kelley
2031989d98
std.os.path.resolve handles an absolute path that is missing the drive
2017-12-23 22:14:35 -05:00
Andrew Kelley
8b716f941d
Merge branch 'master' into llvm6
2017-12-23 21:21:32 -05:00
Andrew Kelley
3cbc244e98
build: add --search-prefix option
2017-12-23 20:21:57 -05:00
Andrew Kelley
74a12d818d
std.os.path.resolve handles an absolute path that is missing the drive
2017-12-23 19:50:01 -05:00
Andrew Kelley
fe66046283
Merge remote-tracking branch 'origin/master' into llvm6
2017-12-23 12:00:25 -05:00
Andrew Kelley
39c7bd24e4
port most of main.cpp to self hosted compiler
2017-12-23 00:57:56 -05:00
Andrew Kelley
e44a11341d
std.math: remove unnecessary inline calls and
...
workaround windows 32 bit test failure
See #537
2017-12-22 13:14:07 -05:00
Josh Wolfe
0e7fb69bea
bufPrint returns an error
2017-12-22 00:52:01 -07:00
Andrew Kelley
ea805c5fe7
fix darwin and windows from previous commit
2017-12-22 02:33:39 -05:00
Andrew Kelley
d917815d81
explicitly return from blocks
...
instead of last statement being expression value
closes #629
2017-12-22 00:50:30 -05:00
Andrew Kelley
8bc523219c
add labeled loops, labeled break, labeled continue. remove goto
...
closes #346
closes #630
regression: translate-c can no longer translate switch statements.
after #629 we can ressurect and modify the code to utilize arbitrarily
returning from blocks.
2017-12-20 23:00:19 -05:00
Andrew Kelley
1435604b84
add sort.min and sort.max functions to stdlib
2017-12-19 17:35:38 -05:00
Andrew Kelley
2a8160e80f
Merge branch 'export-rewrite'
...
introduces the `@export` builtin function which can be used
in a comptime block to conditionally export a function.
it also allows creation of aliases.
previous export syntax is still allowed.
closes #462
closes #420
2017-12-19 02:44:14 -05:00
Andrew Kelley
9d9201c3b4
bring back code that uses export and fix tests
...
partial revert of 1fdebc1dc4
2017-12-19 02:39:43 -05:00
Andrew Kelley
1fdebc1dc4
wip export rewrite
2017-12-18 09:59:57 -05:00
Andrew Kelley
3f65887974
fix std.mem missing error.OutOfMemory decl
...
this will be fixed in a better way later by #632
2017-12-17 20:52:29 -05:00
Andrew Kelley
39e96d933e
change mem.cmp to mem.lessThan and add test
2017-12-15 17:26:22 -05:00
Andrew Kelley
68f6332343
fix missing import from previous commit
2017-12-14 21:24:00 -05:00
Andrew Kelley
6bc0561d13
disable sort tests for 32-bit windows because of issue #537
2017-12-14 19:55:34 -05:00
Andrew Kelley
75ecfdf66d
replace quicksort with blocksort
...
closes #657
2017-12-14 19:41:35 -05:00
Andrew Kelley
f55fdc00fc
fix const and volatile qualifiers being dropped sometimes
...
in the expression `&const a.b`, the const (and/or volatile)
qualifiers would be incorrectly dropped.
closes #655
2017-12-13 21:53:52 -05:00
Andrew Kelley
cdaa735b2b
self-hosted: build tries to find llvm-config.exe
2017-12-12 16:40:04 -05:00
Andrew Kelley
2b9302107f
self-hosted: cleanup build looking for llvm-config
2017-12-12 16:03:20 -05:00
Andrew Kelley
cd5fd653d7
self-hosted: move code to std.os.ChildProcess.exec
2017-12-12 14:35:53 -05:00
Andrew Kelley
caa6433b56
stack traces: support DW_AT_ranges
...
This makes some cases print stack traces where it previously failed.
2017-12-12 12:05:28 -05:00
Andrew Kelley
23058d8b43
self-hosted: link with LLVM
2017-12-11 23:34:59 -05:00
Andrew Kelley
ed4d94a5d5
self-hosted: test all out of memory conditions
2017-12-11 21:12:47 -05:00
Andrew Kelley
c4e7d05ce3
refactor debug.global_allocator into mem.FixedBufferAllocator
2017-12-11 17:27:31 -05:00
Andrew Kelley
fd6a36a235
self-hosted: parsing and rendering blocks
2017-12-11 09:21:06 -05:00
Andrew Kelley
f210f17d30
add self-hosted parsing and rendering to main tests
2017-12-10 21:26:52 -05:00
Andrew Kelley
4b1d120f58
Merge remote-tracking branch 'origin/master' into self-hosted
2017-12-10 19:41:01 -05:00
Andrew Kelley
dc2e3465c7
rendering source code without recursion
2017-12-10 19:40:46 -05:00
Andrew Kelley
22dc713a2f
mem.Allocator initializes bytes to undefined
2017-12-10 15:38:05 -05:00
Andrew Kelley
d431b0fb99
parse a simple variable declaration
2017-12-08 23:15:43 -05:00
Andrew Kelley
7c91a055c1
Merge branch 'master' into self-hosted
2017-12-06 18:20:02 -05:00
Andrew Kelley
62c25af802
add higher level arg-parsing API + misc. changes
...
* add @noInlineCall - see #640
This fixes a crash in --release-safe and --release-fast modes
where the optimizer inlines everything into _start and
clobbers the command line argument data.
If we were able to verify that the user's code never reads
command line args, we could leave off this "no inline"
attribute.
* add i29 and u29 primitive types. u29 is the type of alignment,
so it makes sense to be a primitive.
probably in the future we'll make any `i` or `u` followed by
digits into a primitive.
* add `aligned` functions to Allocator interface
* add `os.argsAlloc` and `os.argsFree` so that you can get
a `[]const []u8`, do whatever arg parsing you want, and then free
it. For now this uses the other API under the hood, but it could
be reimplemented to do a single allocation.
* add tests to make sure command line argument parsing works.
2017-12-06 18:12:05 -05:00
Andrew Kelley
31d9dc3539
read a file
2017-12-04 22:05:27 -05:00
Andrew Kelley
42004f9013
Merge branch 'master' into llvm6
2017-12-04 15:28:17 -05:00
Andrew Kelley
a966275e50
rename builtin.is_big_endian to builtin.endian
...
See #307
2017-12-04 10:36:31 -05:00
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