From c79f5edc6e5195d99979cf9eecb5b8cc280e092e Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Tue, 23 Apr 2024 12:40:09 +0300 Subject: [PATCH 1/4] Drop support for Clojure 1.9 New minimum supported version is 1.10.3. --- .circleci/config.yml | 7 +++---- CHANGELOG.md | 1 + doc/modules/ROOT/pages/compatibility.adoc | 7 ++++++- doc/modules/ROOT/pages/usage.adoc | 2 -- project.clj | 5 ----- src/cider_nrepl/plugin.clj | 6 +++--- test/clj/cider/nrepl/middleware/spec_test.clj | 2 +- test/clj/cider/nrepl/plugin_test.clj | 4 ++-- test/common/cider_nrepl/plugin_test.clj | 4 ++-- test/smoketest/project.clj | 3 +-- 10 files changed, 19 insertions(+), 22 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f94616e34..6b14dec93 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -194,8 +194,8 @@ jobs: # The ci-test-matrix does the following: # # - run tests against the target matrix -# - Java 8/11/16/... -# - Clojure 1.9, 1.10, 1.11, master +# - Java 8/11/17/21/22 +# - Clojure 1.10, 1.11, master # - linter, eastwood and cljfmt workflows: @@ -206,8 +206,7 @@ workflows: matrix: alias: "test_code_jdk8" parameters: - # Clojure 1.9 is tested only against JDK8. - clojure_version: ["1.9", "1.10", "1.11", "master"] + clojure_version: ["1.10", "1.11", "master"] jdk_version: [openjdk8] # It doesn't make sense to exercise the newer Orchard Java parsers against JDK8 # (given that JDK8 is explicitly excluded by those parsers) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26dcc2cde..a7b8dca48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Changes +* [#868](https://github.com/clojure-emacs/cider-nrepl/pull/868): Drop support for Clojure 1.9. * Refine `ops-that-can-eval` internals, adapting them to the new `cider.nrepl.middleware.reload` ops. * Bump `nrepl` to [1.1.1](https://github.com/nrepl/nrepl/blob/master/CHANGELOG.md#111-2024-02-20). * Bump `compliment` to [0.5.3](https://github.com/alexander-yakushev/compliment/blob/14329344/CHANGELOG.md#053-2024-04-11). diff --git a/doc/modules/ROOT/pages/compatibility.adoc b/doc/modules/ROOT/pages/compatibility.adoc index 877226eea..78542d584 100644 --- a/doc/modules/ROOT/pages/compatibility.adoc +++ b/doc/modules/ROOT/pages/compatibility.adoc @@ -9,7 +9,7 @@ by Oracle. == Clojure -`cider-nrepl` targets Clojure 1.9+. As Clojure doesn't have the concept of supported releases +`cider-nrepl` 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 @@ -90,6 +90,11 @@ requirements were bumped to nREPL 0.6 in recent versions. | 1.9 | 1.0.0 +| 0.48.0 +| 8 +| 1.10 +| 1.0.0 + |=== == Backwards Compatibility diff --git a/doc/modules/ROOT/pages/usage.adoc b/doc/modules/ROOT/pages/usage.adoc index b8c98d917..387062f24 100644 --- a/doc/modules/ROOT/pages/usage.adoc +++ b/doc/modules/ROOT/pages/usage.adoc @@ -90,8 +90,6 @@ For more information visit https://github.com/boot-clj/boot/wiki/Cider-REPL[boot == Via clj -NOTE: `clj` was introduced in Clojure 1.9. - You can easily boot an nREPL server with the CIDER middleware loaded with the following "magic" incantation: diff --git a/project.clj b/project.clj index cb7d12f12..9ef729fd7 100644 --- a/project.clj +++ b/project.clj @@ -87,11 +87,6 @@ [com.google.errorprone/error_prone_annotations "2.26.1"] [com.google.code.findbugs/jsr305 "3.0.2"]] :test-paths ["test/spec"]} - :1.9 {:dependencies [[commons-logging/commons-logging "1.3.1"] - [org.clojure/clojure "1.9.0"] - [org.clojure/clojurescript "1.10.520" :scope "provided"]] - ;; TODO: Merge the tests in this dir in to test/clj - :test-paths ["test/spec"]} :1.10 {:dependencies [[org.clojure/clojure "1.10.3"] [org.clojure/clojurescript "1.10.520" :scope "provided"]] :test-paths ["test/spec"]} diff --git a/src/cider_nrepl/plugin.clj b/src/cider_nrepl/plugin.clj index 66e3e7113..e3998dff4 100644 --- a/src/cider_nrepl/plugin.clj +++ b/src/cider_nrepl/plugin.clj @@ -7,7 +7,7 @@ [leiningen.core.main :as lein])) (def minimum-versions {:lein "2.8.3" - :clojure "1.9.0"}) + :clojure "1.10.3"}) (defn valid-version? [kind version] (lein/version-satisfies? version (minimum-versions kind))) (def valid-lein-version? (partial valid-version? :lein)) @@ -46,9 +46,9 @@ (when-not lein-version-ok? (lein/warn "Warning: cider-nrepl requires Leiningen 2.8.3 or greater.")) (when-not clojure-version-ok? - (lein/warn "Warning: cider-nrepl requires Clojure 1.9 or greater.")) + (lein/warn "Warning: cider-nrepl requires Clojure 1.10.3 or greater.")) (when clojure-excluded? - (lein/warn "Warning: Clojure is excluded, assuming an appropriate fork (Clojure 1.9 or later) is provided.")) + (lein/warn "Warning: Clojure is excluded, assuming an appropriate fork (Clojure 1.10.3 or later) is provided.")) (when-not (and lein-version-ok? clojure-version-ok?) (lein/warn "Warning: cider-nrepl will not be included in your project.")) diff --git a/test/clj/cider/nrepl/middleware/spec_test.clj b/test/clj/cider/nrepl/middleware/spec_test.clj index ad157d4bc..e905dbd93 100644 --- a/test/clj/cider/nrepl/middleware/spec_test.clj +++ b/test/clj/cider/nrepl/middleware/spec_test.clj @@ -8,7 +8,7 @@ (use-fixtures :each session/session-fixture) -(deftest ^{:min-clj-version "1.9.0"} spec-list-integration-test +(deftest spec-list-integration-test (let [filter-regex "clojure" filtered-spec-list (:spec-list (session/message {:op "spec-list" :filter-regex filter-regex}))] diff --git a/test/clj/cider/nrepl/plugin_test.clj b/test/clj/cider/nrepl/plugin_test.clj index 26bb60f06..b2f04183d 100644 --- a/test/clj/cider/nrepl/plugin_test.clj +++ b/test/clj/cider/nrepl/plugin_test.clj @@ -15,5 +15,5 @@ (is (= expected-output (middleware {:dependencies [['org.clojure/clojure]]})))) (testing "defined versions also work" - (is (= (update-in expected-output [:dependencies 0] conj "1.10.0") - (middleware {:dependencies [['org.clojure/clojure "1.10.0"]]}))))) + (is (= (update-in expected-output [:dependencies 0] conj "1.10.3") + (middleware {:dependencies [['org.clojure/clojure "1.10.3"]]}))))) diff --git a/test/common/cider_nrepl/plugin_test.clj b/test/common/cider_nrepl/plugin_test.clj index 25d85891d..12b0db069 100644 --- a/test/common/cider_nrepl/plugin_test.clj +++ b/test/common/cider_nrepl/plugin_test.clj @@ -17,7 +17,7 @@ (binding [lein/*info* false] (with-redefs [lein/leiningen-version (constantly (plugin/minimum-versions :lein))] (testing "Valid Lein version; valid Clojure version" - (let [project (plugin/middleware '{:dependencies [[org.clojure/clojure "1.9.0"]]})] + (let [project (plugin/middleware '{:dependencies [[org.clojure/clojure "1.10.3"]]})] (is (contains-cider-nrepl-dep? project)) (is (contains-cider-nrepl-middleware? project)))) @@ -39,7 +39,7 @@ (with-redefs [lein/leiningen-version (constantly "2.5.1")] (testing "Invalid Lein version; valid Clojure version" - (let [project (plugin/middleware '{:dependencies [[org.clojure/clojure "1.9.0"]]})] + (let [project (plugin/middleware '{:dependencies [[org.clojure/clojure "1.10.3"]]})] (is (not (contains-cider-nrepl-dep? project))) (is (not (contains-cider-nrepl-middleware? project))))) diff --git a/test/smoketest/project.clj b/test/smoketest/project.clj index 6aade0078..d993499b9 100644 --- a/test/smoketest/project.clj +++ b/test/smoketest/project.clj @@ -1,8 +1,7 @@ (defproject smoketest "0.1.0-SNAPSHOT" :dependencies [[nrepl "1.0.0"] [cider/cider-nrepl "RELEASE"]] - :profiles {:1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]} - :1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]} + :profiles {:1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]} :1.11 {:dependencies [[org.clojure/clojure "1.11.1"]]} :master {:repositories [["snapshots" "https://oss.sonatype.org/content/repositories/snapshots"]] :dependencies [[org.clojure/clojure "1.12.0-master-SNAPSHOT"]]} From 7df4a7f6bf39f6112e235c0d25adda8abaaa80f8 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Tue, 23 Apr 2024 12:40:48 +0300 Subject: [PATCH 2/4] Use requiring-resolve where applicable --- src/cider/nrepl/middleware/complete.clj | 3 +-- .../nrepl/middleware/util/error_handling.clj | 8 ++------ src/cider/nrepl/pprint.clj | 15 +++------------ test/smoketest/src/smoketest/core.clj | 3 +-- 4 files changed, 7 insertions(+), 22 deletions(-) diff --git a/src/cider/nrepl/middleware/complete.clj b/src/cider/nrepl/middleware/complete.clj index 626b75a3e..bb9d14c99 100644 --- a/src/cider/nrepl/middleware/complete.clj +++ b/src/cider/nrepl/middleware/complete.clj @@ -19,8 +19,7 @@ (def suitable-complete-for-nrepl (when suitable-enabled? - (require 'suitable.complete-for-nrepl) - @(resolve 'suitable.complete-for-nrepl/complete-for-nrepl))) + (requiring-resolve 'suitable.complete-for-nrepl/complete-for-nrepl))) (def clj-sources "A list of Clojure completion sources for compliment." diff --git a/src/cider/nrepl/middleware/util/error_handling.clj b/src/cider/nrepl/middleware/util/error_handling.clj index b4b9e89e3..3633afeed 100644 --- a/src/cider/nrepl/middleware/util/error_handling.clj +++ b/src/cider/nrepl/middleware/util/error_handling.clj @@ -14,15 +14,11 @@ (def ^:private print-cause-trace (delay - (do - (require 'clojure.stacktrace) - (resolve 'clojure.stacktrace/print-cause-trace)))) + (requiring-resolve 'clojure.stacktrace/print-cause-trace))) (def ^:private analyze-causes (delay - (do - (require 'haystack.analyzer) - (resolve 'haystack.analyzer/analyze)))) + (requiring-resolve 'haystack.analyzer/analyze))) ;;; UTILITY FUNCTIONS diff --git a/src/cider/nrepl/pprint.clj b/src/cider/nrepl/pprint.clj index eb58cbc6c..734dac1fd 100644 --- a/src/cider/nrepl/pprint.clj +++ b/src/cider/nrepl/pprint.clj @@ -47,10 +47,7 @@ (apply pp/write value (mapcat identity (assoc options :stream writer))))) (def ^:private fipp-printer - (delay - (do - (require 'fipp.edn) - (resolve 'fipp.edn/pprint)))) + (delay (requiring-resolve 'fipp.edn/pprint))) (defn fipp-pprint ([value writer] @@ -60,10 +57,7 @@ (@fipp-printer value options)))) (def ^:private puget-printer - (delay - (do - (require 'puget.printer) - (resolve 'puget.printer/pprint)))) + (delay (requiring-resolve 'puget.printer/pprint))) (defn puget-pprint ([value writer] @@ -73,10 +67,7 @@ (@puget-printer value options)))) (def ^:private zprint-printer - (delay - (do - (require 'zprint.core) - (resolve 'zprint.core/zprint)))) + (delay (requiring-resolve 'zprint.core/zprint))) (defn zprint-pprint ([value writer] diff --git a/test/smoketest/src/smoketest/core.clj b/test/smoketest/src/smoketest/core.clj index 31228bc7e..6a6d87966 100644 --- a/test/smoketest/src/smoketest/core.clj +++ b/test/smoketest/src/smoketest/core.clj @@ -14,8 +14,7 @@ ;; see cider-nrepl issue #447 (defn nrepl-handler [] - (require 'cider.nrepl) - (ns-resolve 'cider.nrepl 'cider-nrepl-handler)) + (requiring-resolve 'cider.nrepl/cider-nrepl-handler)) (defn nrepl-server-fixture "Derived from the cider-nrepl test fixture. Launch the nrepl server, From b0446562b59288dbe01c5cbc716b6607a82144c8 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Tue, 23 Apr 2024 12:46:05 +0300 Subject: [PATCH 3/4] [ci] Only test legacy parser with JDK8 --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6b14dec93..313724b16 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -223,7 +223,8 @@ workflows: parameters: clojure_version: ["1.10", "1.11", "master"] jdk_version: [openjdk11, openjdk17, openjdk21, openjdk22] - parser_target: ["parser-next", "parser", "legacy-parser"] + # Don't test legacy parser on JDK11+ since it is never invoked there. + parser_target: ["parser-next", "parser"] test_command: ["test", "smoketest"] filters: branches: From b3505e478308b0e073937c9e342a7bd080f7fbf4 Mon Sep 17 00:00:00 2001 From: Oleksandr Yakushev Date: Tue, 23 Apr 2024 12:46:59 +0300 Subject: [PATCH 4/4] [tests] Move spec tests to standard Clojure tests Separation no longer needed after 1.9. --- test/{spec => clj}/cider/nrepl/middleware/info_spec_test.clj | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{spec => clj}/cider/nrepl/middleware/info_spec_test.clj (100%) diff --git a/test/spec/cider/nrepl/middleware/info_spec_test.clj b/test/clj/cider/nrepl/middleware/info_spec_test.clj similarity index 100% rename from test/spec/cider/nrepl/middleware/info_spec_test.clj rename to test/clj/cider/nrepl/middleware/info_spec_test.clj