# API glossary

Source: https://libtmux.org/en/raku/latest/reference/glossary/

> Kinds, modifiers and package labels in the Raku API reference.

## Symbol kinds

Kinds identify declarations in the Raku API reference.

### module

A Raku compilation unit that declares packages and exports declarations with is export.

The module badge names a namespace. LibTmux re-exports the public declarations of its modules, so use LibTmux gives programs the common names. A distribution and a module are different identities.

References: [Raku modules](https://docs.raku.org/language/modules).

### class

A Raku class: a package that creates objects with its own attributes and methods.

A captured model class reads local state. A reference class such as PaneRef names a tmux object and sends commands on request.

References: [Raku type system](https://docs.raku.org/language/typesystem).

### enum

A Raku enumeration: a set of named constants of one type.

Members compare by identity and keep their declared order.

References: [Raku type system](https://docs.raku.org/language/typesystem).

### trait

A Raku trait modifies a declaration with is, does or of.

A trait changes how the declaration behaves; it is not a Rust or Java trait.

References: [Raku traits](https://docs.raku.org/language/traits).

### function

A Raku sub: a routine called by name with no invocant.

A function with a hyphenated name is called as written, such as decode-layout.

References: [Raku functions](https://docs.raku.org/language/functions).

### method

A Raku method invoked on an object or a type object with a dot.

The invocant is implicit. A method that talks to tmux says so in its summary; one that reads a captured snapshot does not. A name ending in -async returns a Promise.

References: [Raku objects](https://docs.raku.org/language/objects).

### property

A public attribute accessor or a method declared as a field of a captured record.

Reading it returns the value the snapshot captured and performs no I/O.

References: [Raku objects](https://docs.raku.org/language/objects).

### constant

A named Raku value or enumeration member that cannot be reassigned.

An enumeration member is also listed under its enum.

References: [Raku variables](https://docs.raku.org/language/variables).

### typealias

A Raku subset or type constraint that gives a checked name to a narrower type.

The constraint runs when a value is bound. It does not create a new class.

References: [Raku type system](https://docs.raku.org/language/typesystem).

### exception

A Raku exception class that callers throw, catch with CATCH or try, and inspect by type.

LibTmux exceptions live under X::LibTmux and carry the fields the failure produced.

References: [Raku exceptions](https://docs.raku.org/language/exceptions).

## Modifiers

Modifiers add information about calling, implementing, or accessing a declaration. Their precise effect follows the language and the signature.

### async

An operation that returns a Promise and completes on the Raku scheduler.

Await the Promise or consume it with react and whenever. Completion of the Promise and release of its resources are separate; close what the operation owns.

References: [Raku concurrency](https://docs.raku.org/language/concurrency).

### overload

One of several multi declarations that share a name and differ in their signatures.

Raku selects the candidate from the argument types at the call. Read each signature for the types it accepts.

References: [Raku functions](https://docs.raku.org/language/functions).

### inherited

A method found through Raku class inheritance.

The page names the declaring class. A subclass reuses the method and its documented behavior unchanged.

References: [Raku type system](https://docs.raku.org/language/typesystem).

## Package context

Package labels identify where an API is supplied.

### package

The installable Raku distribution supplying this API, identified by name and authority.

The distribution LibTmux:auth<zef:libtmux> provides these modules.

References: [Raku modules](https://docs.raku.org/language/modules).
