aboutsummarylogtreecommitdiffstats
path: root/README.md
blob: 1d6734259e2bbdeb7dfafca4edc9ea13a24e767e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# ty-bin

> **An extremely fast Python type checker and language server — by [Astral](https://astral.sh).**
> Same `ty`. Just the upstream binary, for Arch users whose `extra/ty` won't even start.

```sh
paru -S ty-bin      # or yay -S ty-bin
```

---

## Why this package exists

`extra/ty` from the official Arch repositories **crashes at startup** on
aarch64 systems with a **16 KiB memory page size**, including:

- Asahi Linux on Apple Silicon
- Ampere Altra / AltraMax servers (Oracle Cloud A1, Hetzner CAX, etc.)
- AWS Graviton with `CONFIG_ARM64_16K_PAGES`
- Some Raspberry Pi 5 / Pi 4 kernels built for 16K pages

The reason: ty links **jemalloc**, and the Arch build was compiled assuming
**4 KiB pages**. On a 16 KiB host, jemalloc aborts before `main()` ever runs.

```
<jemalloc>: Unsupported system page size
```

Astral's upstream binary compiles jemalloc with `--with-lg-page=16` (64 KiB),
which works on **4 K, 16 K, and 64 K** page systems alike. This package
installs **exactly that binary** — byte-for-byte what Astral publishes on
GitHub Releases — and declares `provides=('ty')` / `conflicts=('ty')` so
pacman cleanly swaps `extra/ty` out for you.

## Install

```sh
paru -S ty-bin      # or: yay -S ty-bin
```

If `extra/ty` is already installed, pacman will offer to replace it. After
install:

```sh
ty --version        # ty 0.0.40
```

## Supported architectures

| Arch       | Linux flavor        | 16 K page safe? |
|------------|---------------------|:---------------:|
| `x86_64`   | glibc               |       N/A       |
| `aarch64`  | glibc               |       Yes       |
| `armv7h`   | glibc, hardfloat    |       N/A       |

Shell completions for **bash**, **zsh**, and **fish** are installed automatically.

## When you should NOT use this

If you're on `x86_64`, or on `aarch64` with a stock **4 K-page** kernel,
`extra/ty` works perfectly fine and tracks Arch's release cadence closely.
Use `ty-bin` only when you actually need the page-size workaround, or want
the upstream binary verbatim.

## Verifying authenticity

All `sha256sums` in the PKGBUILD match the per-asset `*.sha256` sidecars
Astral publishes alongside the release. You can also verify with GitHub
Artifact Attestations:

```sh
gh attestation verify ty-x86_64-unknown-linux-gnu.tar.gz --repo astral-sh/ty
```

## Upstream

- Project: <https://github.com/astral-sh/ty>
- Docs: <https://docs.astral.sh/ty/>
- License: MIT, © Astral Software Inc.