diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e0c546f..2887d95a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ A preview of the next release can be installed from ## Unreleased +- [#1761] For compatibility with [Sieppari](https://github.com/metosin/sieppari), added the following entry in `babashka.impl.classes/classes`: + - Support `support clojure.lang.RT/iter` calls + - [#1760] For compatibility with [Fireworks v0.10.3](https://github.com/paintparty/fireworks), added the following to `:instance-checks` entry in `babashka.impl.classes/classes`([@paintparty](https://github.com/paintparty)) - `clojure.lang.PersistentArrayMap$TransientArrayMap` - `clojure.lang.PersistentHashMap$TransientHashMap` diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index 8f818689..595274c6 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -128,6 +128,7 @@ {:methods [{:name "aget"} {:name "aset"} {:name "aclone"} + {:name "iter"} ;; we expose this via the Compiler/LOADER dynamic var {:name "baseLoader"}]} clojure.lang.Compiler diff --git a/test/babashka/interop_test.clj b/test/babashka/interop_test.clj index f5f569a1..297309ae 100644 --- a/test/babashka/interop_test.clj +++ b/test/babashka/interop_test.clj @@ -134,55 +134,62 @@ (deftest keygen-test (is (true? - (bb nil - '(do (ns keygen - (:import [java.security KeyPairGenerator Signature])) + (bb nil + '(do (ns keygen + (:import [java.security KeyPairGenerator Signature])) - (defn generate-key-pair - "Generates a public/private key pair." - [] - (let [keygen (KeyPairGenerator/getInstance "RSA")] - (.initialize keygen 2048) - (.generateKeyPair keygen))) + (defn generate-key-pair + "Generates a public/private key pair." + [] + (let [keygen (KeyPairGenerator/getInstance "RSA")] + (.initialize keygen 2048) + (.generateKeyPair keygen))) - (defn create-signature - "Signs the given message using the private key." - [private-key message] - (let [signature (Signature/getInstance "SHA256withRSA")] - (.initSign signature private-key) - (.update signature (.getBytes message "UTF-8")) - (.sign signature))) + (defn create-signature + "Signs the given message using the private key." + [private-key message] + (let [signature (Signature/getInstance "SHA256withRSA")] + (.initSign signature private-key) + (.update signature (.getBytes message "UTF-8")) + (.sign signature))) - (defn verify-signature - "Verifies the given signed data using the public key." - [public-key message signed-data] - (let [signature (Signature/getInstance "SHA256withRSA")] - (.initVerify signature public-key) - (.update signature (.getBytes message "UTF-8")) - (.verify signature signed-data))) + (defn verify-signature + "Verifies the given signed data using the public key." + [public-key message signed-data] + (let [signature (Signature/getInstance "SHA256withRSA")] + (.initVerify signature public-key) + (.update signature (.getBytes message "UTF-8")) + (.verify signature signed-data))) - (let [key-pair (generate-key-pair) - private-key (.getPrivate key-pair) - public-key (.getPublic key-pair) - message "This is a secret message" - signed-data (create-signature private-key message)] - (verify-signature public-key message signed-data)))))) + (let [key-pair (generate-key-pair) + private-key (.getPrivate key-pair) + public-key (.getPublic key-pair) + message "This is a secret message" + signed-data (create-signature private-key message)] + (verify-signature public-key message signed-data)))))) (is (true? - (bb nil '(do (import - '[java.security KeyPairGenerator] - '[java.security.spec ECGenParameterSpec]) + (bb nil '(do (import + '[java.security KeyPairGenerator] + '[java.security.spec ECGenParameterSpec]) - (def keypair-algo "EC") - (def keypair-curve "secp256r1") + (def keypair-algo "EC") + (def keypair-curve "secp256r1") - (defn keypair - "Generates a new key pair with the given alias, using the keypair-algo and keypair-curve" - [] - (let [keygen (KeyPairGenerator/getInstance keypair-algo)] - (.initialize keygen (ECGenParameterSpec. keypair-curve)) - (.generateKeyPair keygen))) + (defn keypair + "Generates a new key pair with the given alias, using the keypair-algo and keypair-curve" + [] + (let [keygen (KeyPairGenerator/getInstance keypair-algo)] + (.initialize keygen (ECGenParameterSpec. keypair-curve)) + (.generateKeyPair keygen))) - (let [kp (keypair) - pk (.getPublic kp)] - (bytes? (.getEncoded pk)))))))) + (let [kp (keypair) + pk (.getPublic kp)] + (bytes? (.getEncoded pk)))))))) + +;; RT iter test +(deftest clojure-RT-iter-test + (is (= (iterator-seq (.iterator [1 2 3])) + (bb nil '(do (ns test + (:import [clojure.lang RT])) + (iterator-seq (clojure.lang.RT/iter [1 2 3])))))))