Commit 3c4965a616

Andrew Kelley <andrew@ziglang.org>
2018-11-27 17:27:45
readme: update support table
1 parent 2baf0e2
Changed files (1)
README.md
@@ -42,33 +42,71 @@ clarity.
  * In addition to creating executables, creating a C library is a primary use
    case. You can export an auto-generated .h file.
 
-### Support Table
-
-Freestanding means that you do not directly interact with the OS
-or you are writing your own OS.
-
-Note that if you use libc or other libraries to interact with the OS,
-that counts as "freestanding" for the purposes of this table.
-
-|             | freestanding | linux   | macosx  | windows | other   |
-|-------------|--------------|---------|---------|---------|---------|
-|i386         | OK           | planned | OK      | planned | planned |
-|x86_64       | OK           | OK      | OK      | OK      | planned |
-|arm          | OK           | planned | planned | planned | planned |
-|bpf          | OK           | planned | N/A     | N/A     | planned |
-|hexagon      | OK           | planned | N/A     | N/A     | planned |
-|mips         | OK           | planned | N/A     | N/A     | planned |
-|powerpc      | OK           | planned | N/A     | N/A     | planned |
-|r600         | OK           | planned | N/A     | N/A     | planned |
-|amdgcn       | OK           | planned | N/A     | N/A     | planned |
-|sparc        | OK           | planned | N/A     | N/A     | planned |
-|s390x        | OK           | planned | N/A     | N/A     | planned |
-|spir         | OK           | planned | N/A     | N/A     | planned |
-|lanai        | OK           | planned | N/A     | N/A     | planned |
-|wasm32       | planned      | N/A     | N/A     | N/A     | N/A     |
-|wasm64       | planned      | N/A     | N/A     | N/A     | N/A     |
-|riscv32      | planned      | planned | N/A     | N/A     | planned |
-|riscv64      | planned      | planned | N/A     | N/A     | planned |
+### Supported Targets
+
+#### Tier 1 Support
+
+ * Not only can Zig generate machine code for these targets, but the standard
+   library cross-platform abstractions have implementations for these targets.
+   Thus it is practical to write a pure Zig application with no dependency on
+   libc.
+ * The CI server automatically tests these targets on every commit to master
+   branch, and updates ziglang.org/download with links to pre-built binaries.
+ * These targets have debug info capabilities and therefore produce stack
+   traces on failed assertions.
+
+#### Tier 2 Support
+
+ * There may be some standard library implementations, but many abstractions
+   will give an "Unsupported OS" compile error. One can link with libc or other
+   libraries to fill in the gaps in the standard library.
+ * These targets are known to work, but are not automatically tested, so there
+   are occasional regressions.
+ * Some tests may be disabled for these targets as we work toward Tier 1
+   support.
+
+#### Tier 3 Support
+
+ * The standard library has little to no knowledge of the existence of this
+   target.
+ * Because Zig is based on LLVM, it has the capability to build for these
+   targets, and LLVM has the target enabled by default.
+ * These targets are not frequently tested; one will likely need to contribute
+   to Zig in order to build for these targets.
+ * The Zig compiler might need to be updated with a few things such as
+   - what sizes are the C integer types
+   - C ABI calling convention for this target
+   - bootstrap code and default panic handler
+
+#### Tier 4 Support
+
+ * Support for these targets is entirely experimental.
+ * LLVM may have the target as an experimental target, which means that you
+   need to use Zig-provided binaries for the target to be available, or
+   build LLVM from source with special configure flags.
+
+#### Support Table
+
+|        | freestanding | linux  | macosx | windows | freebsd | other  |
+|--------|--------------|--------|--------|---------|---------|--------|
+|x86_64  | Tier 2       | Tier 1 | Tier 1 | Tier 1  | Tier 3  | Tier 3 |
+|i386    | Tier 2       | Tier 2 | Tier 2 | Tier 2  | Tier 3  | Tier 3 |
+|arm     | Tier 2       | Tier 3 | Tier 3 | Tier 3  | Tier 3  | Tier 3 |
+|arm64   | Tier 2       | Tier 2 | Tier 3 | Tier 3  | Tier 3  | Tier 3 |
+|bpf     | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|hexagon | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|mips    | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|powerpc | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|r600    | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|amdgcn  | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|sparc   | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|s390x   | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|spir    | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|lanai   | Tier 3       | Tier 3 | N/A    | N/A     | Tier 3  | Tier 3 |
+|wasm32  | Tier 4       | N/A    | N/A    | N/A     | N/A     | N/A    |
+|wasm64  | Tier 4       | N/A    | N/A    | N/A     | N/A     | N/A    |
+|riscv32 | Tier 4       | Tier 4 | N/A    | N/A     | Tier 4  | Tier 4 |
+|riscv64 | Tier 4       | Tier 4 | N/A    | N/A     | Tier 4  | Tier 4 |
 
 ## Community