Commit Graph

618 Commits (893f1088dfe40b0141ac6988a1ae6b165f7cc643)

Author SHA1 Message Date
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 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
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 7a74dbadd7 add docs for std.base64 2017-11-14 17:58:58 -05: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 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
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
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 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