Go to file
lars 96e593145d stage1: improve message for missing fn return type
Coming from other languages it might be tempting for programmers to
accidentally leave out the return type instead of returning 'void'.

The error for this used to be

    error: invalid token: '{'
    pub fn main() {
                  ^

which is misleading. The '{' is expected but only after a return type.

The new message is

    error: expected return type (use 'void' to return nothing), found: '{'
    pub fn main() {
                  ^

which not only points out the real error but also hints at a (probably)
very common case where someone coming from e.g. Go is used to not
specifying a return type if a function returns nothing and thus forgets
to put 'void' there.

It might seem overkill to hint at the 'void' option but then the
compiler error messages are our user interface to the programmer. We
can be better than other languages in our error messages and leaving
out the return type seems to be a rather clear indication of the above
mentioned issue. Adding this will help more than distract.
2021-05-06 18:44:10 +02:00
.builds
.github
ci Merge pull request #8657 from jedisct1/ci-split 2021-05-03 17:36:51 -04:00
cmake Merge remote-tracking branch 'origin/master' into llvm12 2021-03-13 14:35:03 -07:00
deps
doc add doc in Anonymous Struct Literal section for special @"0" syntax. (#8630) 2021-05-01 01:05:45 +02:00
lib std: Implement hex float printing 2021-05-05 12:37:40 -04:00
src stage1: improve message for missing fn return type 2021-05-06 18:44:10 +02:00
test tests: re-enable reduce behavior tests for wasm32 2021-05-05 21:26:50 +02:00
tools std: Add two more ARM CPUs to the known CPU list 2021-05-03 12:32:13 +02:00
.gitattributes Fix .gitattributes rules that should be recursive 2021-04-19 16:55:12 -04:00
.gitignore std/build: change default install prefix to zig-out 2021-04-29 23:58:45 +02:00
build.zig Azure CI: Test std.* and the rest separately 2021-04-30 23:41:28 +02:00
CMakeLists.txt zld: add x86_64 relocs 2021-04-13 10:56:03 +02:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
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.