# slice and array re-work plus some misc\. changes · gitcafe/zig

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

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

Visibility: public

Requested revision: 6dba1f1c8eee5e2f037c7ef216bc64423aef8e00

Requested commit: 6dba1f1c8eee5e2f037c7ef216bc64423aef8e00

Commit: 6dba1f1c8eee5e2f037c7ef216bc64423aef8e00

Tree: f39a29e98b7e3404b114aaa08cd26d767a1666c1

Author: Andrew Kelley

Committer: Andrew Kelley

## Message

```
slice and array re-work plus some misc. changes

 * `@truncate` builtin allows casting to the same size integer.
   It also performs two's complement casting between signed and
   unsigned integers.
 * The idiomatic way to convert between bytes and numbers is now
   `mem.readInt` and `mem.writeInt` instead of an unsafe cast.
   It works at compile time, is safer, and looks cleaner.
 * Implicitly casting an array to a slice is allowed only if the
   slice is const.
 * Constant pointer values know if their memory is from a compile-
   time constant value or a compile-time variable.
 * Cast from [N]u8 to []T no longer allowed, but [N]u8 to []const T
   still allowed.
 * Fix inability to pass a mutable pointer to comptime variable at
   compile-time to a function and have the function modify the
   memory pointed to by the pointer.
 * Add the `comptime T: type` parameter back to mem.eql. Prevents
   accidentally creating instantiations for arrays.

```

## Parents

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

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