You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -24,12 +24,12 @@ A [very simple example bot](Testbot) is available.
24
24
25
25
## Requirements
26
26
27
-
* Java 11* LTS or greater required.
27
+
* Java 11* LTS or newer required.
28
28
* OpenJDK or Zulu running on Linux AMD64 is officially supported.
29
29
30
30
Support for Darwin (Mac), Windows AMD64, and Linux ARM (Raspberry Pi) is provided on a best-effort basis. This is dependent on Lavaplayer's native libraries.
31
31
32
-
Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone to not work everywhere.
32
+
Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone not to work everywhere.
33
33
34
34
**\*Java 11 appears to have some issues with Discord's TLS 1.3. Java 14 has other undiagnosed HTTPS problems. Use Java 13. Docker images have been updated.** See [#258](https://github.com/freyacodes/Lavalink/issues/258), [#260](https://github.com/freyacodes/Lavalink/issues/260)
35
35
@@ -39,76 +39,83 @@ Please see [here](CHANGELOG.md)
39
39
40
40
## Versioning policy
41
41
42
-
The public api ("api" in a very broad sense) of Lavalink can be categorized into two main domains:
43
-
-**Client Domain:** The api exposed to clients, consisting of both the websocket protocol, and any public http endpoints
44
-
-**Server Domain:** The server application with its runtime environment, its configuration, etc.
42
+
-The public API ("API" in a very broad sense) of Lavalink can be categorized into two main domains:
43
+
-**Client Domain:** The API exposed to clients, consisting of both the WebSocket protocol and any public HTTP endpoints
44
+
-**Server Domain:** The server application with its runtime environment, its configuration, etc.
45
45
46
-
Changes that might be breaking to one domain need not be breaking to the other.
47
-
Examples:
48
-
- Removing an endpoint. This is a breaking change for the client domain, but is
49
-
not a breaking change for running the server itself.
50
-
- Upgrading the minimum Java version: This is a breaking change for the server domain,
51
-
but client implementations couldn't care less about it.
46
+
- A change that is breaking to one domain might not be breaking at all to another.
52
47
53
-
Given the above, the following versioning pattern lends itself well to the Lavalink project:
48
+
*Examples:*
49
+
- Removing an endpoint: This is a breaking change for the client domain but is not for running the server itself.
50
+
- Upgrading the minimum Java version: This is a breaking change for the server domain, but client implementations couldn't care less about it.
51
+
52
+
**Given the above, the following versioning pattern lends itself well to the Lavalink project:**
54
53
55
54
_**api.major.minor.patch**_
56
55
57
-
-**Api**: Bumped when breaking changes are comitted to the client domain of Lavalink
58
-
Examples: Removing an endpoint, altering output of an endpoint in a non backwards compatible manner
59
-
-**Major**: Bumped when breaking changes are comitted to the Lavalink server domain
60
-
Examples: Bumping the required Java version, altering the configuration in a non backwards compatible manner
56
+
-**API**: Bumped when breaking changes are committed to the client domain of Lavalink
57
+
58
+
*Examples:* Removing an endpoint, altering the output of an endpoint in a non-backward-compatible manner
59
+
-**Major**: Bumped when breaking changes are committed to the Lavalink server domain
60
+
61
+
*Examples:* Bumping the required Java version, altering the configuration in a non-backward-compatible manner
61
62
-**Minor**: New features in any domain
62
-
Examples: New optional endpoint or op code, additional configuration options, change of large subsystems or dependencies
63
+
64
+
*Examples:* New optional endpoint or opcode, additional configuration options, change of large subsystems or dependencies
63
65
-**Patch**: Bug fixes in any domain
66
+
64
67
Examples: Fixing a race condition, fixing unexpected exceptions, fixing output that is not according to specs, etc.
65
68
66
-
While major, minor and patch will do a best effort to adhere to [Semantic Versioning](https://semver.org/),
67
-
prepending it with an additional api version makes life easier for developers of client implementations
68
-
in two ways: It is a clear way for the Lavalink project to communicate the actually relevant breaking changes
69
-
to client developers, and in turn, client developers can use the api version to clearly communicate to their
70
-
users about the compatibility of their clients to the Lavalink server.
69
+
While major, minor and patch will do an optimum effort to adhere to [Semantic Versioning](https://semver.org/), prepending it with an additional API version makes life easier for developers in two ways: It is a clear way for the Lavalink project to communicate the relevant breaking changes to client developers, and in return, client developers can use the API version to communicate to their users about the compatibility of their clients to the Lavalink server.
71
70
72
71
73
72
## Client libraries:
74
-
*[Lavalink-Client](https://github.com/freyacodes/lavalink-client) (JDA or generic, Java)
[disgolink](https://github.com/DisgoOrg/disgolink) | Go | Disgo/DiscordGo/**Any**
104
+
[waterlink](https://github.com/lukasl-dev/waterlink) | Go | **Any**
105
+
[gavalink](https://github.com/foxbot/gavalink) | Go | **Any** | Unmaintained
106
+
[Lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs) | Rust | **Any\*** | *`tokio`-based libraries only
107
+
108
+
Or alternatively, you can create your own client library, following the [implementation documentation](https://github.com/freyacodes/Lavalink/blob/master/IMPLEMENTATION.md).
109
+
Any client libraries marked with `Unmaintained` have been marked as such as their repositories have not received any commits for at least 1 year since time of checking,
110
+
however they are listed as they may still support Lavalink, and/or have not needed maintenance, however keep in mind that compatibility and full feature support is not guaranteed.
104
111
105
112
## Server configuration
106
113
Download binaries from [the CI server](https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&buildTypeId=Lavalink_Build&tab=artifacts&guest=1) or [the GitHub releases](https://github.com/freyacodes/Lavalink/releases).
107
114
108
-
Put an `application.yml` file in your working directory. [Example](https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example)
115
+
Put an `application.yml` file in your working directory. ([Example here](https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example))
109
116
110
117
Run with `java -jar Lavalink.jar`
111
118
112
-
Docker images are available on the [Docker hub](https://hub.docker.com/r/fredboat/lavalink/).
119
+
Docker images are available on the [Docker Hub](https://hub.docker.com/r/fredboat/lavalink/).
113
120
114
-
[](https://hub.docker.com/r/fredboat/lavalink/)[](https://microbadger.com/images/fredboat/lavalink:dev"Get your own image badge on microbadger.com")
0 commit comments