= Compatibility

== Emacs

CIDER supports Emacs 26.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, Java 11, Java 17, Java 21 and the most recent rapid
release version (e.g. Java 22).  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.

On Linux you are also required to make sure that JDK sources and javadocs are installed.
You can find example commands in xref:troubleshooting.adoc#navigation-to-jdk-sources-doesnt-work[Troubleshooting].

== 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

NOTE: For a very long time CIDER and cider-nrepl were released in lock-step, but
this changed in CIDER 0.18. The actual releases diverged for the first time in
CIDER 0.23.

Below you can find the official compatibility matrix for CIDER.

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

| 0.22
| 25.1
| 0.6
| 0.22
| 8
| 1.8

| 0.23
| 25.1
| 0.6
| 0.22
| 8
| 1.8

| 0.24
| 25.1
| 0.6
| 0.24
| 8
| 1.8

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

| 0.26
| 25.1
| 0.6
| 0.25
| 8
| 1.8

| 1.0
| 25.1
| 0.6
| 0.25
| 8
| 1.8

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

| 1.2
| 26.1
| 0.9
| 0.27
| 8
| 1.8

| 1.3
| 26.1
| 0.9
| 0.28
| 8
| 1.8

| 1.4
| 26.1
| 0.9
| 0.28
| 8
| 1.8

| 1.5
| 26.1
| 0.9
| 0.28
| 8
| 1.8

| 1.6
| 26.1
| 1.0
| 0.29
| 8
| 1.8

| 1.7
| 26.1
| 1.0
| 0.30
| 8
| 1.8

| 1.8
| 26.1
| 1.0
| 0.40
| 8
| 1.8

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

| 1.12
| 26.1
| 1.0
| 0.44
| 8
| 1.9

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

| 1.14
| 26.1
| 1.0
| 0.47
| 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.
