Go to file
Andrew Kelley 4a67dd04c9
breaking changes to std.fs, std.os
* improve `std.fs.AtomicFile` to use sendfile()
   - also fix AtomicFile cleanup not destroying tmp files under some
     error conditions
 * improve `std.fs.updateFile` to take advantage of the new `makePath`
   which no longer needs an Allocator.
 * rename std.fs.makeDir to std.fs.makeDirAbsolute
 * rename std.fs.Dir.makeDirC to std.fs.Dir.makeDirZ
 * add std.fs.Dir.makeDirW and provide Windows implementation of
   std.os.mkdirat. std.os.windows.CreateDirectory is now implemented
   by calling ntdll, supports an optional root directory handle,
   and returns an open directory handle. Its error set has a few more
   errors in it.
 * rename std.fs.Dir.changeTo to std.fs.Dir.setAsCwd
 * fix std.fs.File.writevAll and related functions when len 0 iovecs
   supplied.
 * introduce `std.fs.File.writeFileAll`, exposing a convenient
   cross-platform API on top of sendfile().
 * `NoDevice` added to std.os.MakeDirError error set.
 * std.os.fchdir gets a smaller error set.
 * std.os.windows.CloseHandle is implemented with ntdll call rather than
   kernel32.
2020-03-03 15:23:27 -05:00
.builds ci: don't rely on sourcehut's pkg system 2020-01-30 10:23:00 -05:00
.github funding: I've been accepted into the GitHub Sponsors program 2019-07-11 13:00:39 -04:00
ci enable passing freebsd tests 2020-02-14 12:00:38 -05:00
cmake rename libuserland to libstage2 2020-02-16 19:16:08 -05:00
deps Revert LLD patch 2019-10-12 10:57:11 +02:00
doc update docs to latest Target API 2020-02-28 14:51:55 -05:00
lib breaking changes to std.fs, std.os 2020-03-03 15:23:27 -05:00
src stage1: fix compilation on 32-bit arm 2020-03-01 03:27:09 -05:00
src-self-hosted Update callers of fs.makePath 2020-03-03 13:25:43 -05:00
test breaking: std.os read/write functions + sendfile 2020-03-03 02:25:26 -05:00
tools Fix remaining variadic formatted prints 2020-01-09 13:36:44 -05:00
.gitattributes git, I love you, but please stop mangling my files 2019-09-22 18:11:55 -04:00
.gitignore fix .gitignore file and add commit missing std lib file 2019-02-26 18:33:27 -05:00
build.zig separate std.Target and std.zig.CrossTarget 2020-02-28 14:51:54 -05:00
CMakeLists.txt quick fix: add -mcpu=baseline support to zig0 2020-02-20 17:02:29 -05:00
CONTRIBUTING.md cmake: support make and make install 2020-01-17 19:39:43 -05:00
LICENSE
README.md update readme tagline 2019-12-30 18:17:13 -05:00

ZIG

A general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

Resources

Building from Source

Build Status

Note that you can download a binary of master branch.

Stage 1: Build Zig from C++ Source Code

Dependencies

POSIX
  • cmake >= 2.8.5
  • gcc >= 5.0.0 or clang >= 3.6.0
  • LLVM, Clang, LLD development libraries == 9.x, compiled with the same gcc or clang version above
Windows
  • cmake >= 3.15.3
  • Microsoft Visual Studio. Supported versions:
    • 2015 (version 14)
    • 2017 (version 15.8)
    • 2019 (version 16)
  • LLVM, Clang, LLD development libraries == 9.x

Instructions

POSIX
mkdir build
cd build
cmake ..
make install
MacOS
brew install cmake llvm@9
brew outdated llvm@9 || brew upgrade llvm@9
mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=$(brew --prefix llvm)
make install
Windows

See https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows

Stage 2: Build Self-Hosted Zig from Zig Source Code

Note: Stage 2 compiler is not complete. Beta users of Zig should use the Stage 1 compiler for now.

Dependencies are the same as Stage 1, except now you can use stage 1 to compile Zig code.

bin/zig build --prefix $(pwd)/stage2

This produces ./stage2/bin/zig which can be used for testing and development. Once it is feature complete, it will be used to build stage 3 - the final compiler binary.

Stage 3: Rebuild Self-Hosted Zig Using the Self-Hosted Compiler

Note: Stage 2 compiler is not yet able to build Stage 3. Building Stage 3 is not yet supported.

Once the self-hosted compiler can build itself, this will be the actual compiler binary that we will install to the system. Until then, users should use stage 1.

Debug / Development Build

./stage2/bin/zig build --prefix $(pwd)/stage3

Release / Install Build

./stage2/bin/zig build install -Drelease