Commit Graph

1849 Commits (5895204c99f498aa8ec523a311f12d13c945b077)

Author SHA1 Message Date
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 019f18058b fix test failures
put all the codegen for fn prototypes to the same place
2017-11-10 16:32:37 -05:00
Andrew Kelley 403a46abcc fix test failure on 32 bit windows 2017-11-10 16:03:14 -05:00
Andrew Kelley 6bf1547148 Merge branch 'darwin-stat'
closes #606
2017-11-10 15:01:09 -05:00
Andrew Kelley 029d37d6a7 fix bug when multiple function definitions exist
This might be related to #529
2017-11-10 14:58:50 -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 7ea669e04c fix parameter of extern var args not type checked
closes #601
2017-11-09 11:30:39 -05:00
Andrew Kelley 4f8c26d2c6 fix enum sizes too large
closes #598
2017-11-08 21:44:10 -05:00
Andrew Kelley 53b18c8542 fix travis linux script 2017-11-07 09:06:29 -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 634e8713c3 add @memberType and @memberName builtin functions
see #383

there is a plan to unify most of the reflection into 2
builtin functions, as outlined in the above issue,
but this gives us needed features for now, and we can
iterate on the design in future commits
2017-11-06 22:07:19 -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
Andrew Kelley 52a2992862
Merge pull request #587 from scurest/c_alloc_redeclaration_of_mem
Fix #585
2017-11-05 19:38:50 -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 4cc9fe90a8 fix build on MacOS 2017-11-04 16:40:55 -04:00
Andrew Kelley f0d755153d add compile-time reflection for function arg types
See #383
2017-11-04 16:20:02 -04:00
Andrew Kelley 4a6df04f75 slightly more verbose error message when building object file fails 2017-11-03 20:07:32 -04:00
Andrew Kelley 75afe73c66
Merge pull request #581 from Dimenus/line_endings
Add support for windows line endings with c macros within a c_import.
2017-11-03 18:40:38 -04:00
Andrew Kelley d4c1ed95ac
Merge pull request #583 from Dimenus/libc_runtime
Win32 libc runtime fixes.
2017-11-03 18:32:03 -04:00
dimenus 1890760206 Windows libc & static libc are located in the same dir which is already covered by msvc_lib_dir 2017-11-03 17:09:35 -05:00
dimenus 1ef6cb1b64 Add support for windows line endings with c macros 2017-11-03 16:29:49 -05:00
Marc Tiehuis 795703a39c Add emit command-line option (#580)
Add emit command-line option
2017-11-03 09:09:33 -04:00
Andrew Kelley a31b23c46b more compile-time type reflection
See #383
2017-11-03 00:00:57 -04:00
Andrew Kelley dc8b011d61 fix incorrect debug info for empty structs
closes #579

now all tests pass for llvm master branch
2017-11-02 21:57:55 -04:00
Andrew Kelley abff1b6884 windows: use the same libc search within a compilation unit 2017-11-01 23:08:34 -04:00
Andrew Kelley f7837f445e bump build_runner allocator to use 30 MB 2017-11-01 16:46:10 -04:00
Dimenus 38f05d4ac5 WIN32: Linking with the CRT at runtime. (#570)
Disclaimer: Forgive me if my format sucks, I've never submitted a PR before!

Fixes: #517 

I added a few things to allow zig to link with the CRT properly both statically and dynamically. In Visual Studio 2017, Microsoft changed how the c-runtime is factored again. With this change, they also added a COM interface to allow you to query the respective Visual Studio instance for two of them. This does that and also falls back on a registry query for 2015 support. If you're using a Visual Studio instance older than 2015, you'll have to use the existing options available with the zig compiler. Changes are listed below along with a general description of the changes.

all_types.cpp:

The separate variables for msvc/kern32 have been removed and all win32 libc directory paths have been combined into a ZigList since we're querying more than two directories and differentiating one from another doesn't matter to lld.

analyze.cpp:

The existing functions were extended to support querying libc libs & libc headers at runtime.

codegen.cpp/hpp:

Microsoft uses the new 'Universal C Runtime' name now. Doesn't matter from a functionality standpoint. I left the compiler switches as is to not introduce any breaking changes.

link.cpp:

We're linking 4 libs and generating another in order to support the UCRT.
Dynamic: msvcrt/d, vcruntime/d, ucrt/d, legacy_stdio_definitions.lib
Static: libcmt/d, libvcruntime/d libucrt/d, legacy_stdio_definitions.lib

main.cpp:

Update function call names.

os.cpp/hpp:

COM/Registry interface for querying Windows UCRT/SDK.

Sources:
[Windows CRT](https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features)
[VS 2015 Breaking Changes](https://msdn.microsoft.com/en-us/library/bb531344.aspx)
2017-11-01 15:33:14 -04:00
Andreas Haferburg b35689b70d Enforce "\n" line endings on Windows (#574)
With Windows line endings, which seems to be the default on Windows, the
zig compiler won't understand std out of the box. This project should
not rely on git's global core.autocrlf setting.
2017-11-01 10:31:32 -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 7a96aca39e Merge branch 'master' into self-hosted 2017-10-27 12:54:46 -04:00
Andrew Kelley 1a414c7b6b delete -municode command line argument
The solution to this is to always have it on and only
use the 'W' versions of respective windows APIs.

See the issue for this.
2017-10-27 01:29:58 -04:00
Andrew Kelley 540bac0928 Merge branch 'master' into self-hosted 2017-10-27 01:28:08 -04:00
Andrew Kelley 4c306af4eb add test case for previous commit 2017-10-27 01:22:48 -04:00
Andrew Kelley f1072d0d9f use llvm named structs for const values when possible
normally we want to use llvm types for constants. but
union constants (which are found inside enums) when
they are initialized with the non-most-aligned-member
must be unnamed structs.

these bubble up to all aggregate types. if a constant of
an aggregate type contains, recursively, a union constant
with a non-most-aligned-member initialized, the aggregate
typed constant must be unnamed too.

this fixes some of the asserts that were coming in from
llvm master branch.
2017-10-27 00:14:56 -04:00
Marc Tiehuis 6663638195 Improve invalid character error messages (#566)
See #544
2017-10-26 10:00:23 -04:00
Andrew Kelley f4ca3482f1 add guard to c_headers for duplicate va_list on darwin 2017-10-26 01:11:57 -04:00
Andrew Kelley c7053bea20 better output when @cImport generates invalid zig 2017-10-26 00:32:30 -04:00
Andrew Kelley 300c83d893 fix crash on field access of opaque type 2017-10-25 23:18:18 -04:00
Andrew Kelley 5f28a9d238 cleaner verbose flags and zig build prints failed command 2017-10-25 23:10:41 -04:00
Andrew Kelley 6764a45223 Merge branch 'better-float-printing' 2017-10-24 21:58:09 -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