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