Commit Graph

191 Commits (eae355d77168d655273afa298dc921c40a36bd0b)

Author SHA1 Message Date
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 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 e932919e68 Darwin -> MacOSX, added Zen. See #438 2018-01-06 23:10:53 -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 36ff26609b fix self hosted compiler on windows 2018-01-03 04:55:49 -05: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 2031989d98 std.os.path.resolve handles an absolute path that is missing the drive 2017-12-23 22:14:35 -05:00
Andrew Kelley 39c7bd24e4 port most of main.cpp to self hosted compiler 2017-12-23 00:57:56 -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 1fdebc1dc4 wip export rewrite 2017-12-18 09:59:57 -05:00
Andrew Kelley cd5fd653d7 self-hosted: move code to std.os.ChildProcess.exec 2017-12-12 14:35:53 -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 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
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 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
Brendon Scheinman 87407b54b6 add epoll and timerfd support on linux 2017-11-10 15:12:46 -08: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
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 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 e3ad13e054 fix windows argument parsing 2017-10-15 20:19:15 -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 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 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 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 fd5a5db400 implement IncrementingAllocator for Windows 2017-09-27 22:59:58 -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 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 751ab72a82 std: fix os.sleep on darwin and windows 2017-09-19 09:46:41 -04:00
Andrew Kelley a9ecb26c34 std.os.ChildProcess: fix fd leak 2017-09-16 21:07:02 -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
Marc Tiehuis 67a31befa6 Add exit function (#450) 2017-09-09 13:48:44 -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 021155db5b successfully cross-building behavior tests for windows 2017-08-30 17:01:14 -04:00
Andrew Kelley 816689a3b1 ptrCast gives compile error for increasing alignment
See #37
2017-08-29 16:52:31 -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 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 54675b060a add ptrToInt builtin, remove usize(ptr) cast
closes #415
2017-08-08 17:38:25 -04:00
Andrew Kelley 57fb8efde2 add missing stdcallcc to ExitProcess decl 2017-08-06 16:13:52 -04: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 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
Andrea Orru 6a87aa4d2e Generalize join. 2017-05-28 15:54:53 +02:00