# std.os reorganization, avoiding \`usingnamespace\` · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/3deda15e21ea3a8138d5b628f2649bbbfe7fa910)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 3deda15e21ea3a8138d5b628f2649bbbfe7fa910

Requested commit: 3deda15e21ea3a8138d5b628f2649bbbfe7fa910

Commit: 3deda15e21ea3a8138d5b628f2649bbbfe7fa910

Tree: 5ed1e0a60bd284984e328f49858c96063f1ff608

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

```
std.os reorganization, avoiding `usingnamespace`

The main purpose of this branch is to explore avoiding the
`usingnamespace` feature of the zig language, specifically with regards
to `std.os` and related functionality.

If this experiment is successful, it will provide a data point on
whether or not it would be practical to entirely remove `usingnamespace`
from the language.

In this commit, `usingnamespace` has been completely eliminated from
the Linux x86_64 compilation path, aside from io_uring.

The behavior tests pass, however that's as far as this branch goes. It is
very breaking, and a lot more work is needed before it could be
considered mergeable. I wanted to put a pull requset up early so that
zig programmers have time to provide feedback.

This is progress towards closing #6600 since it clarifies where the
actual "owner" of each declaration is, and reduces the number of
different ways to import the same declarations.

One of the main organizational strategies used here is to do namespacing
with real namespaces (e.g. structs) rather than by having declarations
share a common prefix (the C strategy). It's no coincidence that
`usingnamespace` has similar semantics to `#include` and becomes much
less necessary when using proper namespaces.

```

## Parents

- [81e2034d4ad935185344030e5ecedbd1388a65e9](https://git.cafe/gitcafe/zig/commit/81e2034d4ad935185344030e5ecedbd1388a65e9?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/3deda15e21ea3a8138d5b628f2649bbbfe7fa910?format=markdown)
