= Compatibility

== Emacs

CIDER supports Emacs 28.1+. More generally we try to support the last 3 major Emacs releases
when that's feasible and doesn't add a lot of maintenance overhead.

NOTE: We pay special attention to supporting whatever Emacs is bundled with the current stable Debian
and RHEL GNU/Linux distributions.

== nREPL

CIDER supports nREPL 1.0+.

NOTE: We pay special attention to supporting whatever nREPL is bundled with the current stable Leiningen release.

== Java

CIDER officially targets Java 8, 11, 17, 21, and the most recent
non-LTS version. Generally speaking, we aim to support all Java releases that
are currently officially supported by Oracle.footnote:[You can find more
information about the supported Java releases
https://www.oracle.com/java/technologies/java-se-support-roadmap.html[here].]

NOTE: The requirements for Java are pretty much ``cider-nrepl``'s requirements.

While CIDER can work with
https://www.ibm.com/think/topics/jvm-vs-jre-vs-jdk[JRE], it is recommended to
use the full JDK distribution.

== Clojure

CIDER targets Clojure 1.10+. As Clojure doesn't have the concept of supported releases
we have to get a bit creative to determine the minimum version to target.

The minimum required Clojure version is currently derived using data
from the
most recent https://clojure.org/news/2023/06/30/state-of-clojure-2023[State of Clojure] survey.
In general we consider a Clojure release eligible for
dropping once its usage drops below 5%, but we'd not drop support for
any release just for the sake of doing it. We'd do it only if
this would lessen the maintenance burden or open up the possibility for
big CIDER improvements.

== ClojureScript

Currently we apply the same policy for Clojure and ClojureScript support.

== Compatibility Matrix

Below you can find the official compatibility matrix for CIDER.

.Compatibility Matrix
|===
| CIDER | Emacs | nREPL | cider-nrepl | Required JDK | Required Clojure

| 1.1
| 25.1
| 0.6
| 0.25
| 8
| 1.8

| 1.9
| 26.1
| 1.0
| 0.41
| 8
| 1.8

| 1.13
| 26.1
| 1.0
| 0.44
| 8
| 1.9

| 1.17
| 26.1
| 1.0
| 0.50
| 8
| 1.10

| 1.18
| 27.1
| 1.0
| 0.55
| 8
| 1.10

| 1.19
| 27.1
| 1.0
| 0.57
| 8
| 1.10

| 1.20
| 27.1
| 1.0
| 0.58
| 8
| 1.10

| 1.21
| 28.1
| 1.0
| 0.58
| 8
| 1.10

|===

TIP: You can also check the requirements of a particular CIDER version by inspecting
the values of some CIDER variables. For instance, the required `cider-nrepl`
version is in `cider-required-middleware-version`, and so on.
