Go to file
Andrew Kelley 29cfd47d65 re-enable test-cases and get them all passing
Instead of using `zig test` to build a special version of the compiler
that runs all the test-cases, the zig build system is now used as much
as possible - all with the basic steps found in the standard library.

For incremental compilation tests (the ones that look like foo.0.zig,
foo.1.zig, foo.2.zig, etc.), a special version of the compiler is
compiled into a utility executable called "check-case" which checks
exactly one sequence of incremental updates in an independent
subprocess. Previously, all incremental and non-incremental test cases
were done in the same test runner process.

The compile error checking code is now simpler, but also a bit
rudimentary, and so it additionally makes sure that the actual compile
errors do not include *extra* messages, and it makes sure that the
actual compile errors output in the same order as expected. It is also
based on the "ends-with" property of each line rather than the previous
logic, which frankly I didn't want to touch with a ten-meter pole. The
compile error test cases have been updated to pass in light of these
differences.

Previously, 'error' mode with 0 compile errors was used to shoehorn in a
different kind of test-case - one that only checks if a piece of code
compiles without errors. Now there is a 'compile' mode of test-cases,
and 'error' must be only used when there are greater than 0 errors.

link test cases are updated to omit the target object format argument
when calling checkObject since that is no longer needed.

The test/stage2 directory is removed; the 2 files within are moved to be
directly in the test/ directory.
2023-03-15 10:48:14 -07:00
.github CI: give x86_64-linux-release a little more time 2023-01-27 14:53:17 -07:00
ci CI: take advantage of zig build concurrency 2023-03-15 10:48:14 -07:00
cmake Merge pull request #13514 from kcbanner/windows_build_fixes 2023-01-05 17:26:32 -07:00
doc Resolve docs inconsistency with Overflow builtins 2023-03-13 14:47:20 +00:00
lib build runner enhancements in preparation for test-cases 2023-03-15 10:48:14 -07:00
src re-enable test-cases and get them all passing 2023-03-15 10:48:14 -07:00
stage1 Include signal.h to define SIGTRAP in Stage 1 compiler (#14867) 2023-03-10 13:36:43 +00:00
test re-enable test-cases and get them all passing 2023-03-15 10:48:14 -07:00
tools tools: fix typo in lldb command 2023-03-15 00:01:44 -04:00
.gitattributes update gitattributes and move test data into subdir 2022-12-18 16:28:30 -07:00
.gitignore
build.zig re-enable test-cases and get them all passing 2023-03-15 10:48:14 -07:00
CMakeLists.txt extract ThreadPool and WaitGroup from compiler to std lib 2023-03-15 10:48:12 -07:00
LICENSE Happy new year! 🎉 (#14143) 2022-12-31 18:13:00 +00:00
README.md

ZIG

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

Resources

Installation

License

The ultimate goal of the Zig project is to serve users. As a first-order effect, this means users of the compiler, helping programmers to write better software. Even more important, however, are the end-users.

Zig is intended to be used to help end-users accomplish their goals. Zig should be used to empower end-users, never to exploit them financially, or to limit their freedom to interact with hardware or software in any way.

However, such problems are best solved with social norms, not with software licenses. Any attempt to complicate the software license of Zig would risk compromising the value Zig provides.

Therefore, Zig is available under the MIT (Expat) License, and comes with a humble request: use it to make software better serve the needs of end-users.

This project redistributes code from other projects, some of which have other licenses besides MIT. Such licenses are generally similar to the MIT license for practical purposes. See the subdirectories and files inside lib/ for more details.