# add higher level arg-parsing API \+ misc\. changes · gitcafe/zig

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

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

Visibility: public

Requested revision: 62c25af8021fc399c9a8c667dd986a458b40a7dd

Requested commit: 62c25af8021fc399c9a8c667dd986a458b40a7dd

Commit: 62c25af8021fc399c9a8c667dd986a458b40a7dd

Tree: be055f4bc246bb05360dac57c02dc3d43b26563f

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

```
add higher level arg-parsing API + misc. changes

 * add @noInlineCall - see #640
   This fixes a crash in --release-safe and --release-fast modes
   where the optimizer inlines everything into _start and
   clobbers the command line argument data.
   If we were able to verify that the user's code never reads
   command line args, we could leave off this "no inline"
   attribute.
 * add i29 and u29 primitive types. u29 is the type of alignment,
   so it makes sense to be a primitive.
   probably in the future we'll make any `i` or `u` followed by
   digits into a primitive.
 * add `aligned` functions to Allocator interface
 * add `os.argsAlloc` and `os.argsFree` so that you can get
   a `[]const []u8`, do whatever arg parsing you want, and then free
   it. For now this uses the other API under the hood, but it could
   be reimplemented to do a single allocation.
 * add tests to make sure command line argument parsing works.

```

## Parents

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

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